升级FFmpeg 7后drawtext模块缺失,编译libharfbuzz适配FFmpeg的方法求助
老哥我太懂你这种升级后工具链突然罢工的烦躁了!FFmpeg 7确实对drawtext滤镜的依赖做了调整——现在它必须同时依赖libfreetype和libharfbuzz才能正常启用,光开freetype已经不够了。我之前踩过几乎一模一样的坑,给你一步步捋清楚怎么解决:
先搞定libharfbuzz的编译依赖
不同系统安装依赖的命令不一样,挑你对应的来:- Debian/Ubuntu系列:
sudo apt-get install libglib2.0-dev libfreetype6-dev libpng-dev - CentOS/RHEL系列:
sudo yum install glib2-devel freetype-devel libpng-devel - macOS(用Homebrew的话):
brew install glib freetype libpng
- Debian/Ubuntu系列:
编译安装libharfbuzz
- 拉取官方最新稳定版源码:
git clone https://github.com/harfbuzz/harfbuzz.git - 进入源码目录:
cd harfbuzz - 配置编译参数(这里指定安装到系统默认的/usr/local,确保pkg-config能找到):
./configure --prefix=/usr/local --enable-freetype --enable-glib - 编译并安装:
make -j$(nproc)(-j$(nproc)是用满CPU核心加速编译),然后sudo make install
- 拉取官方最新稳定版源码:
让pkg-config识别到harfbuzz
编译完后可能需要更新pkg-config的搜索路径,执行:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
验证一下是否生效:输入pkg-config --modversion harfbuzz,如果能输出具体的版本号,就说明没问题了重新编译FFmpeg
配置FFmpeg的时候一定要同时加上--enable-libfreetype和--enable-libharfbuzz,举个例子,你的配置命令大概是这样:./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libfreetype --enable-libharfbuzz [你之前用到的其他编译选项]
之后正常编译安装:make -j$(nproc),sudo make install
另外提个小注意点:如果你是把harfbuzz装在自定义路径(不是/usr/local),那还要记得设置LD_LIBRARY_PATH环境变量,确保FFmpeg编译时能找到对应的库文件。
备注:内容来源于stack exchange,提问作者Panama Jack




