使用FFmpeg混流MP4和MP3
1. 裁剪为最短时长
ffmpeg -i input_video.mp4 -i input_audio.mp3 -c:v copy -c:a aac -shortest output.mp4
作用: 以音频和视频中较短的一方为输出时长
适用场景: 快速截断多余内容
2. 强制指定输出时长
# 获取视频时长(示例) video_duration=$(ffprobe -i input_video.mp4 -show_entries format=duration -v quiet | grep "duration" | cut -d "=" -f 2) # 裁剪音频并混流 ffmpeg -i input_audio.mp3 -t $video_duration audio_cut.mp3 ffmpeg -i input_video.mp4 -i audio_cut.mp3 -c:v copy -c:a aac output.mp4
提示:可用
ffprobe
精确获取时长3. 时间戳对齐
ffmpeg -i input_video.mp4 -itsoffset 2 -i input_audio.mp3 -c:v copy -c:a aac -async 1 output.mp4
-itsoffset 2: 延迟音频2秒
-async 1: 自动修正时间戳
4. 动态拉伸音频
# 计算拉伸比例(视频60秒/音频50秒) speed=$(echo "60/50" | bc -l) ffmpeg -i input_audio.mp3 -filter:a "atempo=$speed" audio_stretched.mp3
注意:拉伸会改变音调,建议测试后再混流
5. 静音填充或循环音频
# 生成静音填充音频 ffmpeg -f lavfi -i anullsrc=r=44100:cl=stereo -t 60 silence.mp3 # 合并原始音频与静音 ffmpeg -i "concat:input_audio.mp3|silence.mp3" -c copy audio_padded.mp3
转载请注明出处。