简介
FFmpeg 是一个开放源代码的自由软件,可以执行音频和视频多种格式的录影、转换、串流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。
说白了就是可以通过命令行方便地对视频文件和音频文件转码,这个软件功能强大,支持大量的格式互转。本文主要用于记录常用的ffmpeg,方便查阅使用。
视频格式处理常用命令
横向合并视频
ffmpeg -i input1.mp4 -i input2.mp4 -lavfi hstack output.mp4
上面的命令虽然可以合并视频,两个视频可以正常播放,但是只保留了前面一个的音频。
下面会介绍怎么避开这个坑。
注意这时候input1和input2必须同样的高度,如果不一样的高度可以使用-shortest参数来保证同样的高度。
如果希望合并多个视频,可以使用下面命令行。
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -lavfi hstack=inputs=3 output.mp4
其中input=3表示希望合并的视频的个数
纵向合并视频
ffmpeg -i input1.mp4 -i input2.mp4 -lavfi vstack output.mp4
网格合并视频
当多个视频时,还可以合并成网格状,比如2x2,3x3这种。但是视频个数不一定需要是偶数,如果是奇数,可以用黑色图片来占位。
ffmpeg -f lavfi -i color=c=black:s=1280x720 -vframes 1 black.png
该命令将创建一张1280*720的图片
然后就可以使用下面这个命令来合并成网格视频了,如果只有三个视频,可以选择上面创建的黑色图片替代。
**ffmpeg -i top_left.mp4 -i top_right.mp4 -i bottom_left.mp4 -i bottom_right.mp4
****-lavfi “[0:v][1:v]hstack[top];[2:v][3:v]hstack[bottom];[top][bottom]vstack”
**-shortest 2by2grid.mp4
上面创建的是正规的2x2网格视频。想象一下,现在只有三个视频,我想把第一个视频摆放在第一行的中间,然后把第二、三个视频摆放在第二行。那么就可以使用下面两个命令了。
ffmpeg -f lavfi -i color=c=black:s=640x720 -vframes 1 black.png
**ffmpeg -i black.png -i top_center.mp4 -i bottom_left.mp4 -i bottom_right.mp4
****-lavfi “[0:v][1:v][0:v]hstack=inputs=3[top];[2:v][3:v]hstack[bottom];[top][bottom]vstack”
**-shortest 3_videos_2x2_grid.mp4
合并音频和视频(复制视频流和音频流到out.mp4)
ffmpeg -i video.m4s -i audio.m4s -c:v copy -c:a copy -strict experimental output.flv
如果视频中已经包含了音频,这个时候还可以替换视频中的音频,使用下面命令行。
**ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental
**-map 0✌️0 -map 1🅰️0 output.mp4
合并两个音频
ffmpeg -i input1.mp3 -i input2.mp3 -filter_complex amerge -ac 2 -c:a libmp3lame -q:a 4 output.mp3
获取视频中的音频
ffmpeg -i input.mp4 -vn -y -acodec copy output.m4a
去掉视频中的音频
ffmpeg -i input.mp4 -an output.mp4
音频格式处理常用命令
ffmpeg -i audio.m4s output.mp3
//to flac
ffmpeg -i audio.m4s -acodec flac output.flac
//to ogg & 设置采样率 320k
ffmpeg -i audio.m4s -ab 320k output.ogg
注意 Safari不支持ogg
ffmpeg -i audio.m4s -ab 320k output.mp3
//flv转flac
ffmpeg -i input.flv -vn -y -acodec flac output.flac
//flv转mp3
ffmpeg -i input.flv -ab 320k output.mp3
//flac转mp3
ffmpeg -i input.flac -ab 320k output.mp3
//H.265 TO H.264
ffmpeg -i input.mp4 -map 0 -c:a copy -c:s copy -c:v libx264 output.mp4