aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs2
-rw-r--r--MediaBrowser.Api/Playback/Progressive/VideoService.cs18
2 files changed, 15 insertions, 5 deletions
diff --git a/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs b/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs
index efab3bbc6..1d725e673 100644
--- a/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs
+++ b/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs
@@ -81,7 +81,7 @@ namespace MediaBrowser.Api.Playback.Progressive
var bytesRead = fsPosition - position;
- //Logger.LogInfo("Streamed {0} bytes from file {1}", bytesRead, path);
+ Logger.Info("Streamed {0} bytes from file {1}", bytesRead, path);
if (bytesRead == 0)
{
diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
index 10455c028..cc1c5b1fc 100644
--- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Common.IO;
+using System.IO;
+using MediaBrowser.Common.IO;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
using System;
@@ -75,17 +76,25 @@ namespace MediaBrowser.Api.Playback.Progressive
}
var format = string.Empty;
+ var keyFrame = string.Empty;
- if (string.Equals("wmv2", videoCodec, StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(Path.GetExtension(outputPath), ".mp4", StringComparison.OrdinalIgnoreCase))
{
- format = " -f asf ";
+ format = " -f mp4 -movflags frag_keyframe+empty_moov";
+ var framerate = state.VideoRequest.Framerate ??
+ state.VideoStream.AverageFrameRate ?? state.VideoStream.RealFrameRate ?? 23.976;
+
+ framerate *= 2;
+
+ keyFrame = " -g " + Math.Round(framerate);
}
- return string.Format("{0} {1} -i {2}{3} -threads 0 {4} {5}{6} {7}{8} \"{9}\"",
+ return string.Format("{0} {1} -i {2}{3}{4} -threads 0 {5} {6}{7} {8}{9} \"{10}\"",
probeSize,
GetFastSeekCommandLineParameter(state.Request),
GetInputArgument(video, state.IsoMount),
GetSlowSeekCommandLineParameter(state.Request),
+ keyFrame,
GetMapArgs(state),
GetVideoArguments(state, videoCodec),
graphicalSubtitleParam,
@@ -131,6 +140,7 @@ namespace MediaBrowser.Api.Playback.Progressive
}
else if (IsH264(state.VideoStream))
{
+ // FFmpeg will fail to convert and give h264 bitstream malformated error if it isn't used when converting mp4 to transport stream.
args += " -bsf h264_mp4toannexb";
}