一些ffmpeg效果处理例子
一些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]