FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。

​libass是一个适用于ASS和SSA格式(Advanced Substation Alpha/Substation Alpha)的字幕渲染器,支持的字幕类型包括srt、ass等,凡是涉及到给视频画面添加字幕,均需事先集成libass。

《FFmpeg开发实战:从零基础到短视频上线》一书的“7.3.1 Linux环境安装libass”介绍了如何在Linux环境给FFmpeg集成libass,其实在Windows环境也能给FFmpeg集成libass,具体的集成步骤说明如下。注意:下列的所有命令均需在MSYS窗口中执行。

1、安装freetype

fontconfig、fribidi、harfbuzz、libass都依赖于freetype库,所以要先安装该库。freetype的安装步骤说明如下。
(1)freetype的下载页面是 https://download.savannah.gnu.org/releases/freetype/ ,比如2023年8月发布的freetype-2.13.2,该版本的源码下载地址是 https://download.savannah.gnu.org/releases/freetype/freetype-2.13.2.tar.gz

tar zxvf freetype-2.13.2.tar.gz
cd freetype-2.13.2

(2)进入解压后的freetype目录,运行下面命令配置freetype。

./configure --prefix=/usr/local/freetype

(3)运行下面命令编译freetype。

make

(4)编译完成后,运行下面命令安装freetype。

make install

(5)给环境变量PKG_CONFIG_PATH添加freetype的pkgconfig路径,也就是在/etc/profile文件末尾添加如下一行内容:

export PKG_CONFIG_PATH=/usr/local/freetype/lib/pkgconfig:$PKG_CONFIG_PATH

然后执行下面命令重新加载环境变量:

source /etc/profile

执行下面命令查看当前的环境变量,发现PKG_CONFIG_PATH的修改已经奏效。

env | grep PKG_CONFIG_PATH

2、安装libxml2

由于字体配置库fontconfig依赖于libxml2库,因此要先安装该库。libxml2的安装步骤说明如下。
(1)libxml2的下载页面是 http://xmlsoft.org/sources/ ,比如2010年11月发布的libxml2-2.7.8,该版本的源码下载地址是 http://xmlsoft.org/sources/libxml2-2.7.8.tar.gz 。执行下面命令解压下载好的压缩包:

tar zxvf libxml2-2.7.8.tar.gz
cd libxml2-2.7.8

(2)修改include/libxml/xmlexports.h,在文件开头增加下面一行:

#define LIBXML_STATIC

(3)进入解压后的libxml2目录,运行下面命令配置libxml2。

./configure --prefix=/usr/local/libxml2

(4)运行下面命令编译libxml2。

make

(5)编译完成后,运行下面命令安装libxml2。

make install

(6)给环境变量PKG_CONFIG_PATH添加libxml2的pkgconfig路径,也就是在/etc/profile文件末尾添加如下一行内容:

export PKG_CONFIG_PATH=/usr/local/libxml2/lib/pkgconfig:$PKG_CONFIG_PATH

然后执行下面命令重新加载环境变量:

source /etc/profile

执行下面命令查看当前的环境变量,发现PKG_CONFIG_PATH的修改已经奏效。

env | grep PKG_CONFIG_PATH

3、安装gperf

由于字体配置库fontconfig依赖于gperf,因此要先安装该工具。Windows环境运行下面命令安装gperf:

pacman -S gperf

4、安装fontconfig

fontconfig是一款字体配置工具,它能够自动检测字库,以及管理和配置字库。fontconfig的安装步骤说明如下。
(1)fontconfig的下载页面是 https://www.freedesktop.org/software/fontconfig/release/ ,比如2023年1月发布的fontconfig-2.14.2,该版本的源码下载地址是 https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.14.2.tar.gz 。执行下面命令解压下载好的压缩包:

tar zxvf fontconfig-2.14.2.tar.gz
cd fontconfig-2.14.2

(2)进入解压后的fontconfig目录,运行下面命令配置fontconfig。

./configure --prefix=/usr/local/fontconfig --enable-libxml2 --disable-docs

注意:如果没安装libxml2,运行configure就会报错“* expat is required. or try to use --enable-libxml2”。
(3)运行下面命令编译fontconfig。

make

(4)编译完成后,运行下面命令安装fontconfig。

make install

(5)给环境变量PKG_CONFIG_PATH添加fontconfig的pkgconfig路径,也就是在/etc/profile文件末尾添加如下一行内容:

export PKG_CONFIG_PATH=/usr/local/fontconfig/lib/pkgconfig:$PKG_CONFIG_PATH

然后执行下面命令重新加载环境变量:

source /etc/profile

执行下面命令查看当前的环境变量,发现PKG_CONFIG_PATH的修改已经奏效。

env | grep PKG_CONFIG_PATH

5、安装fribidi

fribidi是个中东字体增强库,它实现了Unicode字符集的双向算法,以便处理阿拉伯语、希伯来语这些中东语言。fribidi的安装步骤说明如下。
(1)fribidi的下载页面是 https://github.com/fribidi/fribidi/releases ,比如2023年5月发布的fribidi-1.0.13,该版本的源码下载地址是 https://github.com/fribidi/fribidi/releases/download/v1.0.13/fribidi-1.0.13.tar.xz 。注意要下载扩展名是tar.xz的压缩包,不能下载扩展名是tar.gz的压缩包,因为tar.gz里面没有configure文件。执行下面命令解压下载好的压缩包:

tar xvf fribidi-1.0.13.tar.xz
cd fribidi-1.0.13

(2)进入解压后的fribidi目录,运行下面命令配置fribidi。

./configure --prefix=/usr/local/fribidi

(3)运行下面命令编译fribidi。

make

(4)编译完成后,运行下面命令安装fribidi。

make install

(5)给环境变量PKG_CONFIG_PATH添加fribidi的pkgconfig路径,也就是在/etc/profile文件末尾添加如下一行内容:

export PKG_CONFIG_PATH=/usr/local/fribidi/lib/pkgconfig:$PKG_CONFIG_PATH

然后执行下面命令重新加载环境变量:

source /etc/profile

执行下面命令查看当前的环境变量,发现PKG_CONFIG_PATH的修改已经奏效。

env | grep PKG_CONFIG_PATH

6、安装harfbuzz

harfbuzz是一个文本塑形引擎,它能够将Unicode字符转换为格式正确的字形输出,可用于调试和预览字体效果。harfbuzz的安装步骤说明如下。
(1)harfbuzz的最新源码在 https://github.com/harfbuzz/harfbuzz ,但是高版本harfbuzz容易编译失败,实际应用采取1.2.7版本就够了。各版本harfbuzz的下载页面是 https://www.freedesktop.org/software/harfbuzz/release/ ,比如1.2.7版本的源码下载地址是 https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-1.2.7.tar.bz2 。执行下面命令解压下载好的压缩包:

tar xvf harfbuzz-1.2.7.tar.bz2
cd harfbuzz-1.2.7

(2)进入解压后的harfbuzz目录,运行下面命令配置harfbuzz。

./configure --prefix=/usr/local/harfbuzz --disable-gtk-doc

(3)运行下面命令编译harfbuzz。

make

(4)编译完成后,运行下面命令安装harfbuzz。

make install

(5)给环境变量PKG_CONFIG_PATH添加harfbuzz的pkgconfig路径,也就是在/etc/profile文件末尾添加如下一行内容:

export PKG_CONFIG_PATH=/usr/local/harfbuzz/lib/pkgconfig:$PKG_CONFIG_PATH

然后执行下面命令重新加载环境变量:

source /etc/profile

执行下面命令查看当前的环境变量,发现PKG_CONFIG_PATH的修改已经奏效。

env | grep PKG_CONFIG_PATH

7、安装libass

确认以上的freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz等库全都正确安装之后,再来安装字幕渲染器libass。libass的安装步骤说明如下。
(1)libass的源码页面是 https://github.com/libass/libass ,下载页面是 https://github.com/libass/libass/releases ,比如2023年2月发布的libass-0.17.1,该版本的源码下载地址是 https://github.com/libass/libass/releases/download/0.17.1/libass-0.17.1.tar.gz 。执行下面命令解压下载好的压缩包:

tar zxvf libass-0.17.1.tar.gz
cd libass-0.17.1

(2)进入解压后的libass目录,运行下面命令配置libass。

./configure --prefix=/usr/local/libass

(3)运行下面命令编译libass。

make

(4)编译完成后,运行下面命令安装libass。

make install

(5)给环境变量PKG_CONFIG_PATH添加libass的pkgconfig路径,也就是在/etc/profile文件末尾添加如下一行内容:

export PKG_CONFIG_PATH=/usr/local/libass/lib/pkgconfig:$PKG_CONFIG_PATH

然后执行下面命令重新加载环境变量:

source /etc/profile

执行下面命令查看当前的环境变量,发现PKG_CONFIG_PATH的修改已经奏效。

env | grep PKG_CONFIG_PATH

8、启用libass

由于FFmpeg默认未启用libass,因此需要重新配置FFmpeg,标明启用libass,然后重新编译安装FFmpeg。FFmpeg的Windows环境完整编译过程参见《FFmpeg开发实战:从零基础到短视频上线》一书的“8.1 Windows环境编译FFmpeg”,详细的启用步骤说明如下。
(1)确保下列路径均已加载至环境变量PKG_CONFIG_PATH

export PKG_CONFIG_PATH=/usr/local/freetype/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/libxml2/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/fontconfig/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/fribidi/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/harfbuzz/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/libass/lib/pkgconfig:$PKG_CONFIG_PATH

(2)执行以下命令,在libxml2的安装路径下补充一个xmlversion.h,因为配置FFmpeg的时候会检查。

mkdir -p /usr/local/libxml2/include/libxml2/libxml2/libxml
cp /usr/local/libxml2/include/libxml2/libxml/xmlversion.h /usr/local/libxml2/include/libxml2/libxml2/libxml/xmlversion.h

(3)回到FFmpeg源码的目录,执行以下命令重新配置FFmpeg,主要增加启用libass。(增加了选项--enable-libass --enable-libfribidi --enable-libxml2 --enable-fontconfig)

./configure  --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libdavs2 --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libfreetype --enable-sdl2 --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libopus --enable-libvpx --enable-libass --enable-libfribidi --enable-libxml2 --enable-fontconfig --enable-openssl --enable-iconv --enable-zlib --extra-cflags='-I/usr/local/lame/include -I/usr/local/libogg/include -I/usr/local/amr/include' --extra-ldflags='-L/usr/local/lame/lib -L/usr/local/libogg/lib -L/usr/local/amr/lib' --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32

(4)运行下面命令编译FFmpeg。

make clean
make -j4

(5)执行下面命令安装FFmpeg。

make install
mv /usr/local/ffmpeg/bin/*.lib /usr/local/ffmpeg/lib/
cp /usr/local/libxml2/bin/*.dll /usr/local/ffmpeg/bin
cp /usr/local/freetype/bin/*.dll /usr/local/ffmpeg/bin
cp /usr/local/fontconfig/bin/*.dll /usr/local/ffmpeg/bin
cp /usr/local/fribidi/bin/*.dll /usr/local/ffmpeg/bin
cp /usr/local/harfbuzz/bin/*.dll /usr/local/ffmpeg/bin
cp /usr/local/libass/bin/*.dll /usr/local/ffmpeg/bin

(6)运行以下命令查看FFmpeg的版本信息。

ffmpeg -version

查看控制台回显的FFmpeg版本信息,找到“--enable-libass”,说明FFmpeg正确启用了字幕渲染器libass。

目录
相关文章
|
24天前
|
JavaScript 前端开发 持续交付
Prettier 高级应用:集成 CI/CD 流水线与插件开发
【10月更文挑战第18天】Prettier 是一款流行的代码格式化工具,它能够自动将代码格式化成一致的风格,从而提高代码的可读性和维护性。对于希望进一步发挥 Prettier 潜力的高级用户而言,将 Prettier 集成到持续集成(CI)和持续部署(CD)流程中,确保每次提交的代码都符合团队标准,是非常重要的。此外,通过开发自定义插件来支持更多语言或扩展 Prettier 的功能也是值得探索的方向。本文将详细介绍这两方面的内容。
40 2
|
30天前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
48 0
|
1月前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
115 0
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
150 0
|
Windows 数据安全/隐私保护 网络协议
|
3天前
|
监控 安全 网络安全
Windows Server管理:配置与管理技巧
Windows Server管理:配置与管理技巧
19 3
|
7天前
|
存储 安全 网络安全
Windows Server 本地安全策略
由于广泛使用及历史上存在的漏洞,Windows服务器成为黑客和恶意行为者的主要攻击目标。这些系统通常存储敏感数据并支持关键服务,因此组织需优先缓解风险,保障业务的完整性和连续性。常见的威胁包括勒索软件、拒绝服务攻击、内部威胁、恶意软件感染等。本地安全策略是Windows操作系统中用于管理计算机本地安全性设置的工具,主要包括用户账户策略、安全选项、安全设置等。实施强大的安全措施,如定期补丁更新、网络分段、入侵检测系统、数据加密等,对于加固Windows服务器至关重要。
|
1月前
|
边缘计算 安全 网络安全
|
1月前
|
数据安全/隐私保护 Windows
安装 Windows Server 2019
安装 Windows Server 2019
|
1月前
|
网络协议 Windows
Windows Server 2019 DHCP服务器搭建
Windows Server 2019 DHCP服务器搭建

热门文章

最新文章