[FFmpeg Cmd]滤镜特效调研实现

作者: _小老虎_ | 来源:发表于2023-03-03 17:48 被阅读0次

O 说明

http://www.ffmpeg.org/ffmpeg-filters.html#toc-Timeline-editing

5 Timeline editing

Some filters support a generic <samp>enable</samp> option. For the filters supporting timeline editing, this option can be set to an expression which is evaluated before sending a frame to the filter. If the evaluation is non-zero, the filter will be enabled, otherwise the frame will be sent unchanged to the next filter in the filtergraph.

The expression accepts the following values:

‘t’timestamp expressed in seconds, NAN if the input timestamp is unknown‘n’sequential number of the input frame, starting from 0‘pos’the position in the file of the input frame, NAN if unknown‘w’‘h’width and height of the input frame if video

Additionally, these filters support an <samp>enable</samp> command that can be used to re-define the expression.

Like any other filtering option, the <samp>enable</samp> option follows the same rules.

For example, to enable a blur filter (smartblur) from 10 seconds to 3 minutes, and a curves filter starting at 3 seconds:

<pre class="example" style="margin: 10px 0px 0px; padding: 0px; font-family: ConfluenceInstalledFont, monospace; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">smartblur = enable='between(t,10,3*60)',
curves = enable='gte(t,3)' : preset=cross_process
</pre>

See ffmpeg -filters to view which filters have timeline support.

1 滤镜

!/bin/bash
# Author: changyanlong01
# Created Time: Fri 21 Aug 2020 04:05:25 PM CST
 
#FFMPEG="./ffmpeg"
FFMPEG="ffmpeg"
FFMPEG_INPUT=" -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png "
FFMPEG_OUTPUT=" -map '[result]' -vcodec libx264 -an -y "
 
WIDTH=900
HEIGHT=422
SCALE="${WIDTH}:${HEIGHT}"
 
VIDEO_IDX=0
 
CMD_FILE='cmd.sh'
echo "set -x" > $CMD_FILE
 
function execFFmpeg() {
    local fiterContent=${1}
    local outputname=${2}
    local filterComplex=" -filter_complex \"[0:v]${fiterContent}[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]\""
 
    #ffmpegStr="$FFMPEG_INPUT $filterComplex $FFMPEG_OUTPUT ./output/${VIDEO_IDX}.mp4"
    ffmpegStr="$FFMPEG_INPUT $filterComplex $FFMPEG_OUTPUT ./output/${outputname}.mp4"
    echo $ffmpegStr
    echo "$FFMPEG $ffmpegStr" >> $CMD_FILE
    #$FFMPEG $ffmpegStr
    ((VIDEO_IDX=VIDEO_IDX+1))
}
 

#
# 老版本滤镜
#
# 负片
execFFmpeg "negate" "老版本_负片"
# 模糊
execFFmpeg "boxblur=16:12:cr=0:ar=0" "老版本_模糊"
# 浮雕
execFFmpeg "format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'" "老版本_浮雕"
# 黑白
execFFmpeg "colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3" "老版本_黑白"
# 高亮
execFFmpeg "curves=r='0/0 0.05/0.1 0.4/0.6 1/1':g='0/0 0.05/0.1 0.4/0.6 1/1':b='0/0 0.05/0.1 0.4/0.6 1/1'" "老版本_高亮"
# 其他 曲线
execFFmpeg "curves=vintage" "老版本_vintage"
execFFmpeg "curves=strong_contrast" "老版本_strong_contrast"
execFFmpeg "curves=lighter" "老版本_lighter"
execFFmpeg "curves=negate" "老版本_negate"
execFFmpeg "curves=color_negative" "老版本_color_negative"
 
#
# 新调研
#
# 边缘检测
execFFmpeg "edgedetect" "edgedetect"
execFFmpeg "edgedetect=low=0.4:high=0.9" "edgedetect_low04_high09"
# 油画
execFFmpeg "edgedetect=mode=colormix:high=0" "edgedetect_colmix_high0"
execFFmpeg "edgedetect=mode=colormix:low=0.9:high=1" "edgedetect_colmix_low09_high0"
execFFmpeg "edgedetect=mode=colormix:low=0.4:high=0.9" "edgedetect_colmix_low_04_high0"
 
# 色彩时域
execFFmpeg "geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'" "gep1"
 
execFFmpeg "inflate" "inflate"
 
# 复制 同屏
execFFmpeg "il=l=i:c=i"
execFFmpeg "il=luma_mode=interleave:chroma_mode=interleave"
 
# YUV
execFFmpeg "lutyuv=y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val" "yuvcolor"
# 亮度 饱和度 对比度 gama
execFFmpeg "eq=contrast=1:brightness=-0.2:saturation=1.0" "epcontrast_brightness_sat_gamma"
execFFmpeg "eq=contrast=1:brightness=0.2:saturation=1.0" "epcontrast_brightness02_sat_gamma"
execFFmpeg "eq=contrast=1:brightness=0.2:saturation=1.0:gamma_r=10:gamma_g=1:gamma_b=5" "epcontrast_brightness_sat_gamma"
 
# 均匀噪声
execFFmpeg "noise=alls=20:allf=t+u" "noise_avg"
# 渐变
#execFFmpeg "fade=in:0:10"
execFFmpeg  "fade=type=out:st=13.218084:duration=1.000000:color=white"
 
# 锐化
execFFmpeg "unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5" "sharp"
 
# 反锐化
execFFmpeg "unsharp=7:7:-2:7:7:-2" "unsharp"
# 渐晕
execFFmpeg "vignette=PI/4" "vignette"
# 闪烁渐晕
execFFmpeg "vignette='PI/4+random(1)*PI/50':eval=frame" "vignette_light"
# 放大
execFFmpeg "crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2+((in_h-out_h)/2)*sin(n/7)[out];[out]scale=${SCALE}" "scale_bigger"
# 色泽
execFFmpeg "hue=H=2*PI*t:s=sin(2*PI*t)+1" "hue"
# 模糊
execFFmpeg "boxblur=5:1:cr=0:ar=0" "blur"
 
# 水平翻转
execFFmpeg "geq=p(W-X\\,Y)" "gep_hor"
# 垂直旋转
execFFmpeg "vflip" "vflip"
# 浮雕
execFFmpeg "format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'" "fudiao"
 
:<<!
5, colorchannelmixer  可以设置rgba四个分量的变换关系,共接受16个参数。
rr rg rb ra
gr gg gb ga
br bg bb ba
ar ag ab aa
参数本质就是加权求值时候的权重,每个参数接受0-1得值,滤镜本质是将每个颜色值加权求值.公式:
red=red*rr+blue*rb+green*rg+alpha*ra 。green/blue和alpha同理。参数默认值对应得是1,其他为0.如:rr,rg,rb,ra。其中rr默认为1,其他为0。
!
execFFmpeg "colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3" "colorchannelmixer1"
execFFmpeg "colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131" "colorchannelmixer2"
 
execFFmpeg "drawbox=x=100:y=100:w=iw/2:h=ih/2:c=red" "drawbox1"
execFFmpeg "drawgrid=width=100:height=100:thickness=2:color=black@0.9" "drawgrid"
 
 
 
# 调色
execFFmpeg "colorbalance=rs=.3" "colorbalance_rs03"
execFFmpeg "colorbalance=bs=.3" "colorbalance_bs03"
execFFmpeg "colorbalance=gs=.3" "colorbalance_gs03"
 
execFFmpeg "colorbalance=rm=.3" "colorbalance_rm03"
execFFmpeg "colorbalance=bm=.3" "colorbalance_bm03"
execFFmpeg "colorbalance=gm=.3" "colorbalance_gm03"
 
execFFmpeg "colorbalance=rh=.3" "colorbalance_rh03"
execFFmpeg "colorbalance=bh=.3" "colorbalance_bh03"
execFFmpeg "colorbalance=gh=.3" "colorbalance_gh03"
 
execFFmpeg "colorlevels=rimin=0.058:gimin=0.058:bimin=0.058" "colorlevels1"
execFFmpeg "colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96" "colorlevels2"
execFFmpeg "colorlevels=rimax=0.902:gimax=0.902:bimax=0.902" "colorlevels3"
execFFmpeg "colorlevels=romin=0.5:gomin=0.5:bomin=0.5" "colorlevels4"
 
# 直方图
execFFmpeg "histogram" "histogram"
 
execFilter

输出cmd

ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]negate[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_负片.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]boxblur=16:12:cr=0:ar=0[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_模糊.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_浮雕.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_黑白.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]curves=r='0/0 0.05/0.1 0.4/0.6 1/1':g='0/0 0.05/0.1 0.4/0.6 1/1':b='0/0 0.05/0.1 0.4/0.6 1/1'[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_高亮.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]curves=vintage[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_vintage.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]curves=strong_contrast[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_strong_contrast.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]curves=lighter[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_lighter.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]curves=negate[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_negate.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]curves=color_negative[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/老版本_color_negative.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]edgedetect[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/edgedetect.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]edgedetect=low=0.4:high=0.9[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/edgedetect_low04_high09.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]edgedetect=mode=colormix:high=0[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/edgedetect_colmix_high0.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]edgedetect=mode=colormix:low=0.9:high=1[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/edgedetect_colmix_low09_high0.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]edgedetect=mode=colormix:low=0.4:high=0.9[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/edgedetect_colmix_low_04_high0.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/gep1.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]inflate[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/inflate.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]il=l=i:c=i[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]il=luma_mode=interleave:chroma_mode=interleave[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]lutyuv=y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/yuvcolor.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]eq=contrast=1:brightness=-0.2:saturation=1.0[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/epcontrast_brightness_sat_gamma.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]eq=contrast=1:brightness=0.2:saturation=1.0[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/epcontrast_brightness02_sat_gamma.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]eq=contrast=1:brightness=0.2:saturation=1.0:gamma_r=10:gamma_g=1:gamma_b=5[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/epcontrast_brightness_sat_gamma.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]noise=alls=20:allf=t+u[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/noise_avg.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/sharp.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]unsharp=7:7:-2:7:7:-2[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/unsharp.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]vignette=PI/4[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/vignette.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]vignette='PI/4+random(1)*PI/50':eval=frame[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/vignette_light.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2+((in_h-out_h)/2)*sin(n/7)[out];[out]scale=900:422[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/scale_bigger.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]hue=H=2*PI*t:s=sin(2*PI*t)+1[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/hue.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]boxblur=5:1:cr=0:ar=0[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/blur.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]geq=p(W-X\,Y)[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/gep_hor.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]vflip[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/vflip.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/fudiao.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorchannelmixer1.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorchannelmixer2.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]drawbox=x=100:y=100:w=iw/2:h=ih/2:c=red[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/drawbox1.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]drawgrid=width=100:height=100:thickness=2:color=black@0.9[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/drawgrid.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorbalance=rs=.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorbalance_rs03.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorbalance=bs=.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorbalance_bs03.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorbalance=gs=.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorbalance_gs03.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorbalance=rm=.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorbalance_rm03.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorbalance=bm=.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorbalance_bm03.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorbalance=gm=.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorbalance_gm03.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorbalance=rh=.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorbalance_rh03.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorbalance=bh=.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorbalance_bh03.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorbalance=gh=.3[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorbalance_gh03.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorlevels=rimin=0.058:gimin=0.058:bimin=0.058[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorlevels1.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorlevels2.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorlevels=rimax=0.902:gimax=0.902:bimax=0.902[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorlevels3.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]colorlevels=romin=0.5:gomin=0.5:bomin=0.5[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/colorlevels4.mp4
ffmpeg  -v error -framerate 1 -t 10 -loop 1 -i ./test1.png -framerate 1 -t 10 -loop 1 -i ./test1.png   -filter_complex "[0:v]histogram[output];[output]pad=iw*2:ih[output1];[output1][1:v]overlay=w*1[result]"  -map '[result]' -vcodec libx264 -an -y  ./output/histogram.mp4

相关文章

  • FFmpeg学习之overlay实时水印

    FFmpeg可以使用overlay滤镜添加水印,这次使用overlay和movie滤镜实现实时水印。

  • FFmpeg滤镜(1)

    FFmpeg滤镜Filter描述格式 1、FFmpeg滤镜Filter的参数排列方式 [输入流或标记名]滤镜参数[...

  • PhotoShop教程 PS滤镜制作魔幻背景特效

    本教程介绍用PhotoShop滤镜制作魔幻背景特效效果,主要用到滤镜,滤镜主要是用来实现图像的各种特殊效果。 最终...

  • IE问题

    1.滤镜 如果你必须在IE中实现alpha透明度、渐变、阴影和过渡等特效,可以采用专用IE滤镜。 对于IE滤镜,需...

  • 剪映学习计划-day5

    Day5: 学习目标: 1、添加特效和滤镜 课程1(第7节 添加特效和滤镜) 重点: 1、特效添加,学会调整特效层...

  • Windows系统下ffmpeg+nginx搭建HLS服务器

    1. 准备软件 nginx下载 ffmpeg下载 解压ffmpeg软件后,打开cmd,进入ffmpeg...

  • 多媒体开发(6):滤镜实现各种图片效果 | Video-Filt

    之前讲过使用FFmpeg的drawtext滤镜(把图片或文字加到视频上),而实际上,FFmpeg的滤镜很强大,远不...

  • iOS WebRTC 实现美颜滤镜特效

    最近需要实现美颜功能,调研了很多相关技术文章和开源代码。踩了很多坑,记录实现步骤,希望对读者有所帮助。发现有2种实...

  • FFMPEG 特效

    //渐入i in.mp4 -vf fade=in:0:90 out.mp4//黑白i in.mp4 -vf lut...

  • 直播美颜特效SDK

    一、项目简介 直播美颜特效SDK 二、实现功能 美颜(原图、美白、磨皮、红润、亮度) 滤镜(浪漫、清晰、唯美、粉嫩...

网友评论

    本文标题:[FFmpeg Cmd]滤镜特效调研实现

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