Quellcode durchsuchen

support additional encoding switches

Luke Pulverenti vor 8 Jahren
Ursprung
Commit
92eeee0fc5

+ 4 - 8
MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs

@@ -879,7 +879,7 @@ namespace MediaBrowser.Api.Playback.Hls
                 // Add resolution params, if specified
                 if (!hasGraphicalSubs)
                 {
-                    args += EncodingHelper.GetOutputSizeParam(state, codec, EnableCopyTs(state));
+                    args += EncodingHelper.GetOutputSizeParam(state, codec, true);
                 }
 
                 // This is for internal graphical subs
@@ -891,7 +891,7 @@ namespace MediaBrowser.Api.Playback.Hls
                 //args += " -flags -global_header";
             }
 
-            if (EnableCopyTs(state) && args.IndexOf("-copyts", StringComparison.OrdinalIgnoreCase) == -1)
+            if (args.IndexOf("-copyts", StringComparison.OrdinalIgnoreCase) == -1)
             {
                 args += " -copyts";
             }
@@ -901,13 +901,9 @@ namespace MediaBrowser.Api.Playback.Hls
                 args += " -vsync " + state.OutputVideoSync;
             }
 
-            return args;
-        }
+            args += EncodingHelper.GetOutputFFlags(state);
 
-        private bool EnableCopyTs(StreamState state)
-        {
-            //return state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream && state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Encode;
-            return true;
+            return args;
         }
 
         protected override string GetCommandLineArguments(string outputPath, StreamState state, bool isEncoding)

+ 2 - 0
MediaBrowser.Api/Playback/Hls/VideoHlsService.cs

@@ -124,6 +124,8 @@ namespace MediaBrowser.Api.Playback.Hls
                 args += " -vsync " + state.OutputVideoSync;
             }
 
+            args += EncodingHelper.GetOutputFFlags(state);
+
             return args;
         }
 

+ 34 - 3
MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs

@@ -1306,7 +1306,8 @@ namespace MediaBrowser.Controller.MediaEncoding
                 filters.Add("format=nv12|vaapi");
                 filters.Add("hwupload");
             }
-            else if (state.DeInterlace && !string.Equals(outputVideoCodec, "h264_vaapi", StringComparison.OrdinalIgnoreCase))
+
+            if (state.DeInterlace && !string.Equals(outputVideoCodec, "h264_vaapi", StringComparison.OrdinalIgnoreCase))
             {
                 filters.Add("yadif=0:-1:0");
             }
@@ -1533,14 +1534,26 @@ namespace MediaBrowser.Controller.MediaEncoding
             }
 
             var flags = new List<string>();
-            if (state.IgnoreDts)
+            if (state.IgnoreInputDts)
             {
                 flags.Add("+igndts");
             }
-            if (state.IgnoreIndex)
+            if (state.IgnoreInputIndex)
             {
                 flags.Add("+ignidx");
             }
+            if (state.GenPtsInput)
+            {
+                flags.Add("+genpts");
+            }
+            if (state.DiscardCorruptFramesInput)
+            {
+                flags.Add("+discardcorrupt");
+            }
+            if (state.EnableFastSeekInput)
+            {
+                flags.Add("+fastseek");
+            }
 
             if (flags.Count > 0)
             {
@@ -1864,6 +1877,22 @@ namespace MediaBrowser.Controller.MediaEncoding
                 ).Trim();
         }
 
+        public string GetOutputFFlags(EncodingJobInfo state)
+        {
+            var flags = new List<string>();
+            if (state.GenPtsOutput)
+            {
+                flags.Add("+genpts");
+            }
+
+            if (flags.Count > 0)
+            {
+                return " -fflags " + string.Join("", flags.ToArray());
+            }
+
+            return string.Empty;
+        }
+
         public string GetProgressiveVideoArguments(EncodingJobInfo state, EncodingOptions encodingOptions, string videoCodec, string defaultH264Preset)
         {
             var args = "-codec:v:0 " + videoCodec;
@@ -1943,6 +1972,8 @@ namespace MediaBrowser.Controller.MediaEncoding
                 args += " -vsync " + state.OutputVideoSync;
             }
 
+            args += GetOutputFFlags(state);
+
             return args;
         }
 

+ 42 - 4
MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs

@@ -39,14 +39,52 @@ namespace MediaBrowser.Controller.MediaEncoding
 
         public bool ReadInputAtNativeFramerate { get; set; }
 
-        public bool IgnoreDts
+        public bool IgnoreInputDts
         {
-            get { return MediaSource.IgnoreDts; }
+            get
+            {
+                return MediaSource.IgnoreDts;
+            }
+        }
+
+        public bool IgnoreInputIndex
+        {
+            get
+            {
+                return MediaSource.IgnoreIndex;
+            }
+        }
+
+        public bool GenPtsInput
+        {
+            get
+            {
+                return false;
+            }
         }
 
-        public bool IgnoreIndex
+        public bool DiscardCorruptFramesInput
         {
-            get { return MediaSource.IgnoreIndex; }
+            get
+            {
+                return false;
+            }
+        }
+
+        public bool EnableFastSeekInput
+        {
+            get
+            {
+                return false;
+            }
+        }
+
+        public bool GenPtsOutput
+        {
+            get
+            {
+                return false;
+            }
         }
 
         public string OutputContainer { get; set; }