我正在尝试运行 ffmpeg 命令将音频文件与有声音的视频合并。我使用的命令会降低音频文件的音量,因为它是音乐,而视频有音频。
我遇到一个问题,当视频声音结束时音频文件就会被切断,而不是继续播放直到视频结束。
/usr/local/bin/ffmpeg \
-i thepath/input.mp4 \
-i musicpath/music.mp3 \
-filter_complex \
"[1:a]volume=-21dB,apad[A]; \
[0:a][A]amerge[out]" \
-c:v libx264 -c:a aac -map 0:v -map "[out]" \
-preset ultrafast -threads 0 -profile:v baseline \
-ac 2 -pix_fmt yuv420p -t 30 -y thepath/output.mp4 2>&1
我很困惑为什么它不能按预期工作?
答案1
amerge
以最短的输入流终止,这里是视频的音频,并且不会跨越到视频流的末尾。
添加apad
视频的音频并添加-shortest
为输出选项。
完整命令如下
/usr/local/bin/ffmpeg \
-i thepath/input.mp4 \
-i musicpath/music.mp3 \
-filter_complex \
"[0:a]apad[main]; \
[1:a]volume=-21dB,apad[A]; \
[main][A]amerge[out]" \
-c:v libx264 -c:a aac -map 0:v -map "[out]" \
-preset ultrafast -threads 0 -profile:v baseline \
-ac 2 -pix_fmt yuv420p -t 30 -shortest -y thepath/output.mp4 2>&1