gpt4 book ai didi

ffmpeg - 如何在 FFmpeg 中为 mp4 文件禁用非第一音频流/音轨

转载 作者:行者123 更新时间:2023-12-04 19:11:40 30 4
gpt4 key购买 nike

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

这会生成一个如下所示的输出文件:
  • H264 视频轨道(启用)[从原始复制]
  • AAC 2 声道音轨(启用)
  • AC3 6 声道音轨(已启用)
  • DTS 6 声道音轨(已启用)[复制自原文]
  • 字幕轨(启用)

  • 问题是我需要它看起来像:
  • 1 H264 视频轨道(从原始复制)(启用)
  • 1 AAC 2 声道音轨(启用)
  • 1 AC3 6声道音轨 (已禁用)
  • 1 个 DTS 6 声道音轨(从原版复制) (已禁用)
  • 1 个字幕轨道(启用)

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

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

    任何帮助将不胜感激。

    最佳答案

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

    问题

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

    通用解决方案

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

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

    上述语句的结果标记了所有音频流 -default和第一个音频流到 default .

    关于它的使用细节可以在 FFmpeg Documentation 中找到。在 下5.4 主要选项 .

    具体解决方案
    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将输出文件中的所有音频流标记为 不是 默认。而 -disposition:a:0 default将输出文件中的第一个音频流标记为默认值。

    关于ffmpeg - 如何在 FFmpeg 中为 mp4 文件禁用非第一音频流/音轨,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14409194/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com