使用 avconv 刻录字幕吗?

使用 avconv 刻录字幕吗?

我有一个 mkv 文件,想用 将其转换为 DVD 兼容的 mpg 文件avconv。我怎样才能从同一个 mkv 文件中刻录一个字幕流?

avconv -i input.mkv -map 0:0 -map 0:1 -target pal-dvd -aspect 16:9 -q:v 1 -acodec mp2 -ac 2 -ab 128k output.mpg

答案1

基于文本的字幕

ffmpeg 有一个subtitles筛选可以将 SRT 文件刻录到视频流中。--enable-libass不过你需要编译 ffmpeg。我不认为 Libav 有类似的东西,至少看过可用过滤器

您首先需要提取字幕。-map 0:s:0选择第一个字幕流作为输出,并-c:s:0为其选择编解码器 - 以确保它真的是 SRT。

ffmpeg -i input.mkv -an -vn -map 0:s:0 -c:s:0 srt subtitles.srt

然后,把它们烧掉。

ffmpeg -i input.mkv -map 0:0 -map 0:1 -target pal-dvd -aspect 16:9 -q:v 1 \
-c:a mp2 -ac 2 -b:a 128k -filter:v subtitles=subtitles.srt output.mpg

笔记:

  • 上述命令假设输入中的流0:00:1分别是视频和音频流。如果您只想阻止字幕包含在输出文件中,那么您也可以添加-sn以完全禁用它们。

  • 您必须更改-ab-b:a,因为前者对于 ffmpeg 来说是一个不存在的选项。


基于图像的字幕

如果您的输入有基于图像的字幕,如 HDMV PG(似乎 MakeMKV 正在创建这些字幕,而其他工具无法提取它们),您可以尝试使用覆盖过滤器将它们刻录进去:

ffmpeg -i input.mkv -filter_complex "[0:v][0:s]overlay[v]" -map [v] -map 0:a \
-target pal-dvd -aspect 16:9 -q:v 1 -c:a mp2 -ac 2 -b:a 128k output.mpg

这也解释了在 FFmpeg Wiki 上

如果你的字幕与原始电影的尺寸不同(例如,因为视频流缩小了,但字幕没有缩小),你可以尝试使用选项-canvas_size设置尺寸。

相关内容