本文最后更新于:2015-05-25 13:12:00原文:http://www.yaosansi.com/post/ffmpeg-burn-subtitles-into-video
向视频文件里添加字幕是件很常见的事,本文使用FFmpeg将字幕文件集成到视频文件里。
在CentOS上编译安装FFmpeg
字幕文件转换字幕文件有很多种,常见的有 .srt , .ass 文件等,下面使用FFmpeg进行相互转换。
将.srt文件转换成.ass文件
1ffmpeg -i subtitle.srt subtitle.ass
将.ass文件转换成.srt文件
1ffmpeg -i subtitle.ass subtitle.srt
集成字幕,选择播放这种字幕集成比较简单,播放时需要在播放器中选择相应的字幕文件。
1ffmpeg -i input.mp4 -i subtitles.srt -c:s mov_text -c:v copy -c:a copy output.mp4
嵌入SRT字幕到视频文件单独SRT字幕字幕文件为subtitle.srt
1ffmpeg -i video.avi -vf subtitles=subtitle.srt out.avi
嵌入在MKV等容器的字幕将video.mkv中的字幕(默认)嵌入到out.avi文件
1ffmpeg -i video.mkv -vf subtitles=video.mkv out.avi
将video.mkv中的字幕(第二个)嵌入到out.avi文件
1ffmpeg -i video.mkv -vf subtitles=video.mkv:si=1 out.avi
嵌入ASS字幕到视频文件1ffmpeg -i video.avi -vf "ass=subtitle.ass" out.avi
不能加载fontconfig文件1234Fontconfig error: Cannot load default config file[Parsed_ass_0 @ 0000000002bfa3e0] No usable fontconfig configuration file found, using fallback.Fontconfig error: Cannot load default config file
出现类似错误的原因是无法加载字体配置文件。
环境变量FFmpeg使用的默认字体文件是使用系统环境变量中对应的文件位置。
默认文件名:fonts.conf
环境变量 FONTCONFIG_FILE 可以覆盖默认配置文件环境变量 FONTCONFIG_PATH 可以覆盖默认配置文件目录
Linux 默认配置文件:fonts.conf
使用步骤:
以root权限登录
建立/etc/fonts目录
下载fonts.conf文件到/etc/fonts目录
设置fonts.conf文件权限为可读
Linux/Mac 系统在~/.bashrc 最后添加:
1export FONTCONFIG_PATH=/opt/X11/lib/X11/fontconfig
使之有效:
1source ~/.bashrc
编辑 /opt/X11/lib/X11/fontconfig/fonts.conf 在字体目录添加 /Library/Fonts
123456
Windows系统在系统环境变量中添加:
name: FONTCONFIG_PATHvalue: J:/ffmpeg (我本机ffmpeg目录,与fonts.conf同目录即可)
将fonts.conf文件放至上述指定目录。
以下为yaosansi使用的fonts.conf文件:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
参考
http://www.ffmpeg.org/
https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo
http://ffmpeg.org/ffmpeg-all.html#toc-subtitles-1
http://en.wikipedia.org/wiki/SubStation_Alpha#Advanced_SubStation_Alpha
http://ffmpeg.org/ffmpeg-filters.html#ass
http://www.stata.com/support/faqs/unix/fontconfig-error/
http://freedesktop.org/software/fontconfig/fontconfig-user.html
http://www.freedesktop.org/wiki/Software/fontconfig/
http://www.stata.com/support/faqs/unix/fonts.conf/lux64/fonts.conf
http://blog.neten.de/posts/2013/10/06/use-ffmpeg-to-burn-subtitles-into-the-video/