【问题标题】:How to disable non-1st Audio Streams/Tracks in FFmpeg for mp4 files如何在 FFmpeg 中为 mp4 文件禁用非第一音频流/音轨
【发布时间】:2013-01-18 23:17:58
【问题描述】:

我的最终目标是创建一个 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

这会生成一个如下所示的输出文件:

  1. H264 视频轨道(已启用)[从原文复制]
  2. AAC 2 声道音轨(已启用)
  3. AC3 6 声道音轨(已启用)
  4. DTS 6 声道音轨(已启用)[从原文复制]
  5. 字幕轨道(已启用)

问题是我需要它看起来像:

  1. 1 H264 视频轨道(从原始复制)(启用)
  2. 1 AAC 2 声道音轨(已启用)
  3. 1 AC3 6 声道音轨(已禁用)
  4. 1 个 DTS 6 声道音轨(从原版复制)(已禁用)
  5. 1 个字幕轨道(已启用)

因此我需要知道如何禁用非第一音频流/音轨。

根据我的阅读,这是位于“tkhd.flags”位置的轨道头原子的一部分。但我一直无法弄清楚如何通过命令行参数进行设置。

任何帮助将不胜感激。

【问题讨论】:

    标签: ffmpeg apple-tv


    【解决方案1】:

    您好 Dipesh,这将解决您的问题。

    问题

    您想要完成的是标记哪个音频流将是默认的,同时在所有不需要的音频流上否定此标记。当尝试选择哪个(如果有)字幕轨道将是默认的和/或可能强制的时,此解决方案将类似。

    通用解决方案

    FFmpeg 将自动将 所有 流标记为 default,无需用户干预。因此,我们首先需要标记所有流-default,然后标记default 作为默认值。让我们以音频流为例。

    -disposition:a -default -disposition:a:0 default
    

    上述语句的结果将所有音频流标记为-default,并将第一个音频流标记为default

    有关其使用的详细信息,请参阅 5.4 主要选项 下的FFmpeg Documentation

    具体解决方案

    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
    

    在解决方案中,-disposition:a -default 将输出文件中的所有音频流标记为 not 默认值。而-disposition:a:0 default 将输出文件中的第一个音频流标记为默认值。

    【讨论】:

      【解决方案2】:

      您检查了吗: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
      

      希望我的问题没弄错!

      【讨论】:

      • 我想你误解了,我需要上面列出的所有输出流,但是禁用了一些音频流。在 mp4 容器中,可能的流标头之一是“禁用”的。禁用的流仍然可以播放,但是默认情况下播放器不会播放它,它需要用户切换到该流。此流的一个示例用途是流中的不同语言音轨。就我而言,我正在使用此功能来获得多个高质量的音频流。
      • 播放器默认播放哪个音频流?它不选择第一个吗?那么,这不是你想要的吗?
      【解决方案3】:

      禁用音轨并不意味着完全删除它。

      看图

      【讨论】:

      • 图片应该显示什么(因为它是俄语),这如何回答这个问题?
      猜你喜欢
      • 2021-06-08
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 2016-07-26
      • 2020-02-18
      相关资源
      最近更新 更多