如何使用 CLI 工具将不带音频的 MP4 视频与 MP3 文件合并(考虑偏移量)

如何使用 CLI 工具将不带音频的 MP4 视频与 MP3 文件合并(考虑偏移量)

我有一个难题,希望借助您的专业知识来解决。我有一个没有音频的 MP4 视频文件和一个单独的 MP3 音频文件,我希望将其与视频同步并合并。复杂之处在于音频和视频目前不同步。通过手动分析,我确定音频文件中的特定时刻(2:13:29)对应于视频中的特定时刻(2:09:17)。我希望以这样一种方式合并文件:视频的前 4 分 12 秒将保持黑色,只有音频。

有人能指导我如何在 Ubuntu 上将这两个文件合并为一个带有同步音频的视频文件吗?任何可以简化此任务的命令行实用程序都将不胜感激。

我试过:

ffmpeg -i only_video.mp4 -itsoffset 252 -i only_audio.mp3 -c:v copy -c:a aac final_video_with_audio.mp4

但不幸的是,我没有得到前 252 秒的音频(屏幕空白)......

提前感谢您的帮助!

答案1

以下是我建议解决此问题的方法:

  1. 首先,制作一段时长为252秒的无声视频。
  2. 然后,重新编码现有视频文件以匹配无声视频的格式。
  3. 合并两个视频以确保视频文件的时长与音频文件的时长相匹配。
  4. 将音轨添加到合并的视频文件中。

你需要ffmpeg,你似乎已经拥有了,并且mkvtoolnix,可以使用以下命令进行安装:

sudo apt-get install mkvtoolnix

要创建无声视频:

ffmpeg -f lavfi -i color=c=black:s=1280x720:r=30:d=252 -f lavfi -i anullsrc=r=44100:cl=stereo -c:v libx264 -t 252 -pix_fmt yuv420p -c:a aac -b:a 128k -strict experimental 'silent_video.mp4'

要以与静音视频相同的格式重新编码主视频文件(如果您的视频文件很大,则可能需要相当长的时间):

ffmpeg -i 'only_video.mp4' -c:v libx264 -c:a aac -strict experimental -b:a 128k 'only_video_converted.mp4'

要将两个无声视频文件合并为一个(这就是我们需要安装mkvtoolnix合并是一款非常好用的视频合并工具):

mkvmerge -o 'combined_video.mkv' 'silent_video.mp4' + 'only_video_converted.mp4'

要将音轨添加到视频文件:

ffmpeg -i 'combined_video.mkv' -i 'only_audio.mp3' -c copy -map 0:v:0 -map 1:a:0 'final_video_with_audio.mkv'

您的带有同步音频且仅包含前 252 秒音频的视频已准备就绪!

我用 33 秒的视频和 49 秒的音频片段进行了测试,结果符合预期。但是,请注意,处理时间可能会随着视频文件的大小而显著增加。

相关内容