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

Posted

技术标签:

【中文标题】ffmpeg 将 hdmv pgs 字幕从 mkv 提取到 srt【英文标题】:ffmpeg extract hdmv pgs subtitles from mkv to srt 【发布时间】:2020-07-19 06:12:17 【问题描述】:

几天来,我一直在试图弄清楚如何从 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 并得到一个奇怪的二进制文件,因为它可能是错误的格式。

【问题讨论】:

【参考方案1】:

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

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

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

在网上的简短搜索告诉我Subtitle Edit 可以从 MKV 中提取 PGS,通过 OCR 运行它并将结果保存为 SRT。网上有一些这方面的指南,但如果您还有其他问题,它们可能更适合Super User。

【讨论】:

以上是关于ffmpeg 将 hdmv pgs 字幕从 mkv 提取到 srt的主要内容,如果未能解决你的问题,请参考以下文章

FFMPEG 更改音频和字幕的 fps 并合并 2 个文件

使用 python 从 pgs 字幕中获取项目计数

FFMPEG - 转换具有多个音频和字幕的视频

ffmpeg增加和提取字幕流

ffmpeg为mkv封装格式的音视频文件添加内挂字幕

如何将 mkv(带字幕)转换为 Nexus One 友好的东西?