You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

求助:使用FFmpeg从MKV提取HDMV PGS字幕转SRT失败

解决HDMV PGS字幕转SRT的问题

首先得明确一个关键知识点:你要处理的HDMV PGS字幕是位图格式(本质是图片帧),而SRT是纯文本字幕——FFmpeg本身不支持位图到文本的直接转换(这就是你看到Subtitle encoding currently only possible from text to text or bitmap to bitmap报错的核心原因)。MKVToolNix提取的是原始PGS二进制文件,自然也没法直接当SRT文本用。

你的操作失误点

  1. 试图用FFmpeg直接跨类型转换:FFmpeg只能在同类型字幕间转码(比如文本转文本、位图转位图),位图转文本需要OCR(光学字符识别)工具配合,FFmpeg做不到这一步。
  2. 错误的命令参数:你加的pgssub/hdmv_pgs_subtitle是输入编码器的标识,不是输出格式,所以FFmpeg会报错找不到对应输出格式。

正确的转换流程(Mac系统)

整个过程分两步:提取原始PGS字幕文件用OCR工具将位图转成SRT文本

第一步:提取原始PGS字幕文件

用FFmpeg直接复制字幕流即可(不会转码,避免报错):

ffmpeg -i "你的MKV文件路径.mkv" -map 0:4 -c copy "extracted_subs.pgs"

或者用MKVToolNix的mkvextract工具(需要先安装MKVToolNix):

mkvextract tracks "你的MKV文件路径.mkv" 4:extracted_subs.pgs

注:这里的4对应你字幕流的编号(你的字幕是Stream #0:4),所以track编号为4。

提取完成后,你可以用VLC播放器测试这个PGS文件是否能正常显示(直接拖入VLC即可),确认提取结果正确。

第二步:用OCR工具将PGS转成SRT

Mac上最适合新手的工具是Subtitle Edit(虽然是Windows原生软件,但可以通过Wine/Crossover在Mac上运行,也有第三方移植的Mac版本):

  1. 打开Subtitle Edit,导入你提取的extracted_subs.pgs文件
  2. 软件会自动调用OCR引擎识别字幕内容(确保你安装了英文语言包,因为你的字幕是英文的)
  3. 仔细检查识别结果,修正OCR可能出现的错误(比如字体模糊、特殊符号识别偏差)
  4. 点击「文件」→「导出」→选择「SRT字幕格式」保存即可

如果你偏好命令行工具,可以用tesseract OCR配合脚本,但操作复杂度较高,新手还是推荐用Subtitle Edit更直观。


常见问题补充

  • 为什么提取的PGS文件是二进制?因为PGS本身就是由图片帧组成的容器,不是文本,所以必须经过OCR才能转成SRT格式。
  • OCR识别不准确怎么办?可以在Subtitle Edit里调整OCR参数,或者手动校对关键位置的字幕内容。

内容的提问来源于stack exchange,提问作者breezybrea

火山引擎 最新活动