ffmpeg编译gl-transitions(centos7环境为基础)
前言
ffmpeg本身是一款开源的编解码软件,在4.3版本后加入xfade的转场,一次偶然逛发现了GRE大神使用WebGL编写的一些转场,效果十分酷炫,以及Travis Fischer大神写的将ffmpeg和gl-transitions链接到一起的文件,网上教程基本都是基于Ubuntu系统,转到centos上还是有很多的坑存在,最后查找了很多资料,踩了很多坑整理出这篇文档,有问题的可以在评论区讨论。
本文已在docker上实践成功,基于Linux without EGL路线。
安装gl-transitions依赖
首先更新的package至软件源中的最新版,改成国内源下载快一点。
1 | yum -y update |
安装必要的package
1 | yum -y install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel libxml2-devel mesa* freeglut* |
可以创建一个ffmpeg_sources目录,下面所有的文件都安装在这个包下面
1 | 我这里是放在了/usr/local下面 |
centos7的安装cmake版本基本是2.8左右的,后续依赖的glfw需要升级cmake。
1 | 移除旧的cmake版本 |
然后安装OpenGL相关库(glew)
1 | yum -y install glew glew-devel |
安装glfw3
1 | cd /usr/local/ffmpeg_sources |
安装Xvfb
1 | yum -y install Xvfb |
安装ffmpeg
一般下载的ffmpeg都是官网编译好的,这次要下载源码自行编译
全版本地址:https://ffmpeg.org/releases/
选择合适的版本,本文选择的是linux下4.4版本(https://ffmpeg.org/releases/ffmpeg-4.4.tar.gz)。
在下载之前,我们先下好ffmepg的依赖。首先安装所需的汇编依赖。
安装nasm
1 | cd /usr/local/ffmpeg_sources |
安装yasm
1 | cd /usr/local/ffmpeg_sources |
安装libx264
1 | cd /usr/local/ffmpeg_sources |
下载ffmpeg
1 | cd /usr/local/ffmpeg_sources |
下载ffmpeg-gl-transition
1 | cd /usr/local/ffmpeg_sources |
拷贝之后,ffmpeg-gl-transition还有个diff文件,其实就是在ffmpeg/libavfilter里加入要编译vf_gltransition.c这个文件。
所以我们进入libavfilter文件夹
1 | 在libavfilter/Makefile里加入 |
而后我们还需要修改我们刚刚复制进来的vf_gltransition.c,去掉宏定义,这里直接引用原作者的话
Linux without EGL
If you don’t want to use EGL, just comment out this line in
vf_gltransition.c
1
2
3 #ifndef __APPLE__
# define GL_TRANSITION_USING_EGL // remove this line if you don't want to use EGL
#endif
在修改完成后,开始编译ffmpeg
1 | cd /usr/local/ffmpeg_sources/ffmpeg-4.4 |
完成后,需要启动Xvfb,直接守护进程启动
1 | nohup Xvfb :1 -screen 0 1280x1024x16 >/dev/null 2>&1 & |
最后可以执行命令测试下了
1 | 转场文件在https://github.com/gl-transitions/gl-transitions |
本文仅提供参考,如有问题可留言,或在本文出现的所有链接中寻找答案,还有百度或谷歌。
推荐Asa_Ho博主写了很多魔改,地址ffmpeg 再编译使用 ffmpeg-gl-transition
参考链接
https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
https://github.com/transitive-bullshit/ffmpeg-gl-transition