ffmpeg 编码字幕

Ali*_*232 6 ffmpeg

我知道这可能不是问这个问题的合适地方,但我无法从 StackExchange 组中找到更多相关的问答网站,所以这里是:

我需要为电影添加字幕,我已经有 avi 格式的视频和 srt 格式的字幕文件,现在我想将它们编码成一个文件。所以输出文件应该有 3 个流,视频,音频和字幕。当我尝试时,ffmpeg -i video.avi -i subtitle.srt combined.mkv它会理解我想要什么并记录

stream #0.0 -> #0.0
stream #0.1 -> #0.1
stream #1.0 -> #0.2
Run Code Online (Sandbox Code Playgroud)

但随后它会产生错误Encoder (codec id 0) not found for output stream #0.2。我尝试-newsubtitle在之后添加选项,combined.mkv但这似乎是不必要的,因为它生成了这样的日志:

stream #0.0 -> #0.0
stream #0.1 -> #0.1
stream #1.0 -> #0.2
stream #1.0 -> #0.3
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我将字幕编码器引入 ffmpeg(我也尝试了 mp4 格式的输出流,但报告了相同的错误)?顺便说一句,有人知道一种在生成的视频中保持原始视频质量的方法吗?

evi*_*oup 5

给出的答案将(有损地)重新编码输入文件的音频和视频,并且它只会选择一个音频和视频轨道(因此,如果您有多种语言,那么您就是 SOL)。在现代ffmpeg(或 avconv 为 Ubuntu/Debian 用户,相同的语法)中执行此操作的正确方法是:

ffmpeg -i input.avi -i input.srt -map 0 -map 1 -c copy output.mkv
Run Code Online (Sandbox Code Playgroud)

mkvtoolsnix 的一部分 MKVmerge 也可以很好地做到这一点

mkvmerge -o output.mkv input.avi subtitle.srt
Run Code Online (Sandbox Code Playgroud)