FFMPEG用法整理

2018-01-26 18:00:00
admin
转贴
4371

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 lavf i -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



8.添加水印

ffmpeg -y -i style.ts -vf "movie=helloworld.png[wm];[in][wm]overlay=1:1[out]" output.avi(位于左上角)
ffmpeg -y -i style.ts -vf "movie=helloworld.png[wm];[in][wm]overlay=main_w-overlay_w-10:10[out]" output.avi(位于右上角)
ffmpeg -y -i style.ts -vf "movie=helloworld.png[wm];[in][wm]overlay=10:main_h-overlay_h-10[out]" output.avi(左下角)
ffmpeg -y -i style.ts -vf "movie=helloworld.png[wm];[in][wm]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out]" output.avi(右下角)

发表评论
评论通过审核后显示。
文章分类
联系我们
联系人: 北极星通公司
电话: 010-56545416
传真: 010-82896426
Email: support@bjsin.cn
QQ: 35338585
微信: Aoku2017 | QQ群:241759321
地址: 北京市中关村生命科学园创意园3-3-103