基于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/

posted on 2019-09-12 17:02  EasyNVR  阅读(342)  评论(0编辑  收藏  举报