随笔 - 1506  文章 - 1  评论 - 7  阅读 - 58万

基于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是否存在

EasyNVR

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

ENR090612.png

已经安装了freetype 库了,还是无法找到。
从ffbuild/config.log 中看到是pk-config这个工具在查找一个*.pc的文件,比如freetype就查找的是freetype2.pc这个文件。

EasyNVR

从命令行模式进入到/usr/lib/和/usr/local/lib/下,查找是否有一个pkgconfig的文件夹,找到后,看是否有需要的哪个后缀名为pc的文件,如下图所示

EasyNVR
存在查找的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功能模块

ENR090615.png

5)通过ldd 查询libavfilter.so 是否需要libfreetype.so 即可。
为什么是查询libavfilter,因为libavfilter功能模块中使用了freetype

6)如果需要增加其他外部第三方库,如增加libx264方法一样
Ffmpeg也提供了需要的地方库的下载地址
https://johnvansickle.com/ffmpeg/release-source/

posted on   EasyNVR  阅读(144)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示