FFmpeg 常用命令

FFmpeg 是一个处理视频和音频内容的开源工具库,可以实现编码、解码、转码、流媒体和后处理等服务。

转换格式

转换为 MP4 格式:

ffmpeg -i input.mov output.mp4

-i 输入文件

指定规格参数:

ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 18 -c:a aac -b:a 128k -pix_fmt yuv420p output.mp4

视频剪切

裁剪前 10 秒:

ffmpeg -ss 0:0 -t 0:10 -i input.mov output.mp4

-ss 开始时间
-t 持续时间

裁剪最后 10 秒:

ffmpeg -sseof -0:10 -i input.mov output.mp4

-sseof 相对于文件末尾的开始时间

裁剪尺寸

将原视频缩小一半,并裁剪画面正中的正方形区域:

ffmpeg -i input.mov -vf scale=iw/2:-1,crop=ih output.mp4

scale=width:height iw/ih 表示输入宽度/高度 -1 表示按输入尺寸等比自动计算
crop=width:height:x:y x:y 指定裁剪的左上角位置,默认值为 (in_w-out_w)/2(in_h-out_h)/2,即输出视频为原视频的中央区域

加速/减速视频

ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" output.mp4

setpts=0.5*PTS 中的 0.5 是视频速度放慢一半
atempo=2 中的 2 是相对应的音频速度(=1/视频速度)

提取视音频

提取视频:

ffmpeg -i input.mov -vcodec copy -an output.mp4

-vcodec copy 复制视频编码
-an 禁止音频输出

提取音频:

ffmpeg -i input.mov -write_xing 0 output.mp3

-write_xing 0 #2697: MP3 output duration incorrect in OS X

音频淡入/淡出

时长为 20 秒的视频,前 3 秒淡入,最后 3 秒淡出:

ffmpeg -i input.mov -af afade=t=in:st=0:d=3,afade=t=out:st=13:d=3 output.mp4

视频 GIF 转换

视频转 GIF:

ffmpeg -i input.mov -r 10 output.gif

-r fps 帧率

GIF 转视频:

ffmpeg -f gif -i input.gif output.mp4

-f gif 强制输入文件识别为 GIF 格式

视频截图

每秒输出一张图:

ffmpeg -i input.mov -vf fps=1 -q:v 2 output%03d.png

输出第 10 秒的截图:

ffmpeg -i input.mov -ss 00:00:10 -vframes 1 output.jpg

每秒截图,大小为原视频的一半,输出一张 10x3 的网格图:

ffmpeg -y -i input.mp4 -vf "fps=1,scale=iw/2:-1,tile=10x3" -an output.jpg