ffmpeg加入libass

可以看到subtitles滤镜会使用libass库。

1 libass编译

libass使用的版本是0.13.2。

libass下载地址:http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libass.html

依赖库为FreeType-2.6.5FriBidi-0.19.7Fontconfig-2.12.1,下载地址分别为:

http://www.linuxfromscratch.org/blfs/view/svn/general/freetype2.html

http://www.linuxfromscratch.org/blfs/view/svn/general/fribidi.html

http://www.linuxfromscratch.org/blfs/view/svn/general/fontconfig.html

1.1 FreeType编译

sed -ri "s:.*(AUX_MODULES.*valid):\1:" modules.cfg &&
 
sed -r "s:.*(#.*SUBPIXEL_(RENDERING|HINTING 2)) .*:\1:g" \
    -i include/freetype/config/ftoption.h  &&
./configure --prefix=/usr/local/freetype2 --disable-static &&
make
make install
或者./configure  make make install
或者
yum install freetype-devel.x86_64

1.2 FriBidi编译

./configure --prefix=/usr/local/fribidi  &&
make
make install
 

1.3 Fontconfig编译

推荐使用Fontconfig-2.12.1,否则编译libass会提示错误,

./configure --prefix=/usr/local/fontconfig \
            --sysconfdir=/etc    \
            --localstatedir=/var \
            --disable-docs       \
            --docdir=/usr/share/doc/fontconfig-2.12.1 \
            --enable-libxml2  &&
make
make install
/*替换新的fontconfig.pc*/
/*如果找不到libxml2,就安装libxml2-devel*/

1.4生成ass

当freetype,fribidi,fontconfig安装成功后,执行如下:
 
./configure --prefix=/usr/local/ass --disable-static &&
make
make install
 

2 编译ffmpeg

执行编译脚本(加上--enable-libass),如:
./configure --enable-gpl --enable-shared --prefix=/usr/local/ffmpegzf --enable-debug --disable-yasm --disable-optimizations --disable-asm --disable-stripping --enable-pthreads --enable-libx264 --enable-libass --enable-fontconfig
make 
make install

3遇到的问题

问题1
编译ass时,
 No package 'fribidi' found  Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
解决办法:
export PKG_CONFIG_PATH=/usr/local/fribidi/lib/pkgconfig:$PKG_CONFIG_PATH
 
问题2
编译ass时,
configure: error: Either DirectWrite (on Windows), CoreText (on OSX), or Fontconfig(Linux, other) is required. If you really want to compile withouta system font provider, add --disable-require-system-font-provider
解决办法:
安装Fontconfig-2.12.1,并执行export PKG_CONFIG_PATH=/usr/local/fontconfig/lib/pkgconfig:$PKG_CONFIG_PATH
 
问题3
编译ffmpeg时,
ERROR: libass not found using pkg-config
解决办法:
export PKG_CONFIG_PATH=/usr/local/ass/lib/pkgconfig:$PKG_CONFIG_PATH

subtitles

该滤镜调用libass库,讲字幕添添加到输入视频中。如果要使用该滤镜,需要在编译FFmpeg时使用--enable-libass配置项。这个滤镜需要配合使用 libavcodec和libavformat将输入的字幕文件转换为ASS(ASS格式见百度百科)格式。
滤镜命令参数:
filename,f
    该参数为必选项,用于指定输入的字幕文件。如果第一个参数没指定key,则讲该参数默认当做f的值。
original_size
    指定待添加字幕的视频的尺寸。参数的格式间https://ffmpeg.org/ffmpeg-utils.html#video-size-syntax。
fontsdir
    设置存放滤镜可以使用的字体文件的路径。这些字体中除了字体提供者使用的字体外,其他都会被滤镜使用。(暂不理解)
charenc
    设置字幕的字体编码格式,只有当编码格式不是utf-8时需要用到。该选项仅用于subtitles滤镜(如ass滤镜虽然标明参数与subtitles相同,但是依然没有charenc选项)。
stream_index,si
    设置字幕所在的stream索引。当字幕来源为一个视频时(如mkv文件),那么需要指定在视频文件中字幕所在的流的索引,通常一个视频文件中有三个流,一个视频流、一个音频流、一个字幕流。
force_style
    重写字幕的默认样式或脚本信息参数。该选项接受一个key=value形式的字符串,其中其中key为ASS样式的选项,value为只。每个key、value对之间用逗号隔开。


外挂字幕与内嵌字幕

外挂字幕相对于内嵌字幕来说对视频的质量损害就会小很多,外挂的意思就是 在视频之外单独运行的一种字幕文件,对视频本身的分辨率损害很小甚至为零。而内嵌的字面意思就是将视频连带外挂字幕用专有的录制软件重新将视频录制一遍,成为一个新的视频;这种方法虽然解决了视频体积过大和播放器不兼容等问题,但是在重新录制视频过程当中会无意识的损害原视频本身的码率,使重新录制出来的 视频分辨率大大不如原视频,所以在选择外挂与内嵌字幕时需结合自身情况考虑视频需要进行选择。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山西茄子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值