我想将音频文件(.wav 或 .au 格式)与视频文件(.mp4 格式)合并。
请建议我如何实现这一目标。我想将这些文件合并到新的 .mp4 视频文件中。非常欢迎 ffmpeg 命令。
Pat*_*rgi 472
请参阅此示例,取自此博客条目,但已针对更新的语法进行了更新。它应该有以下效果:
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac output.mp4
Run Code Online (Sandbox Code Playgroud)
在这里,我们假设视频文件不包含任何音频流,并且您希望具有与输入格式相同的输出格式(此处为 MP4)。
上述命令对音频进行转码,因为 MP4 无法携带 PCM 音频流。如果需要,您可以使用任何其他所需的音频编解码器。有关更多信息,请参阅FFmpeg Wiki:AAC 编码指南。
如果您的音频或视频流较长,您可以添加该-shortest
选项,以便 ffmpeg 在一个文件结束后停止编码。
如果你的输出容器可以处理(几乎)任何编解码器——比如 MKV——那么你可以简单地复制音频和视频流:
ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv
Run Code Online (Sandbox Code Playgroud)
如果您的输入视频已经包含音频,并且您想替换它,则需要告诉 ffmpeg 要采用哪个音频流:
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4
Run Code Online (Sandbox Code Playgroud)
该-map
选项使 ffmpeg 仅使用来自第一个输入的第一个视频流和来自第二个输入的第一个音频流作为输出文件。
小智 22
由于我不允许以我的声誉对第一个答案写评论,这里是一个附录,因为我在编码 webms 时遇到了这个问题。
例如,如果您的音频流比视频流长,则必须剪切它,否则最后一个视频帧将作为静止图像和音频运行。
要剪切任一流,您可以在每个 -i "file.ext" 之前使用 -ss [hh:mm:ss] -t [ss]。
-ss [...] 将定义切割的起点
-t [...] 将定义段的长度(以秒为单位)
示例:
ffmpeg.exe -ss 00:00:10 -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4
Run Code Online (Sandbox Code Playgroud)
小智 11
打开命令提示符 ( windows+ R-> Cmd+ Enter)。然后转到您拥有音频和视频文件的文件夹内。应用此命令:
ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4
Run Code Online (Sandbox Code Playgroud)
您将获得一个名为outPutFile.mp4
(音频和视频的合并文件)的新文件
小智 8
这对我有用:
ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
Run Code Online (Sandbox Code Playgroud)