ffmpeg版本: FFMEPEG 4.4
继上一篇简易播放器实现后,优化过程中,加载外挂字幕小记的过程和遇到的坑记录如下:
视频字幕分为三种。
内嵌字幕,字幕与视频图像合二为一,成为视频帧的一部分。
内封字幕,字幕封装在视频容器中,成为字幕流。
外挂字幕,也就字幕文件,如ass,srt等。
加载字幕需要使用subtitles过滤器。首先我们看下subtitles过滤器的参数
ffmpeg -h filter=subtitles
加载外挂字幕很简单,设置下过滤器参数中的filename即可。
ffmpeg -i .\beautlWorld.mp4 -vf subtitles=filename="'D\:\\测试工程\\sound\\01.ass'" -y ass.mp4
注意我用了双引号和单引号。如果字幕文件就在当前目录,则使用如下命令即可
ffmpeg -i .\beautlWorld.mp4 -vf subtitles=filename=01.ass -y ass.mp4
在代码中如果使用绝对路径有点区别,需要使用四个斜杆,具体形式如下:
char filterDesc[128];
sprintf(filterDesc,"subtitles=filename='D\\:\\\\测试工程\\\\sound\\\\01.ass'");