1.修改分辨率率
将输入为640*480的修改为320*249
ffmpeg -i input -vf scale=iw/2:-2 output
iw:输入帧宽,此处为640,640/2=320。
-1告诉scale filter保持纵横比,所以scale filter计算出值240.
2.改变音视频播放速度
1>视频2倍播放速度,音频两倍播放速度。
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
注意,此种方式会丢帧。可以通过改变输出帧率来避免丢帧。
ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25*PTS" -an output.mkv
2>视频0.5倍播放速度
ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS"
3>改变音频播放速度
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
atempo filter的取值范围是0.5-2.0.
音频4倍播放速度实现方式:
ffmepg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv
4>同步改变音视频
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv
注意:[v];[0:a]之间是分号!
3.filtergraph
命令行参数-vf 后面跟着的就是filtergraph描述
一个filtergraph后面可以跟着几个chains,每个chain可包含一个或多个filter
下面几个命令行的作用是相等的。
ffmpeg -i input -vf [in]scale=iw/2:-1[out] output
ffmpeg -i input -vf scale=iw/2:-1 output
同样:
ffmpeg -i input -vf [in]yadif=0:0:0[middle];[middle]scale=iw/2:-1[out] output #包含两个chains,每个chains含有一个filter,两个chains通过middle连接
ffmpeg -i input -vf [in]yadif=0:0:0,scale=iw/2:-1[out] output #1个chain,包含两个filter
ffmpeg -i input -vf yadif=0:0:0,scale=iw/2:-1 output
testsrc是ffmpeg提供的一段视频。
下面的命令的效果是:
ffmpeg -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -f lavfi -i testsrc -filter_complex
"[0:v]pad=iw*2:ih*2[a];
[1:v]negate[b];
[2:v]hflip[c];
[3:v]edgedetect[d];
[a][b]overlay=w[x];
[x][c]overlay=0:h[y];
[y][d]overlay=w:h[out]"
-map "[out]" -c:v ffv1 -t 5 multi.avi
4.hflip
作用是水平旋转画面:
例如:
ffmpeg -f lavfi -i testsrc -vf "hflip" output.avi
5.negate
对输入帧取反。黑的变白的等等。。。
6.edgedetect
ffmpeg -f lavfi -i testsrc -vf "edgedetect[d]" out.avi
作用如图:
7.选择选项
例如:只选择I帧进行处理
ffmpeg -i input -vf select='eq(pict_type\,PICT_TYPE_I)' output
ffmpeg -i input -vf select="yadif=0:-1:0,scale=iw/2:-1" output
先整理这么多,以后用到再补充。