top图片
  • 学而时习之专栏
  • 温故而知新专栏



  • 一些ffmpeg效果处理例子






    视频颤抖



    ffmpeg -i 一些事事.mp4 -vf 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)" 一些事.mp4  



    色彩变幻



    ffmpeg -i 一些事事.mp4 -vf hue="H=2*PI*t:s=sin(2*PI*t)+1" 一些事.mp4



    渐入



    ffmpeg -i 一些事事.mp4 -vf fade=in:0:90 一些事.mp4                 



    黑白                    



    ffmpeg -i 一些事事.mp4 -vf lutyuv="u=128:v=128" 一些事.mp4   



    锐化



    ffmpeg -i 一些事事.mp4 -vf unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5 一些事.mp4   



    反锐化



    ffmpeg -i 一些事事.mp4 -vf unsharp=7:7:-2:7:7:-2 一些事.mp4 



    渐晕



    ffmpeg -i 一些事事.mp4 -vf vignette=PI/4 一些事.mp4



    闪烁渐晕



    ffmpeg -i 一些事事.mp4 -vf vignette='PI/4+random(1)*PI/50':eval=frame 一些事.mp4



    视频颤抖



    ffmpeg -i 一些事事.mp4 -vf
    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)" 一些事.mp4  



    色彩变幻



    ffmpeg -i 一些事事.mp4 -vf hue="H=2*PI*t:s=sin(2*PI*t)+1" 一些事.mp4



    模糊处理



    ffmpeg -i 一些事事.mp4 -vf boxblur=5:1:cr=0:ar=0 一些事.mp4



    镜像翻转



    ffmpeg -i 一些事事.mp4 -vf crop=iw/2:ih:0:0,split[left][tmp]; tmp]hflip[right];[left]pad=iw*2[a];[a][right]overlay=w 一些事.mp4



    水平翻转



    ffmpeg -i 一些事事.mp4 -vf geq=p(W-X\\,Y) 一些事.mp4



    一些垂直翻转



    ffmpeg -i 一些事事.mp4 -vf vflip 一些事.mp4



    浮雕效果



    ffmpeg & -i & 一些事事.mp4 & -vf & format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2' & 一些事.mp4



    均匀噪声



    ffmpeg -i 一些事事.mp4 -vf noise=alls=20:allf=t+u 一些事.mp4



    字幕由左向右



    fmpeg  -i & input.mp4 & -vf "drawtext=text=string1 string2 string3
    string4 string5 string6 string7 :expansion=normal:fontfile=foo.ttf:y=h-line_h-10:x=(mod(5*n\,w+tw)-tw): fontcolor=white: fontsize=40:shadowx=2: shadowy=2" output.mp4



    字幕由右向左



    ffmpeg -i input.mp4 -vf "
    drawtext=text=string1:fontfile=foo.ttf:y=h-line_h-10:x=w-(t-4.5)*w/5.5:fontcolor=white:fontsize=40:shadowx=2:shadowy=2"



    从右往左滚,单次滚动时长10秒,间隔30秒滚一次



    ffmpeg -i input.mp4 -filter:v drawtext="fontfile=Microsoft YaHei Mono.ttf:text='Hello World':fontcolor=white@1.0:fontsize=36:y=h-line_h-10:x=w-tw-w/10*mod(t\,30):enable=gt(mod(t\,20)\,10)"-codec:v libx264 -codec:a copy -y output.mp4
    overlay的使用语法:
    ffmpeg  -i  input1  -i  input2  -filter_complex  overlay=x:y  output
    这里不使用-vf简单滤镜,而是使用-filter_complex复合滤镜,因为是有多个输入源。
    但是如果通过链接标签,可以t结合movie视频源使用-vf滤镜,比如:
    ffmpeg  -i  input1  -vf  movie=input2[logo];[in][logo]overlay=x:y  output



    2. 某个画面角落显示logo



    左上角:ffmpeg  -i  pair.mp4  -i  logo.png  -filter_complex  overlay  pair1.mp4
    右上角:ffmpeg  -i  pair.mp4  -i  logo.png  -filter_complex  overlay=W-w  pair2.mp4
    左下角:ffmpeg  -i  pair.mp4  -i  logo.png  -filter_complex  overlay=H-h  pair3.mp4
    右下角:ffmpeg  -i  pair.mp4  -i  logo.png  -filter_complex  overlay=W-w:H-h  pair4.mp4
    3. 指定时刻显示logo(使用-itsoffset选项)



    4.添加时间



    ffmpeg  -f  lavfi  -i  testsrc  -vf crop=61:52:224:94  -t  30 timer.ogg 一些30秒
    ffmpeg  -i  一些事事.mp4  -i  timer.ogg -filter_complex  overlay=451 output.mp4
    overlay451是一些事事.mp4视频的宽512减去61得到的,效果是时间在视频的右上角显示
    ffmpeg  -i  一些事事.mp4  -vfmovie=timer.ogg,scale=15:14[tm];[in][tm]overlay=248:371 output.mp4
    一些将timer缩放到15:14,然后添加到视频一些事事.mp4的宽248高371的位置,
    [in]是自带的输入标签,
    [tm]是自己打的标签
    ffmpeg -i ~/test/objectC/facebook.mp4 -i ~/test/objectC/facebook.mp4
    -filter_complex &"[0:v][1:v] overlay=y='if(gte(t,2), -h+(t-2)*800,
    NAN):x=20" /root/a.mp4[/mw_shl_code]