ffmpeg 视频过度滤镜 gltransition

上次随笔中提到的 ffmpeg-concat 可以处理视频过度,但是缺点是临时文件超大。
经过查找 ffmpeg 还有 gltransition 滤镜,但是 ffmpeg 的正式版中还没有加进去。
github 上有 ffmpeg-gl-transition 项目,有详细的添加滤镜的说明,参见以下地址
https://github.com/transitive-bullshit/ffmpeg-gl-transition 这个滤镜依赖的库包括 GLEW + glfw3
想静态编译 GLEW 需要加 #define GLEW_STATIC ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "gltransition=duration=4:offset=1.5:source=crosswarp.glsl" -y out.mp4 通过下面的脚本可以使用不同视频过度方式
-------------------------------------------------------------------------------------------------
ffmpeg-gl-transition-concat.sh
-------------------------------------------------------------------------------------------------
#!/bin/bash
# Example of concatenating 3 mp4s together with 1-second transitions between them. tpath="/ffmpeg/transitions/"
x264="-look_ahead 0 -ac 2 -c:v h264_qsv -profile:v high -level 3.1 -preset:v veryfast"
ki="-keyint_min 72 -g 72 -sc_threshold 0"
br="-b:v 3000k -minrate 3000k -maxrate 6000k -bufsize 6000k -b:a 128k" ffmpeg -hide_banner \
-i 1.mp4 \
-i 2.mp4 \
-i 3.mp4 \
-filter_complex " \
[0:a] atrim=0:5 [a0]; \
[1:a] atrim=0:5 [a1]; \
[2:a] atrim=0:6 [a2]; \
\
[0:v] split [v000] [v010]; \
[1:v] split [v100] [v110]; \
[2:v] split [v200] [v210]; \
\
[v000] trim=0:5 [v001]; \
[v010] trim=5:6 [v011t]; \
[v011t] setpts=PTS-STARTPTS [v011]; \
\
[v100] trim=0:5 [v101]; \
[v110] trim=5:6 [v111t]; \
[v111t] setpts=PTS-STARTPTS [v111]; \
\
[v200] trim=0:5 [v201]; \
[v210] trim=5:6 [v211t]; \
[v211t] setpts=PTS-STARTPTS [v211]; \
\
[v011] [v101] gltransition=duration=1:source=${tpath}WaterDrop.glsl [vt0]; \
[v111] [v201] gltransition=duration=1:source=${tpath}crosswarp.glsl [vt1]; \
\
[v001] [vt0] [vt1] [v211] concat=n=4 [outv]; \
[a0] [a1] [a2] concat=n=3:v=0:a=1 [outa]" \
-map [outv] -map [outa] \
${x264} ${ki} ${br} \
-y ffmpeg-gl-transition-concat.mp4
-------------------------------------------------------------------------------------------------

  

最新文章

  1. Tomcat 日志清除(含扩展AccessLogValve)
  2. ACM/ICPC2016 青岛区域赛
  3. sql语句全集
  4. Gitub
  5. Docker背后的容器管理——Libcontainer深度解析
  6. elicpse之tomcat配置
  7. Android 5.0之后屏幕截图的方法
  8. 自己写的驱动用CreateFile打开时错误码返回1的问题
  9. [UWP]针对UWP程序多语言支持的总结,含RTL
  10. Java内省详解
  11. 手机布局rem的使用(rem)
  12. 记关于vue-cli3 本地代理模拟数据的实践
  13. V-rep学习笔记:Geometric Constraint Solver(几何约束求解)
  14. Where-To-Put-The-Auto-Layout-Code(AutoLayout代码应该放在哪里?)
  15. [JAVA] JAVA 文档注释
  16. python知识大全目录,想学的看过来!
  17. SpringBoot 部署 docker 打包镜像
  18. UVA1339(字母映射)
  19. NUCLEO-L053R8 TIM定时器 PWM输出
  20. 51Nod 1024 矩阵中不重复的元素 | 技巧 数学

热门文章

  1. MXNetError: [05:53:50] src/operator/nn/./cudnn/cudnn_convolution-inl.h:287
  2. Linux 指令总结
  3. Java HashMap的工作原理(转载)
  4. HDU - 6704 K-th occurrence (后缀数组+主席树/后缀自动机+线段树合并+倍增)
  5. linux学习:【第1篇】之安装vmware+Centos 6.9
  6. 阅读之Java多线程
  7. JS 全局作用域和局部作用域
  8. Mybatis-Plus的BaseMapper的用法
  9. jquery getScript动态加载JS方法改进详解
  10. [模板] KMP算法/Border