1.查看ffmpeg支持那些过滤器
ffmpeg -filters
要查看是否支持转场的过滤器的命令
ffmpeg -filters | grep xfade
xfade命令是ffmpeg5版本才有的功能
2.合并视频并在视频之间添加转场效果
a.合并两个视频
ffmpeg -i https://qiniu.heyincloud.cn/creator/mix_cut/coffee/ba1h9c002.mp4 -i https://qiniu.heyincloud.cn/creator/mix_cut/coffee/ba1h9c002.mp4 -filter_complex "[0][1]xfade=transition=slideleft:duration=1:offset=4,format=yuv420p[video]" -map "[video]" -preset faster -y hello3.mp4
b.合并三个视频
ffmpeg -i https://qiniu.heyincloud.cn/creator/mix_cut/coffee/ba1h9c002.mp4 -i https://qiniu.heyincloud.cn/creator/mix_cut/coffee/ba1h9c002.mp4 -i https://qiniu.heyincloud.cn/creator/mix_cut/coffee/ba1h9c003.mp4 -filter_complex "[0][1]xfade=transition=slideleft:duration=1:offset=4[v1];[v1][2]xfade=transition=slideright:duration=1:offset=8,format=yuv420p[video]" -map "[video]" -preset faster -y hello4.mp4
centos默认的ffmpeg版本比较旧,不支持xfade转场效果,要升级到版本5以上才行
最后发现源码编译太麻烦,不是缺少哪个库,就是缺少依赖,踩了好几个坑。最后还是用docker简单粗暴。
最终部署docker容器的命令
先拉取docker pull jrottenberg/ffmpeg:5.1-alpine
然后运行容器
docker run -itd --name app_ffmpeg -p 8066:8080 -v /usr/share/fonts:/usr/share/fonts --entrypoint='/bin/ash' jrottenberg/ffmpeg:5.1-alpine
进行容器更新字体缓存
docker exec -it app_ffmpeg /bin/ash
fc-cache -f -v
然后退出容器
测试命令
docker exec app_ffmpeg ffmpeg -version