我有以下问题。
该文件夹中有 video.mp4 文件(包含 1 个音频流)。还有3个不同的文件audio1.wav、audio2.wav、audio3.wav。我需要将这些文件作为多流“附加”到视频文件 - 这样用户就可以在 VLC 播放器或类似播放器中选择音频语言。结果必须是当时的一种音频 - 不能将它们混合在一起。
现在,我已经通过带有多轨功能的 Premiere Pro(快速导出到 mov)完成了此操作,然后运行脚本来更改音频流名称以与音频语言 (iso 639-2 ) 相对应并输出 mp4 文件。一切正常,但我想知道是否有简单的方法可以通过 ffmpeg (.bat 脚本)完成所有操作。我有一个用于替换视频中音频的工作脚本,但我需要向视频文件中添加一些额外的 .wav 作为单独的音轨。任何帮助将不胜感激!
要将新音轨添加到现有的带音频视频中,请使用
-i指定所有输入文件的参数(原始视频和附加音频)
-map手动选择每个输入的轨道的选项(https://trac.ffmpeg.org/wiki/Map)
在您的情况下,
-map 0复制输入#0(视频)中的所有流,
-map 1:a以包括输入#1文件(音频1)中的所有音频流,
-map 2:a以包括输入#2文件(音频2)中的所有音频流,
依此类推
和
-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
Run Code Online (Sandbox Code Playgroud)
以及(添加到您的评论中)添加音轨的元数据
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
Run Code Online (Sandbox Code Playgroud)