视频文件中除了音频、视频有时还会有字幕,本章讲解 ffmpeg 添加字幕。
在视频播放器上添加字幕,有两种常见的做法:
一种是在视频中硬编码(即直接将字幕嵌入视频画面中),
另一种是软编码(即将字幕作为独立文件加载到播放器中)。
1. 硬编码字幕到视频中
硬编码字幕是将字幕直接嵌入到视频帧中,视频播放时字幕将无法关闭。使用 ffmpeg
可以很容易地做到这一点。
使用 ffmpeg
在视频上硬编码字幕
首先,确保你有一个字幕文件,常见的字幕文件格式是 .srt
(SubRip Subtitle)格式。以下是一个 ffmpeg
命令的示例,演示如何将 .srt
字幕文件硬编码到视频中。
命令行:
ffmpeg -i input_video.mp4 -i subtitle.srt -c:v libx264 -c:a mov_text -preset fast output_video.mp4
参数解释:
-i input_video.mp4
:输入的视频文件。-i subtitle.srt
:输入的字幕文件。-c:v libx264
:使用libx264
编码器对视频进行解码。-c:a copy
:将音频流直接复制,不进行编码。-c:s mov_text
:使用mov_text
编解码器将字幕格式设置为支持视频容器的字幕格式(适用于.mp4
格式)。-preset fast
:设置编码的速度与压缩的平衡,fast
是一种比较快速的选择。output_video.mp4
:输出的视频文件,字幕已嵌入。
2. 软编码字幕(字幕与视频文件分开)
软编码字幕意味着字幕和视频是分开存储的,播放时可以选择显示或隐藏字幕。你可以将字幕和视频封装到一个容器中(如.mp4
),这使得字幕在视频播放时动态加载。
使用 ffmpeg
将字幕作为软字幕封装到视频中
ffmpeg -i input_video.mp4 -i subtitle.srt -c:v copy -c:s mov_text output_video_with_subtitles.mp4
参数解释:
-i input_video.mp4
:输入的视频文件。-i subtitle.srt
:输入的字幕文件。-c:v copy
:直接复制视频流,不进行编码。-c:a copy
:直接复制音频流,不进行编码。-c:s mov_text
:将字幕文件格式转换为适用于.mp4
的字幕格式。output_video_with_subtitles.mp4
:输出的视频文件,包含软字幕。
3. 使用 Python 进行字幕添加
如果你希望通过 Python 编程来添加字幕,可以使用 ffmpeg-python
库来实现。下面是如何在 Python 中硬编码字幕到视频的代码示例。
使用 ffmpeg-python
扫描二维码关注公众号,回复:
17618640 查看本文章
