我的最终目标是创建一个FFmpeg命令,将我的h264.DTS.mkv文件转换为与AppleTV兼容的格式,同时保留原始质量。
我快到了,但是我还没弄清楚如何禁用流/音轨。
到目前为止,我已经:
ffmpeg -i FILE \
-y -strict experimental \
-map 0:0 -map 0:1 -map 0:1 -map 0:1 -map 0:2 \
-c:0 copy -c:1 aac -ac:a 2 -c:2 ac3 -ac:a 6 -c:3 copy -c:4 mov_text \
OUTPUT
Run Code Online (Sandbox Code Playgroud)
这将产生一个输出文件,如下所示:
问题是我需要它看起来像:
因此,我需要知道如何禁用非1st音频流/音轨。
据我了解,这是轨道标头原子在“ tkhd.flags”位置的一部分。但是我还不能弄清楚如何通过命令行参数设置它。
任何帮助将不胜感激。
你好迪佩什这会解决你的问题。
您想要完成的是标记哪个音频流将是默认的,同时在所有不需要的音频流上否定此标记。当尝试选择默认和/或可能强制的字幕轨道(如果有)时,该解决方案将是类似的。
FFmpeg 将自动标记所有流,default无需用户干预。因此,我们首先需要标记所有流-default,然后将default所需的流标记为默认流。让我们使用音频流作为示例。
-disposition:a -default -disposition:a:0 default
Run Code Online (Sandbox Code Playgroud)
上述语句的结果将所有音频流-default和第一个音频流标记为default。
有关其使用的详细信息可以在FFmpeg 文档中的5.4 Main options下
找到。
ffmpeg -i FILE \
-y -strict experimental \
-map 0:0 -map 0:1 -map 0:1 -map 0:1 -map 0:2 \
-c:0 copy -c:1 aac -ac:a 2 -c:2 ac3 -ac:a 6 -c:3 copy -c:4 mov_text \
-disposition:a -default -disposition:a:0 default \
OUTPUT
Run Code Online (Sandbox Code Playgroud)
在解决方案中,-disposition:a -default将输出文件中的所有音频流标记为非默认。While-disposition:a:0 default将输出文件中的第一个音频流标记为默认值。
您是否检查过:http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20use%20-map%20option 只是不要将不需要的流复制到输出。
ffmpeg -i FILE \
-y -strict experimental \
-map 0:0 -map 0:1 -map 0:4 \
-c:0 copy -c:1 aac -ac:a 2 -c:4 mov_text \
OUTPUT
Run Code Online (Sandbox Code Playgroud)
我希望我正确地回答了你的问题!
| 归档时间: |
|
| 查看次数: |
2600 次 |
| 最近记录: |