我有一个项目需要将视频文件与另一个音频文件合并。预期输出是一个视频文件,它将包含来自实际视频的音频和合并的音频文件。输出视频文件的长度将与实际视频文件的大小相同。
是否有单行FFMPEG命令使用copy和-map参数实现此目的?
我将使用的视频格式是flv或mp4 音频文件格式为mp3
答案 0 :(得分:39)
也可以在不使用地图的情况下实现。
ffmpeg -i video.mp4 -i audio.mp3 output.mp4
如果您想让output.mp4在其中一个输入停止后立即停止(音频/视频) 然后使用
-shortest
例如:ffmpeg -i video.mp4 -i audio.mp3 -shortest output.mp4
这将确保输出在任何一个输入完成时停止。
因为您已经要求使用地图进行此操作。这是你如何做到的:
ffmpeg -i video.mp4 -i audio.mp3 -map 0:0 -map 1:0 -shortest output.mp4
现在,由于您要保留视频文件的音频,请考虑合并audio.mp3
和video.mp4
。这些是步骤:
ffmpeg -i video.mp4 1.mp3
ffmpeg -i audio.mp3 -i 1.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 audiofinal.mp3
ffmpeg -i video.mp4 -an videofinal.mp4
ffmpeg -i videofinal.mp4 -i audiofinal.mp3 -shortest final.mp4
注意:在最新版本的ffmpeg中,它只会提示您使用' -strict -2'万一它然后使用这个:
ffmpeg -i videofinal.mp4 -i audiofinal.mp3 -shortest -strict -2 final.mp4
希望这会有所帮助。
答案 1 :(得分:10)
**
**
ffmpeg.exe -i video.mp4 a.mp3
ffmpeg.exe -i audio.mp3 -i a.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 audiofinal.mp3
ffmpeg.exe -i video.mp4 -i audio.mp3 -map 0:v -map 1:a -c copy -y output.mp4
答案 2 :(得分:2)
用例:
<强>假设强>
步骤:
1)从视频中提取音频
ffmpeg -i test.mp4 1.mp3
test.mp4 - 您的文件
2)合并audio.mp3和1.mp3
ffmpeg -i audio.mp3 -i 1.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 audiofinal.mp3
audiofinal.mp3 - 带音乐的音频
3)删除原始
中的音频ffmpeg -i example.mkv -c copy -an example-nosound.mkv
example-nosound.mkv - 没有音频的视频
4)合并适当的音频
ffmpeg -i audiofinal.mp3 -i example-nosound.wmv -c:v copy -vcodec copy final.wmv
final.wmv - 您完美的视频。
答案 3 :(得分:2)
我认为没有必要从视频中提取音频。我们可以只使用foo?.()
合并两个音频:
-filter_complex amix
ffmpeg -i videowithaudio.mp4 -i audiotooverlay.mp3 -filter_complex amix -map 0:v -map 0:a -map 1:a -shortest videowithbothaudios.mp4
将第一个输入文件中的音频叠加在第二个输入文件中的音频之上。
-filter_complex amix
第一个输入文件的视频流。
-map 0:v
第一个输入文件的音频流。
-map 0:a
音频流。
-map 1:a
输出的长度是最短输入的长度
答案 4 :(得分:-1)
使用FFmpeg:
非常容易ffmpeg -i vid.mp4 -i audio.mp3 -codec:a libmp3lame -ar 44100 -ab 64k -ac 1 -q:v 1 -pix_fmt yuv420p -map 0:0 -map 1:0
答案 5 :(得分:-1)
如果您无法使用此命令合并视频和音频,请首先从视频中删除声音: ffmpeg -i video.mp4 -an videofinal.mp4