可以看到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对之间用逗号隔开。


外挂字幕与内嵌字幕

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


GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐