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滤镜效果--镜头聚焦和移动走位 - 知乎

相关推荐
daidaidaiyu2 天前
FFmpeg 关键的结构体
c++·ffmpeg
扶尔魔ocy2 天前
【QT window】ffmpeg实现录音功能之无损格式--PCM
ffmpeg·pcm
止礼2 天前
FFmpeg8.0.1 源代码的深入分析
ffmpeg
小曾同学.com2 天前
音视频中的“透传”与“DTS音频”
ffmpeg·音视频·透传·dts
vivo互联网技术2 天前
数字人动画云端渲染方案
前端·ffmpeg·puppeteer·web3d
止礼2 天前
FFmpeg8.0.1 编解码流程
ffmpeg
qs70162 天前
c直接调用FFmpeg命令无法执行问题
c语言·开发语言·ffmpeg
止礼2 天前
FFmpeg8.0.1 Mac环境 CMake本地调试配置
macos·ffmpeg
简鹿视频3 天前
视频转mp4格式具体作步骤
ffmpeg·php·音视频·实时音视频