使用 FFmpeg 为视频嵌入硬字幕
使用 FFmpeg 为视频嵌入硬字幕,以及在 Windows 下为 subtitles
设置路径参数需要使用 /
而不是 \
作为路径分隔符。
对于视频字幕,我更喜欢视频文件 + 字幕文件的形式,这样既可以观看不带任何字幕和水印的原版视频,也可以随时开启字幕。但是某些场景下,播放器不支持自动加载字幕,因此尝试直接通过 FFmpeg 烧制硬字幕。
- 硬字幕:渲染在视频画面上的字幕,不可关闭
- 软字幕:在播放器支持的情况下,可以自由开关字幕
FFmpeg 常见的字幕烧制命令:
1 | ffmpeg -i input.mp4 -vf "subtitles=input.ass" -c:a copy output.mp4 |
字幕本身存在多种格式,常见的是 srt
格式,这种格式只能显示文本,不方便设置字体、字号等信息。将 srt
转成 ass
格式,就可以自由调整字体、字号、颜色等信息,实现专业字幕组的播放效果。
在实际使用 FFmpeg 烧制字幕时,有几个需要注意的点:
1)文件名带空格,需要使用双引号括起来
1 | ffmpeg -i "X Y Z.mp4" -vf "subtitles=X Y Z.ass" -c:a copy output.mp4 |
2)文件名带有路径信息,在 Windows 下使用 /
而不是 \
作为路径分隔符,不管是相对路径还是绝对路径,字幕文件名参数都需要这样处理,比如:
1 | ffmpeg -i "in\X Y Z.mp4" -vf "subtitles=in\X Y Z.ass" -c:a copy output.mp4 |
FFmpeg 会提示如下错误:
1 | [Parsed_subtitles_0 @ 000002b418a5e180] Unable to open inX Y Z.ass |
改成如下命令则可以正常处理:
1 | ffmpeg -i "in\X Y Z.mp4" -vf "subtitles=in/X Y Z.ass" -c:a copy output.mp4 |