我正在尝试将字幕硬编码到新视频中。原始视频包含字幕流,即总共有视频、音频和字幕(以及其他流):
...
Stream #0:0(eng): Video: h264 (High 10), yuv420p10le(progressive), 1280x720, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 4534142.86 tbc (default)
Stream #0:1(jpn): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp
Metadata:
title : 2.0 AAC
Stream #0:2(eng): Subtitle: ass (default)
Metadata:
title : FFF
Stream #0:3: Attachment: ttf
Metadata:
filename : DFKanTeiRyu-XB.ttf
mimetype : application/x-truetype-font
...
我使用了以下命令
ffmpeg -i input.mkv -c:v libx264 -c:a libmp3lame -c:s mov_text -map 0:0 -map 0:1 -map 0:2 output.mp4
它创建了一个输出文件,但字幕没有被硬编码(因此愚蠢的电视机没有显示/识别)。
如何转换带有字幕的视频?
答案1
您可以使用“字幕”过滤器直接从 mkv 刻录字幕。
只需添加-vf "subtitles='$PATH_TO_MKV':stream_index=$SUBTITLE_ID"
例子
ffmpeg -i input.mkv -c:v libx264 -vf "subtitles=input.mkv:stream_index=0" output.mkv
stream_index
参数是可选的。它从零开始,因此stream_index=1
将选择容器中的第二个字幕流。
有关更多信息,请参阅此处的“字幕”过滤器文档http://ffmpeg.org/ffmpeg-filters.html#subtitles
以及此链接的一般过滤指南https://trac.ffmpeg.org/wiki/FilteringGuide
答案2
方法是先提取屁股字幕:
ffmpeg -i input.mkv -c:s copy subtitle.ass
然后将它们“刻录”到视频中,如所解释的这里:
ffmpeg -i video.avi -vf "ass=subtitle.ass" out.avi