gpt4 book ai didi

FFMPEG 重新编码所有音频流,同时保留原件

转载 作者:行者123 更新时间:2023-12-04 22:46:40 25 4
gpt4 key购买 nike

作为自动化过程的一部分,我正在尝试将一组额外的音轨添加到一些视频文件中。我想保留所有原始音轨并拥有第二个重新编码的副本。

我一直在使用的是:

ffmpeg -i file
-map 0:v -codec:v copy
-map 0:a -codec:a copy
-map 0:a:0 -codec:a:0 aac -strict experimental ...(Bitrate, filters etc all with :a:0)
-map 0:s -codec:s copy
output file

但是我不知道如何更改它以处理具有多个音轨的输入文件,因为它只会转换第一个音轨。

如果我将编解码器行上的 :a:0 更改为 :a ,它会产生我需要的额外副本,但会覆盖原始副本的副本编解码器。

有什么想法吗?

最佳答案

有两种方法可以做到这一点。

首先使用单个命令,但可能会变长。想法是有条件地将音频流映射到文件可能具有的最大可能流。不优雅,但会完成工作。

ffmpeg -i in.mp4
-c copy
-map 0:v
-map 0:a:0? -c:a:0 copy
-map 0:a:0? -c:a:1 aac
-map 0:a:1? -c:a:2 copy
-map 0:a:1? -c:a:3 aac
-map 0:a:2? -c:a:4 copy
-map 0:a:2? -c:a:5 aac
-map 0:a:3? -c:a:6 copy
-map 0:a:3? -c:a:7 aac
out.mp4

第二种方法对所有音轨进行转码并将其通过管道传输到另一个 ffmpeg 执行以进行复制。使用这种方法,最终输出中的流顺序的灵 active 会降低。
ffmpeg -i in.mp4 -c:a aac -map 0:a -f nut - |
ffmpeg -i - -i in.mp4 -c copy -map 1 -map 0 out.mp4

关于FFMPEG 重新编码所有音频流,同时保留原件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43727447/

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