libass简明教程

本文是libass库的简明教程,涵盖了libass的编译过程,包括解决Ubuntu 18.04上的编译问题,以及如何测试编译完成的demo。此外,还解析了libass的主要接口,包括全局接口、字幕解析和渲染接口。最后讨论了ffmpeg中如何使用libass,通过示例代码展示了ass过滤器的初始化和配置。
摘要由CSDN通过智能技术生成

[时间:2019-05] [状态:Open]
[关键词:字幕,libass,字幕渲染,ffmpeg, subtitles, video filter]

0 引言

libass库则是一个轻量级的对ASS/SSA格式字幕进行渲染的开源库。该库使用C编写,效率较高。据官方说明,libass和VSFilter兼容性最好~
libass依赖的第三方库是FreeType,FriBidi,NASM,Fontconfig(可选),HarfBuzz(可选)。

FreeType是libass使用的通用字体渲染库,也是很强大的库,作用是把系统的字库渲染成单张位图。

虽然官方源码提供的说明已经相对来说足够了,我编写此文主要的目的是学习下如何使用该库,并了解其基本构成。本文将包括:

  • libass如何编译
  • libass中demo源码解读
  • libass主要对外接口
  • ffmpeg中libass调用

1 libass编译

1.1 libass编译

首先从https://github.com/libass/libass.git中下载对应源码。
进入git所在的根目录,对应的可执行文件只有一个,autogen.sh,执行之。
这样会在当前目录下生成configure脚本,运行下面命令:

./configure

我的ubuntu(18.04)主机上遇到下面问题:

configure: error: Package requirements (fribidi >= 0.19.0) were not met:

No package 'fribidi' found

好吧。貌似是没有fribidi这个库,可以从https://github.com/fribidi/fribidi中下载对应源码,然后编译,命令类似:

./autogen.sh
./configure
make
sudo make install

然后重新运行以下命令:

./configure
make

这样基本编译完成。最终生成的libass.a位于./libass/.libs/目录下。

1.2 测试demo编译

当然在./test目录下还提供了一个libass库测试demo。为了编译之,我们需要将之前生成的libass.a拷贝到./test/.lib/目录下,并在./test目录下执行make命令,这样就会生成最后的可验证的测试程序(默认名字为test)。当然如果在编译中遇到错误,请按照错误提示添加确实的依赖项。比如我的主机遇到以下编译错误:

test-test.o: In function `write_png':
./test/test.c:53: undefined reference to `png_create_write_struct'
./test/test.c:54: undefined reference to `png_create_info_struct'
./test/test.c:57: undefined reference to `png_set_longjmp_fn'
./test/test.c:58: undefined reference to `png_destroy_write_struct'
./test/test.c:69: undefined reference to `png_init_io'
./test/test.c:70: undefined reference to `png_set_compression_level'
./test/test.c:72: undefined reference to `png_set_IHDR'
./test/test.c:76: undefined reference to `png_write_info'
./test/test.c:78: undefined reference to `png_set_bgr'
./test/test.c:84: undefined reference to `png_write_image'
./test/test.c:85: undefined reference to `png_write_end'
./test/test.c:86: undefined reference to `png_destroy_write_struct'
collect2: error: ld returned 1 e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值