使用FFmpeg从MKV文件中提取HDMV PGS字幕到SRT格式。

8

我一直在试图找出如何从mkv文件中提取hdmv pgs字幕,已经好几天了,但似乎做错了什么。这方面我是个新手,能否有人帮忙?我认为我需要设置编码器或设置编解码器参数来解决这个问题。

这是我正在尝试提取的字幕。

Stream #0:4(eng): Subtitle: hdmv_pgs_subtitle (default)
    Metadata:
      title           : Signs / Songs
      BPS-eng         : 7215
      DURATION-eng    : 00:22:43.946000000
      NUMBER_OF_FRAMES-eng: 96
      NUMBER_OF_BYTES-eng: 1230263
      _STATISTICS_WRITING_APP-eng: mkvmerge v28.0.0 ('Voice In My Head') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2018-10-22 23:45:00
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

我使用的是 ffmpeg 命令

ffmpeg -i "FILE PATH".mvk -map 0:4 "FILE PATH".srt

我也尝试过

ffmpeg -i "FILE PATH".mkv -map 0:4 pgssub "FILE PATH".srt

ffmpeg -i "FILE PATH".mkv -map 0:4 hdmv_pgs_Subtitles "FILE PATH".srt

除了一些其他变化,总是出现错误。

  • 目前只能从文本到文本或从位图到位图进行字幕编码
  • 无法找到适合'hdmv_pgs_subtitle'的输出格式
  • 不支持的字幕编解码:dvd_subtitle
  • 无法为流4(字幕:hdmv_pgs_subtitle(pgssub))找到编解码器参数:未指定大小。请考虑增加“analyzeduration”和“probesize”选项的值
  • 无法为输出文件#0写入标题(不正确的编解码器参数?):无效的参数
  • 或者它创建的srt文件大小为0kb。

请问有人可以告诉我我做错了什么,并向我展示要使用的正确代码。 我在mac上尝试过使用MKVToolNix,但得到一个奇怪的二进制文件,因为它可能处于错误的格式中。


尝试在Super User上发布。 - Rohit Gupta
或者也可以参考视频制作。在那里你会找到很多与ffmpeg相关的问题 - Marcuse7
字幕编辑器具备OCR功能,可以完成这项任务。 - undefined
2个回答

13

我的理解是PGS是位图字幕。换句话说,它是一堆图片,这些图片简单地放置在视频上方以显示字幕。

与此同时,SRT是文本字幕:它是一个包含每个字幕行文本和显示该行的时间的纯文本文件。

要将图片转换为文本,您需要某种OCR(光学字符识别)软件。据我所知,FFmpeg不支持OCR。

在网上简短搜索后,我发现Subtitle Edit可以从MKV中提取PGS,通过OCR运行并将结果保存为SRT。网上有一些相关指南,但如果您有进一步的问题,最好咨询Super User


5

使用ffmpeg仅提取字幕流到文件中,这个命令似乎可以解决问题:

ffmpeg -i video.mkv -map 0:s -c copy subtitles.sup
.sup 扩展名可以被我的 ffmpeg (v5.0) 正确提取这些字幕,不会出现错误。
然后你可以使用 Chortos-2 的答案,并与兼容的 OCR 程序一起将其转换为文本字幕。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接