فهرست منبع

Merge pull request #9249 from jmshrv/fix-m4a-moov

Specify required movflags when encoding M4A audio
Claus Vium 2 سال پیش
والد
کامیت
64263920cb
2فایلهای تغییر یافته به همراه18 افزوده شده و 0 حذف شده
  1. 1 0
      CONTRIBUTORS.md
  2. 17 0
      MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs

+ 1 - 0
CONTRIBUTORS.md

@@ -58,6 +58,7 @@
  - [HelloWorld017](https://github.com/HelloWorld017)
  - [ikomhoog](https://github.com/ikomhoog)
  - [jftuga](https://github.com/jftuga)
+ - [jmshrv](https://github.com/jmshrv)
  - [joern-h](https://github.com/joern-h)
  - [joshuaboniface](https://github.com/joshuaboniface)
  - [JustAMan](https://github.com/JustAMan)

+ 17 - 0
MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs

@@ -61,6 +61,16 @@ namespace MediaBrowser.Controller.MediaEncoding
             "Main10"
         };
 
+        private static readonly HashSet<string> _mp4ContainerNames = new(StringComparer.OrdinalIgnoreCase)
+        {
+            "mp4",
+            "m4a",
+            "m4p",
+            "m4b",
+            "m4r",
+            "m4v",
+        };
+
         public EncodingHelper(
             IApplicationPaths appPaths,
             IMediaEncoder mediaEncoder,
@@ -5786,6 +5796,13 @@ namespace MediaBrowser.Controller.MediaEncoding
                 }
             }
 
+            // Copy the movflags from GetProgressiveVideoFullCommandLine
+            // See #9248 and the associated PR for why this is needed
+            if (_mp4ContainerNames.Contains(state.OutputContainer))
+            {
+                audioTranscodeParams.Add("-movflags empty_moov+delay_moov");
+            }
+
             var threads = GetNumberOfThreads(state, encodingOptions, null);
 
             var inputModifier = GetInputModifier(state, encodingOptions, null);