ffmpeg介绍及代码实践

需求是合并多个图片为视频,并在每个图片衔接处加入转场特效,第一种方式是用fade做转场,第二种方式是xfade做转场,xfade的转场特效更多,建议用这个。如果对你有帮助,点赞+收藏。

第一种:直接用fade做转场

ffmpeg \
-loop 1 -t 5 -i 1.jpg \
-loop 1 -t 5 -i 2.jpg \
-loop 1 -t 5 -i 3.jpg \
-loop 1 -t 5 -i 4.jpg \
-loop 1 -t 5 -i 5.jpg -filter_complex "[0:v]fade=t=out:st=4:d=1[v0]; [1:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; [2:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; [3:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; [4:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v4]; [v0][v1][v2][v3][v4]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4

转场特效,可以在:https://trac.ffmpeg.org/wiki/Xfade#MP4output 查看
在这里插入图片描述

第二种:利用xfade做转场

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 -i 1.mp3 -i circlecrop.mp4 -shortest \
-c:v libx264 \
-y BGM.mp4

# 复杂命令:
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 \
-stream_loop -1 -i 1.mp3 -acodec aac \
-filter_complex "[0:v]xfade=transition=circlecrop:duration=1:offset=1[v0]; [1:v]xfade=transition=circlecrop:duration=1:offset=1[v1]; [2:v]xfade=transition=circlecrop:duration=1:offset=1[v2]; [3:v]xfade=transition=circlecrop:duration=1:offset=1[v3]; [v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" \
-map "5:a" \
-shortest \
-c:v libx264 \
-y circlecrop.mp4

-stream_loop
输入流循环的次数,0 表示无循环,-1 表示无限循环,即音乐循环播放。
-acodec aac
设置音频编解码为 acc 模式
-map “[v]”
将合成的视频输入流 v 指定为输出文件的源
-map “5:a”
将第6个文件作为视频音频文件
-shortest
最短的输入流结束时,完成编码。
-c:v libx264
输出视频编码格式
-pix_fmt yuv420p
设置像素格式为 yuv420p

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值