基于EasyNVR摄像机无插件直播流媒体服务器实现文字滤镜处理功能
最近遇到有客户需要用ffmpeg对图像进行文字滤镜处理,增加各种文字效果,需要ffmpeg支持此功能,因此需要在编译ffmpeg时候加上此功能模块 –enable-libfreetype。
针对此问题,我们进行了关于文字滤镜处理功能模块的开发工作,具体流程如下:
添加freetype功能模块,由于默认ffmpeg是不支持freetype编解码的,freetype是第三方库,需要先下载编译生成库,然后在编译ffmpeg的时候添加此编译选项。
步骤如下:
1.编译生成freetype库:
1)下载地址:
wget http://download.savannah.gnu.org/releases/freetype/freetype-2.8.tar.gz或者从ffmpeg网站去下载
https://johnvansickle.com/ffmpeg/release-source/
2)编译freetype库
tar -vxf freetype-2.8.tar.gz
cd freetype-2.8
./configure
make
make install
3)安装完成后,默认安装到/usr/local/ 目录下,到/usr/local/lib/下查看libfreetype.so是否存在
https://ffmpeg.org/ffmpeg-filters.html#drawboxffmpeg freetype使用示例
2.安装ffmpeg
1)官网下载 http://ffmpeg.org/download.html下载所需要版本代码,目前我们使用的是4.0.3
http://www.ffmpeg.org/releases/ 各个历史版本下载
2)下载完成后进行解压
tar –vxf ffmpeg-4.0.3.tar.xz
cd ffmpeg-4.0.3
./configure --enable-shared --disable-yasm --enable-libx264 --enable-gpl --enable-libfreetype
*注意!!!重点问题,此处进行—enable-libfreetype 会有出现如下问题
ERROR: freetype2 not found using pkg-config
已经安装了freetype 库了,还是无法找到。
从ffbuild/config.log 中看到是pk-config这个工具在查找一个*.pc的文件,比如freetype就查找的是freetype2.pc这个文件。
从命令行模式进入到/usr/lib/和/usr/local/lib/下,查找是否有一个pkgconfig的文件夹,找到后,看是否有需要的哪个后缀名为pc的文件,如下图所
存在查找的pc
问题解决:
1)执行export命令把这个路径export出来:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/
注意上述命令中是/usr/local/lib/pkgconfig,这个每个人的路径都不相同,不能设置错了。
2)可以通过以下命令查看PKG_CONFIG_PATH值
echo $PKG_CONFIG_PATH
make
make install
3)默认安装到/usr/local/ 目录下,也可以通过–prefix=/usr/local/进行指定目录,一般默认即可
4)查询下编译的ffmpeg是否包含freetype功能模块
5)通过ldd 查询libavfilter.so 是否需要libfreetype.so 即可。
为什么是查询libavfilter,因为libavfilter功能模块中使用了freetype
6)如果需要增加其他外部第三方库,如增加libx264方法一样
Ffmpeg也提供了需要的地方库的下载地址
https://johnvansickle.com/ffmpeg/release-source/