blend,tblend
混合两个视频帧
其中blend混合两路输出1路流,第一个输入为top层,二个路为bottom层,输出以输入短的为结束。而tblend(时间混合)需要从一个单独视频流的连续两帧,让新帧在上叠加在老帧上。
接受选项的介绍如下:
- c0_mode
- c1_mode
- c2_mode
- c3_mode
- all_mode
设置混合模式(对指定像素或者所有像素——利用all_mode),默认值是normal
当前有效的混合模式如下:
‘addition’
‘and’
‘average’
‘burn’
‘darken’
‘difference’
‘difference128’
‘divide’
‘dodge’
‘exclusion’
‘glow’
‘hardlight’
‘hardmix’
‘lighten’
‘linearlight’
‘multiply’
‘negation’
‘normal’
‘or’
‘overlay’
‘phoenix’
‘pinlight’
‘reflect’
‘screen’
‘softlight’
‘subtract’
‘vividlight’
‘xor’
c0_opacity
c1_opacity
c2_opacity
c3_opacity
all_opacity
设置特定像素的透明度,或者设置整个透明度(利用all_opacity),仅用于组合像素混合模式blend滤镜.
c0_expr
c1_expr
c2_expr
c3_expr
all_expr
设置特定像素混合表达式或所有像素混合表达式(all_expr),注意如果它们被设定,则相关模式选项被忽略
表达式可以采用下面的变量:
N
进入滤镜的帧序数,从0开始计数
X
Y
样本点坐标(像素坐标)
W
H
整个帧画面的宽和高(原始的)
SW
SH
取决于当前滤镜平面的宽和高。它对应于像素亮度平面和当前平面的比值,如对于YUV4:2:0格式,则对于亮度平面
为1,1,对于色度平面则是0.5,0.5
T
当前帧的时间,单位秒
TOP, A
`top`层的视频帧上当前像素值
BOTTOM, B
`bottom`层的视频帧上当前像素值
shortest
在短输入结束时强制结束,默认为0,只用于blend滤镜
repeatlast
在结束流后继续应用底帧。值为0表明不继续应用底帧,默认为1.选项只用于blend滤镜
blend,tblend例子
在前10秒应显示底帧:
blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
显示1x1棋盘效应效果(有的显示A,有的显示B):
blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
从左到右揭开的效果:
blend=all_expr='if(gte(N*SW+X,W),A,B)'
从上到下揭开效果:
blend=all_expr='if(gte(Y-N*SH,0),A,B)'
从右下向左上揭开效果:
blend=all_expr='if(gte(TSH40+Y,H)gte((T40*SW+X)*W/H,W),A,B)'
显示当前和前一帧之间的差异:
tblend=all_mode=difference128
使用举例:
ffmpeg -i out31.avi -i out32.avi -filter_complex "blend=all_expr='if(gte(T*SH*200+Y,H)*gte((T*200*SW+X)*W/H,W),A,B)'" out15.avi