国外建设网站用的是什么软件,phpcms v9 实现网站搜索,新乡电子商务网站建设,域名推荐ffmpeg filter的理解 filter的简介
从整体看#xff0c;filte rgraph包含filter chain#xff0c;而filter chain又包含了filter#xff0c;所以可以分为是三个层次去理解。
filterfilter chainfilter graph
filter graph是链接多个filter的有向图。它可以包含循环#…ffmpeg filter的理解 filter的简介
从整体看filte rgraph包含filter chain而filter chain又包含了filter所以可以分为是三个层次去理解。
filterfilter chainfilter graph
filter graph是链接多个filter的有向图。它可以包含循环各个Filter之间也可以有多个链接。每个链接有一个input pad连接到一个filter并从那里获取输入有一个output pad连接到另一个filter提供输出。所有的Filter都是已经注册在程序中的。没有输入的filter叫source没有输出的filter叫sink。
每个Filtergraph都有对应的结构化的文本表示
对于命令ffmpeg来说有-filter, -vf, -af 和filter_complex这些选项对于命令ffplay来说有-vf, -af这些选项
filter chain是由一个或多个filter线性连接而成filter之间使用逗号,来分隔
filter graph是由一个或多个filter chain组成filter chain之间使用分号;来分隔 filter的语法
filter的语法格式为
[in_link_1]...[in_link_N]filter_nameidarguments[out_link_1]...[out_link_M]filter_name就是你所要使用的filter的名称后面的id是可选的基本没用到Filter的名称和参数前后是允许放置一个或多个链接标签link label: 别名 放在前面的链接标签in_link_1 … in_link_N被关联到Filter的input pad后面的out_link_1 … out_link_M被关联到Filter的output pad如果一个filter的output pad没被标记链接标签则它会被默认链接到后续的filter中第一个未标记链接标签的input pad arguments也是可选填的有些filter并不需要参数 arguments通常有如下格式 用:来分隔一系列值用:来分隔一系列的keyvalue的键值对用:来分隔一系列值之后跟着一系列的keyvalue的键值对值必须在键值对前面有时候value本身就是要填一系列参数值的那么需要用|来拼接 对于一个完整可用的filter chain来说所有匿名的链接标签必须有被链接。在处理filter graph过程中当遇到有格式转换的时候会自动插入scale这个filter所以在filter graph描述中的可能会隐式包含scale的地方前面需要加上要指定的缩放参数sws_flagsflags
如
nullsrc, split[L1], [L2]overlay, nullsink从所有filter里面找到nullsink
ffmpeg -filters | grep nullsink列出split的说明
$ ffmpeg -h filtersplit
Filter splitPass on the input to N video outputs.Inputs:#0: default (video)Outputs:dynamic (depending on the options)
split AVOptions:outputs int ..FVA...... set number of outputs (from 1 to INT_MAX) (default 2)
ffmpeg的命令行输出比较有限了解filter怎么用还是得从官网的文档里面学习 比如split的用法
Create two separate outputs from the same input:
[in] split [out0][out1]To create 3 or more outputs, you need to specify the number of outputs, like in:
[in] asplit3 [out0][out1][out2]视频合并淡入淡出效果 ffmpeg -i dog3.mp4 -i dog3.mp4 -i dog3.mp4 -i dog3.mp4 -i dog3.mp4 \
-filter_complex \
[0:v]setptsPTS-STARTPTS[v1]; \
[1:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(4/TB)[v2];
[2:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(8/TB)[v3];
[3:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(12/TB)[v4];
[4:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(16/TB)[v5];
[v1][v2]overlay[v12];
[v12][v3]overlay[v123];
[v123][v4]overlay[v1234];
[v1234][v5]overlay,formatyuv420p[v] \
-map [v] result.mp4
加上audio并且使用acrossfade
ffmpeg -i dog3.mp4 -i dog3.mp4 -i dog3.mp4 -i dog3.mp4 -i dog3.mp4 \
-filter_complex \
[0:v]setptsPTS-STARTPTS[v1]; \
[1:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(4/TB)[v2];
[2:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(8/TB)[v3];
[3:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(12/TB)[v4];
[4:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(16/TB)[v5];
[v1][v2]overlay[v12];
[v12][v3]overlay[v123];
[v123][v4]overlay[v1234];
[v1234][v5]overlay,formatyuv420p[v]; \
[1][2]acrossfaded1[a12];
[a12][3]acrossfaded1[a123];
[a123][4]acrossfaded1[a] \
-map [v] -map [a] result.mp4这里的audio直接用[1],[2],[3],[4]表示为了更直观点应该写成
ffmpeg -i dog3.mp4 -i dog3.mp4 -i dog3.mp4 -i dog3.mp4 -i dog3.mp4 \
-filter_complex \
[0:v]setptsPTS-STARTPTS[v1]; \
[1:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(4/TB)[v2];
[2:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(8/TB)[v3];
[3:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(12/TB)[v4];
[4:v]formatyuva420p,fadein:st0:d1:alpha1,setptsPTS-STARTPTS(16/TB)[v5];
[v1][v2]overlay[v12];
[v12][v3]overlay[v123];
[v123][v4]overlay[v1234];
[v1234][v5]overlay,formatyuv420p[v]; \
[1:a][2:a]acrossfaded1[a12];
[a12][3:a]acrossfaded1[a123];
[a123][4:a]acrossfaded1[a] \
-map [v] -map [a] result.mp4前面的命令[0][1]直接写意思是input 0, input 1
[0:v] input 0 video stream
[0:a] input 0 audio stream注意在前面的filter_complex的最后一个标签后不能跟分号跟了分号就报错因为分号以为这后面还有filter chain但是后面却是空的
[AVFilterGraph 0x55a826aa5a60] No such filter:
Error initializing complex filters.
Invalid argumentFFmpeg Filters翻译文档 FFmpeg filter简介