ffmpeg 将 hdmv pgs 字幕从 mkv 提取到 srt

bre*_*rea 4 ffmpeg extract subtitle mkv

几天来,我一直试图弄清楚如何从 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
Run Code Online (Sandbox Code Playgroud)

我正在使用的 ffmpeg 命令是

ffmpeg -i "FILE PATH".mvk -map 0:4 "FILE PATH".srt
Run Code Online (Sandbox Code Playgroud)

我也试过

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
Run Code Online (Sandbox Code Playgroud)

以及其他一些变体,并且总是出现错误。

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

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

Tot*_*tor 7

要使用 只将字幕流提取到文件中ffmpeg,此命令似乎可以解决问题:

ffmpeg -i video.mkv -map 0:s -c copy subtitles.sup
Run Code Online (Sandbox Code Playgroud)

我的 ffmpeg (v5.0) 接受了该.sup扩展名,可以毫无错误地提取这些字幕。

然后您可以使用Chortos-2的答案,通过兼容的 OCR 程序将其转换为文本字幕。


Cho*_*s-2 5

我的理解是PGS是位图字幕。换句话说,它是一堆显示字幕的图片,这些字幕只是在显示时放置在视频的顶部。

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

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

在网上简单搜索一下,我知道Subtitle Edit可以从 MKV 中提取 PGS,通过 OCR 运行它并将结果保存为 SRT。网上有一些关于此的指南,但如果您有进一步的问题,它们可能更适合超级用户。