我正在寻找一种使用 ffmpeg 将字幕刻录到 mp4 视频的方法。
我使用以下命令来转换和刻录字幕,但它不起作用!
ffmpeg -i subtitle.vtt subtitle.srt
ffmpeg -i video.mp4 -i subtitle.vtt -c copy -c:s mov_text out.mp4
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Stream #1:0 -> #0:2 (webvtt -> mov_text)
Press [q] to stop, [?] for help
[mp4 @ 0x80aee0] Encoder did not produce proper pts, making some up.
frame= 2692 fps=1139 q=-1.0 Lsize= 2416kB time=00:01:29.83 bitrate= 220.3kbits/s
video:1264kB audio:1053kB subtitle:2 global headers:0kB muxing overhead 4.178210%
答案1
您的命令是混合字幕(放入视频文件中,以便客户端可以打开和关闭它们);不要将它们刻录到视频中。
由于您想将它们刻录到视频中,因此您应该首先将 .vtt 转换为 .ass (注意:您的 ffmpeg 必须是使用 libass 构建的):
ffmpeg -i subtitle.vtt subtitle.ass
然后将字幕刻录到视频中:
ffmpeg -i video.mp4 -vf ass=subtitle.ass out.mp4
现在 out.mp4 将刻录字幕。