FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库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_PATH2、安装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_PATH3、安装gperf
由于字体配置库fontconfig依赖于gperf,因此要先安装该工具。Windows环境运行下面命令安装gperf:
pacman -S gperf4、安装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_PATH5、安装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_PATH6、安装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_PATH7、安装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_PATH8、启用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。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]