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
音频淡入/淡出
时长为 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