ffmpeg 特效 转场 放大缩小

案例

复制代码
ffmpeg \
-i input.mp4 \
-i image1.png \
-i image2.png \
-filter_complex \
[1:v]scale=100:100[img1]; \
[2:v]scale=1280:720[img2]; \
[0:v][img1]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[bkg];\
[bkg][img2]overlay=0:0 \
-y output.mp4

-i input.mp4//这个是原始文件

-i image1.png//第一个水印图片

-i image2.png//第二个水印图片

-y output.mp4//输出文件

1:v\]这个里头两个参数,1表示的是操作对象的编号。在本例中 0就是原始视频文件input.mp4, 1就是image1.png, 2就是image2.png, 3就是output.mp4。 而另一个参数v表示操作对象里的视频信息。 \[img1\]是这个操作过滤器的名字。(当然名字可以随便起) \[1:v\]scale=100:100\[img1\]; \\ 所以这头一句\[1:v\]scale=100:100\[img1\]的意思就是对图片imagei.png进行调节尺寸的操作,并将这个操作的结果命名为img1。 \[2:v\]scale=1280:720\[img2\]; \\ 后面的\[2:v\]和\[img2\]也是一个意思。 \[0:v\]\[img1\]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2\[bkg\];\\ 我们继续,overlay前面\[0:v\]\[img1\]凑一起是什么意思呢 0自然就是指的原始视频input.mp4,这句的意思就是将\[img1\]叠加到0对象的视频上。本例中就是把image1.png叠加到input.mp4上。 这里需要注意的就是顺序:后一个对象叠加到前一个上,后一个对象在上层。如果写成\[img1\]\[0:v\],那相对本例其实就是把视频叠加到图片imge1.png上。这样的话一般来说由于视频通常是全屏,等于用视频覆盖了图片,水印完全看不到了。 好,我们又把这个操作的结果命名为\[bkg\], \[bkg\]\[img2\]overlay=0:0 \\ 那么接下来\[bkg\]\[img2\]的意思就很明了了。就是把image2.png再叠加上去,image2.png是在最上层的,如果位置重合的话,他会遮盖 image1.png的水印。 于是,事就这样成了。

转场动画

复制代码
ffmpeg \
-loop 1 -t 3 -i img001.jpg \
-loop 1 -t 3 -i img002.jpg \
-loop 1 -t 3 -i img003.jpg \
-loop 1 -t 3 -i img004.jpg \
-loop 1 -t 3 -i img005.jpg \
-filter_complex \
"[0][1]xfade=transition=circlecrop:duration=0.5:offset=2.5[f0]; \
[f0][2]xfade=transition=smoothleft:duration=0.5:offset=5[f1]; \
[f1][3]xfade=transition=pixelize:duration=0.5:offset=7.5[f2]; \
[f2][4]xfade=transition=hblur:duration=0.5:offset=10[f3]" \
-map "[f3]" -r 25 -pix_fmt yuv420p -vcodec libx264 output-swipe-custom.mp4

duration:动效时间

offset:指前一个视频做转场的起始位置,是从视频头开始算

0:1\]这个里头两个参数,0表示的是操作对象的编号。在本例中0就是img001.jpg,1就是img002.jpg,2就是img003.jpg。 \[f0\]是这个操作过滤器的名字。(当然名字可以随便起) \|\<==offset \|\<==duration==\>\| AAAAAAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBB

复制代码
"[0][1:v]xfade=transition=fade:duration=1:offset=3[vfade1]; \
 [vfade1][2:v]xfade=transition=fade:duration=1:offset=10[vfade2]; \
 [vfade2][3:v]xfade=transition=fade:duration=1:offset=21[vfade3]; \
 [vfade3][4:v]xfade=transition=fade:duration=1:offset=25,format=yuv420p; \
 [0:a][1:a]acrossfade=d=1[afade1]; \
 [afade1][2:a]acrossfade=d=1[afade2]; \
 [afade2][3:a]acrossfade=d=1[afade3]; \
 [afade3][4:a]acrossfade=d=1" \
-movflags +faststart out.mp4
input input duration + previous xfade offset - xfade duration offset =
v0.mp4 4 + 0 - 1 3
v1.mp4 8 + 3 - 1 10
v2.mp4 12 + 10 - 1 21
v3.mp4 5 + 21 - 1 25

Merging multiple video files with ffmpeg and xfade filter - Stack Overflow

转场+放大

复制代码
ffmpeg \
-t 5 -i 1.jpg \
-t 5 -i 2.jpg \
-t 5 -i 3.jpg \
-t 5 -i 4.jpg \
-filter_complex \
"[0:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=out:st=4:d=1[v0]; \
 [1:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
 [2:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
 [3:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
 [v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" -s "800x450" -t 40 ./out_fade.mp4

参数v表示操作对象里的视频信息。

st=0 表示动画的开始时间,这里是4

d=3 表示动画的时间

复制代码
ffmpeg \
-loop 1 -t 2 -i 1.jpg \
-loop 1 -t 2 -i 2.jpg \
-loop 1 -t 2 -i 3.jpg \
-loop 1 -t 2 -i 4.jpg \
-loop 1 -t 2 -i 5.jpg \
-filter_complex \
"[0:v]xfade=transition=wiperight:duration=1:offset=1[v0]; \
[1:v]xfade=transition=wiperight:duration=1:offset=1[v1];  \
[2:v]xfade=transition=wiperight:duration=1:offset=1[v2];  \
[3:v]xfade=transition=wiperight:duration=1:offset=1[v3]; \
[v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" \
-map "[v]" \
-y out.mp4

FFmpeg中转场滤镜xfade的时间参数(duration和offset)与算法解读_ffmpeg xfade_Jack_Chai的博客-CSDN博客

How to Create a Slideshow from Images with FFmpeg - Bannerbear

Creating an FFmpeg image slideshow with zoompan and fade in/out - Super User

FFmpeg实现音视频同步的精准片段拼接_ffmpeg atrim_Jack_Chai的博客-CSDN博客

所有转场效果: Xfade -- FFmpeg

xfade官方文档:FFmpeg Filters Documentation

fade滤镜:FFmpeg Filters Documentation

zoompan

FFmpeg滤镜效果--镜头聚焦和移动走位 - 知乎

相关推荐
简鹿办公4 小时前
巧用 FFmpeg 命令行合并多个视频为一个视频文件教程
ffmpeg·视频如何合并·怎样合并视频
aqi009 小时前
FFmpeg开发笔记(六十一)Linux给FFmpeg集成H.266编码器vvenc
linux·ffmpeg·音视频·直播·流媒体
EtpBot-萧阳1 天前
SDL2常用函数SDL事件处理:SDL_Event|SDL_PollEvent
ffmpeg·多线程·sdl·视频渲染·投屏开发
半瓶啤酒一醉方休1 天前
ffmpeg 转换视频格式
ffmpeg
Panesle1 天前
ten-vad:低延迟、轻量化且高性能的流式语音活动检测系统
人工智能·语言模型·ffmpeg·开源·音视频·语音识别
大猫会长1 天前
利用ffmpeg给gif配上文字
ffmpeg
Hunter_pcx1 天前
从源码编译支持ffmpeg(H264编码)的opencv(创建mp4视频报错:H264 is not supported with codec id 28)
人工智能·opencv·ffmpeg
lepton_yang2 天前
Openwrt下使用ffmpeg配合自建RTSP服务器实现推流
ffmpeg·openwrt·视频服务器
Stuomasi_xiaoxin2 天前
FFmpeg 超级详细安装与配置教程(Windows 系统)
python·深度学习·ai·ffmpeg
追随远方2 天前
FFmpeg解码器配置指南:为什么--enable-decoders不能单独使用?
ffmpeg