我知道也许这不是提出这个问题的合适地方,但是我在 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
但随后它会产生错误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
有人能帮我把字幕编码器引入 ffmpeg 吗(我也尝试了 mp4 格式的输出流,但报告了同样的错误)?顺便问一下,有人知道如何在生成的视频中保持原始视频质量吗?
答案1
给出的答案将(有损地)重新编码输入文件的音频和视频,并且它将仅选择单个音频和视频轨道(因此,如果您有多种语言,那么您就没戏了)。正确的方法是现代的ffmpeg (或 Ubuntu/Debian 用户的 avconv,语法相同) 是:
ffmpeg -i input.avi -i input.srt -map 0 -map 1 -c copy output.mkv
MKVmerge 是 mkvtoolsnix 的一部分,也可以完美地做到这一点
mkvmerge -o output.mkv input.avi subtitle.srt
答案2
经过几次尝试,我似乎必须将其添加-scodec copy
到命令行中。我的意思ffmpeg -i video.avi -i subtitle.srt -scodec copy combined.mkv
是为我的视频添加字幕。