美文网首页
FFMpeg命令行学习笔记(7)ffmpeg命令行指令blend

FFMpeg命令行学习笔记(7)ffmpeg命令行指令blend

作者: WSGNSLog | 来源:发表于2017-02-04 11:38 被阅读645次

    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

    相关文章

      网友评论

          本文标题:FFMpeg命令行学习笔记(7)ffmpeg命令行指令blend

          本文链接:https://www.haomeiwen.com/subject/dymjittx.html