用FFmpeg视频音频互转
广告
{{v.name}}
从 MP4 视频中提取并直接保存为 MP3,代码如下
$ ffmpeg -i input.mp4 -ss 00:01:30 -t 20 -vn -acodec libmp3lame -q:a 2 output.mp3
如果视频本身没有音频流,将视频和音频合并为新的视频,代码如下
$ ffmpeg -i video.mp4 -i audio.aac -c copy output.mkv
如果要保存到MP4容器,最好将音频流转为aac,否则有极大可能产生兼容性问题导致无法播放,代码如下
$ ffmpeg -i video.mp4 -i audio.mp3 -acodec aac -vcodec copy output.mp4
替换视频中的原有音轨,将视频和音频合并为新的视频,代码如下
$ ffmpeg -i video_with_audio.mp4 -i new_audio.mp3 -c:v copy -map 0:v:0 -map 1:a:0 output.mp4
当视频和音频的长度不一致时,FFmpeg 默认会以 -longest(最长)的流的时长为准,较短的流会在结束后静默或停留最后一帧。可以通过参数显式控制。
以最短的流的时长结束输出。例如,视频60秒,音频30秒,则输出视频时长30秒,代码如下
$ ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -shortest output.mp4
以最长的流的时长结束输出(默认)。例如,视频60秒,音频30秒,则输出视频时长60秒,代码如下
$ ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -longest output.mp4
可在每个 -i 前使用 -ss [起始时间] -t [持续时间] 参数,代码如下
$ ffmpeg -ss 00:00:10 -t 5 -i video.mp4 -ss 00:00:01 -t 5 -i audio.mp3 -c:v copy -c:a aac output.mp4
混合音频(保留原音并添加新音频),代码如下
$ ffmpeg -i video.mp4 -i bgm.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=2[aout]" -map 0:v -map "[aout]" -c:v copy -c:a aac output.mp4
友链