ffmpeg - 向视频添加 3 个音频流
ffmpeg - add 3 audio streams to video
我有以下问题。
文件夹中有 video.mp4 文件(包含 1 个音频流)。还有 3 个不同的文件 audio1.wav、audio2.wav、audio3.wav。我需要将这些文件 'attach' 作为视频文件的多流 - 因此用户可以在 VLC 播放器或类似播放器中选择音频语言。结果必须是一个音频 - 不要将它们混合在一起。
现在,我已经通过 Premiere Pro 使用多轨(quicktime 导出到 mov)完成了它,然后我 运行 一个脚本来更改音频流名称以与音频语言 (iso 639-2) 相对应) 并输出 mp4 文件。一切正常,但我想知道是否有简单的方法可以通过 ffmpeg(.bat 脚本)完成所有操作。我有一个用于替换视频中音频的工作脚本,但我需要向视频文件添加一些额外的 .wav 作为单独的音轨。
任何帮助将不胜感激!
要将新音轨添加到现有的带音频视频中,请使用
指定所有输入文件(原始视频和附加音频)的-i
参数
手动 select 每个输入的轨道的 -map
选项 (https://trac.ffmpeg.org/wiki/Map)
在你的情况下,
-map 0
从输入#0(视频)复制所有流
-map 1:a
包括来自输入#1 文件 (audio1) 的所有音频流
-map 2:a
包括来自输入#2 文件 (audio2) 的所有音频流
等等
和
-shortest
将输出裁剪为最短的输入
和另外你可能想使用
-c:v copy
复制视频流而不重新编码。
所以,试试这个(为了便于阅读而拆分行)
ffmpeg -i video.mp4 -i input1.mp3 -i input2.mp3
-map 0 -map 1:a -map 2:a
-c:v copy -shortest
output.mp4
并(添加到您的评论中)为音轨添加元数据
ffmpeg -i video.mp4 -i input1.mp3 -i input2.mp3
map 0 -map 1:a -map 2:a
-metadata:s:a:0 language=eng
-metadata:s:a:1 language=ger
-metadata:s:a:2 language=fra
-disposition:a:0 default
-c:v copy -shortest
output.mp4
我有以下问题。
文件夹中有 video.mp4 文件(包含 1 个音频流)。还有 3 个不同的文件 audio1.wav、audio2.wav、audio3.wav。我需要将这些文件 'attach' 作为视频文件的多流 - 因此用户可以在 VLC 播放器或类似播放器中选择音频语言。结果必须是一个音频 - 不要将它们混合在一起。
现在,我已经通过 Premiere Pro 使用多轨(quicktime 导出到 mov)完成了它,然后我 运行 一个脚本来更改音频流名称以与音频语言 (iso 639-2) 相对应) 并输出 mp4 文件。一切正常,但我想知道是否有简单的方法可以通过 ffmpeg(.bat 脚本)完成所有操作。我有一个用于替换视频中音频的工作脚本,但我需要向视频文件添加一些额外的 .wav 作为单独的音轨。 任何帮助将不胜感激!
要将新音轨添加到现有的带音频视频中,请使用
指定所有输入文件(原始视频和附加音频)的-i
参数
手动 select 每个输入的轨道的 -map
选项 (https://trac.ffmpeg.org/wiki/Map)
在你的情况下,
-map 0
从输入#0(视频)复制所有流
-map 1:a
包括来自输入#1 文件 (audio1) 的所有音频流
-map 2:a
包括来自输入#2 文件 (audio2) 的所有音频流
等等
和
-shortest
将输出裁剪为最短的输入
和另外你可能想使用
-c:v copy
复制视频流而不重新编码。
所以,试试这个(为了便于阅读而拆分行)
ffmpeg -i video.mp4 -i input1.mp3 -i input2.mp3
-map 0 -map 1:a -map 2:a
-c:v copy -shortest
output.mp4
并(添加到您的评论中)为音轨添加元数据
ffmpeg -i video.mp4 -i input1.mp3 -i input2.mp3
map 0 -map 1:a -map 2:a
-metadata:s:a:0 language=eng
-metadata:s:a:1 language=ger
-metadata:s:a:2 language=fra
-disposition:a:0 default
-c:v copy -shortest
output.mp4