​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的时候会检查<libxml2/libxml/xmlversion.h>。

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。

FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass的更多相关文章

  1. FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建

    前言   本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8.   FFmpeg简介   FFmpeg是领先的多媒体框架,能够解码 ...

  2. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  4. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  5. FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  6. FFmpeg开发笔记(二)搭建Windows系统的开发环境

    由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的.不过若有已经 ...

  7. FFmpeg开发笔记(一)搭建Linux系统的开发环境

    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库.不过考虑到刚开始仅仅调用 ...

  8. FFmpeg开发实战(一):FFmpeg 打印日志

    在Visual Studio 开发(二):VS 2017配置FFmpeg开发环境一文中,我们配置好了FFmpeg的开发环境,下面我们开始边实战,边学习FFmpeg. 首先,我们要学习的就是FFmpeg ...

  9. Windows环境下ARM集成开发环境的搭建与使用

    Windows环境下能够使用Eclipse IDE for C/C++ Developers来搭建ARM开发环境 本文地址:http://blog.csdn.net/u011833609/articl ...

  10. [开发笔记]-控制Windows Service服务运行

    用代码实现动态控制Service服务运行状态. 效果图: 代码: #region 启动服务 /// <summary> /// 启动服务 /// </summary> /// ...

随机推荐

  1. torch的cuda版本安装

    1.拥有英伟达显卡NVIDIA NVIDIA CUDA各版本下载链接(包括最新11版本和以往10.2版本) 以下是从NVIDIA官网转过来的链接,方便需要下载各种版本CUDA的同学.(借阅) http ...

  2. Windows上部署spring boot jar项目

    1.下载地址:https://github.com/winsw/winsw/releases 下载红色框内三个文件就够了. sample-allOptions.xml 所有配置参考 sample-mi ...

  3. KingbaseES V8R6 表空间加密

    透明存储加密优势 透明存储加密可确保加密敏感数据满足合规性要求,并提供简化加密操作的功能,优势如下: 作为安全管理员,您可以确保敏感数据已加密,因此在存储介质或数据文件被盗或入侵者试图从操作系统访问数 ...

  4. KingbaseES V8R6 集群运维案例 -- 磁盘空间问题导致集群故障

    某商业银行生产系统KingbaseES读写分离集群主库出现故障,导致集群主备发生切换.客户要求说明具体的原因. KingbaseES读写分离集群基本信息: KingbaseES集群信息   操作系统 ...

  5. KingbaseES V8R6 中unlogged表

    前言 KingbaseESV8R6有一种表称为unlogged,在该表新建的索引也属于unlogged.和普通表的区别是,对该表进行DML操作时候不将该表的变更记录变更写入到wal文件中.在数据库异常 ...

  6. SQL日期操作函数(CONCAT、DATE_FORMAT、LAST_DAY)

    获取某月底日期:SELECT LAST_DAY('2021-07-01') AS month_end_date; 拼接年月格式: CONCAT(DATE_FORMAT(hp.planned_payme ...

  7. HTTPS&SPDY&HTTP2&QUIC&HTTP3

    HTTPS 密钥交换,加密和解密 SPDY&HTTP2 QUIC&HTTP3

  8. Win7 局域网服务器 - FTP 服务器搭建指南

    1. 打开 "开始" 菜单,找到控制面板 2. 选择 "程序" 3. 选择 "打开或关闭 Windows 功能" 4. 选择 "I ...

  9. Python 爬虫之 xpath

    0x01 XML 基础 xpath 是在 XML 文档中搜索内容的一门语言 HTML 是 XML 的一个子集 XML 代码举例: <book> <isbn>978xxxxxxx ...

  10. SQL 转置计算

    转置即旋转数据表的横纵方向,常用来改变数据布局,以便用新的角度观察.有些转置算法比较简单,比如行转列.列转行.双向转置:有些算法变化较多,比如动态转置.转置时跨行计算.关联转置等.这些转置算法对日常工 ...