Browse Source

updated hls keyframes

Luke Pulverenti 12 years ago
parent
commit
c292fc56ea
1 changed files with 5 additions and 2 deletions
  1. 5 2
      MediaBrowser.Api/Playback/Hls/BaseHlsService.cs

+ 5 - 2
MediaBrowser.Api/Playback/Hls/BaseHlsService.cs

@@ -171,8 +171,10 @@ namespace MediaBrowser.Api.Playback.Hls
             segmentOutputPath = Path.Combine(segmentOutputPath, segmentOutputName + "%03d." + GetSegmentFileExtension(state).TrimStart('.'));
 
             var probeSize = Kernel.Instance.FFMpegManager.GetProbeSizeArgument(state.Item);
-            
-            return string.Format("{0} {1} -i {2}{3} -threads 0 {4} {5} {6} -force_key_frames expr:gte(t,n_forced*5) -f ssegment -segment_list_flags +live -segment_time 10 -segment_list \"{7}\" \"{8}\"",
+
+            const string keyFrameArg = " -force_key_frames expr:if(isnan(prev_forced_t),gte(t,0),gte(t,prev_forced_t+5))";
+
+            return string.Format("{0} {1} -i {2}{3} -threads 0 {4} {5} {6}{7} -f ssegment -segment_list_flags +live -segment_time 10 -segment_list \"{8}\" \"{9}\"",
                 probeSize,
                 GetFastSeekCommandLineParameter(state.Request),
                 GetInputArgument(state.Item, state.IsoMount),
@@ -180,6 +182,7 @@ namespace MediaBrowser.Api.Playback.Hls
                 GetMapArgs(state),
                 GetVideoArguments(state),
                 GetAudioArguments(state),
+                keyFrameArg,
                 outputPath,
                 segmentOutputPath
                 ).Trim();