以下是我的流程

以下是我的流程

有没有办法将 dvdsub(基于图像的)字幕转换为 srt?例如使用 mencoder 或 ffmpeg 与 tesseract 结合使用?

我正在寻找基于命令行的东西,并且可以接受经过几次传递。

我不太喜欢基于 GUI 的工具。

答案1

您可能已经找到了解决方案,但由于这是“ffmpeg ocr dvdsub srt”的第一个搜索结果,因此这里是我使用的工具。

https://github.com/ruediger/VobSub2SRT

它并不完美,可能需要一些编辑。

我试图在 ffmpeg 中找到一个比我的方法更好的功能,但我发现了这个,并想起了我必须去的兔子洞,所以我希望这对某些人有所帮助。

以下是我的流程

从 .mkv 中提取 dvdsub

使用 mkvtoolnix-cli 中的 mkvextract

mkvextract video.mkv tracks 2:video.idx

  • arg 1 - 包含 dvdsub 的视频文件名
  • arg 2 - 提取类型
  • arg 3 - [包含 dvdsub 的流号]:[所需的提取文件文件名].idx

我的示例将生成一个 video.idx 和一个 video.sub 文件

从 .idx 和 .sub 文件生成 subrip

使用 vobsub2srt

vobsub2srt 使用 tesseract,我发现使用 tesseract 的传统模式效果最好。

vobsub2srt --tesseract-oem 0 video

  • arg 1 - Tesseract 引擎模式(tesseract --help-oem用于模式)
  • arg 2 - 传统模式
  • arg 3 - 文件名两个都.idx 和 .sub没有扩大

我的示例将生成 video.srt

检查并编辑 subrip 文件

我犯过的错误

  • '|' 而不是 'I',tesseract 的传统模式似乎并不经常犯这个错误。
  • ` 而不是 '
  • 间距,当一行以‘-’开头时,‘-’和第一个单词之间可能没有空格。
  • 丢失的 ' & ”
  • 'I' 或 '|' 而不是 '[',legacy 似乎并不经常犯这个错误。

編輯

如果您不熟悉 subrip 文件,可以简单地将它们放入文本编辑器中。

grep、vim 和 sed 是你的朋友。

然而,传统模式中的大多数错误很容易被忽略。

用 subrip(srt) 替换 dvdsub

使用 ffmpeg

ffmpeg -i video.mkv -i video.srt -c copy -c:s subrip -map 0:v -map 0:a -map 1 final-video.mkv

  • arg 1 & 2 - 输入 #1 - 包含 dvdsub 的视频文件
  • 参数 3 & 4 - 输入 #2 - Subrip 文件
  • arg 5 - 用于所有流的编解码器
  • arg 6 - 复制所有流(仅复制视频和音频)
  • 参数 7 - 字幕编解码器(覆盖字幕的参数 5)
  • arg 8 - 选择 subrip 作为字幕编解码器(可能多余,但安全>抱歉)
  • arg 9 & 10 - 将视频流从第一个输入映射到输出中的第一个流
  • arg 11 & 12 - 将音频流从第一个输入映射到输出中的第二个流
  • arg 13 & 14 - 将字幕流从第二个输入映射到输出中的第三个流
  • arg 15-输出文件名

完成了,我希望这里没有字符限制。

相关内容