這是我的過程

這是我的過程

有沒有辦法將 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 文件

我經歷過的錯誤

  • '|' tesseract 的遺留模式而不是“I”,似乎不常犯這個錯誤。
  • ` 而不是 '
  • 空格,當一行以“-”開頭時,“-”和第一個單字之間不能有空格。
  • 丟失的 ' & ”
  • “我”或“|”而不是“[”,legacy似乎並不經常犯這個錯誤。

編輯它

如果您不熟悉 subrip 文件,則可以將它們簡單地放入文字編輯器中。

grep、vim 和 sed 是你的朋友。

然而,遺留模式中的大多數錯誤很容易被忽略。

將 dvdsub 替換為 subrip(srt)

使用 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 的視訊文件
  • arg 3 & 4 - 輸入 #2 - Subrip 文件
  • arg 5 - 用於所有串流的編解碼器
  • arg 6 - 複製所有串流(僅複製視訊和音訊)
  • arg 7 - 字幕編解碼器(覆蓋字幕的 arg 5)
  • arg 8 - 選擇 subrip 作為字幕編解碼器(可能是多餘的,但安全性>抱歉)
  • arg 9 & 10 - 將視訊串流從第一個輸入對應到輸出中的第一個串流
  • arg 11 & 12 - 將音訊串流從第一個輸入對應到輸出中的第二個串流
  • arg 13 & 14 - 將字幕流從第二個輸入映射到輸出中的第三個流
  • arg 15 - 輸出檔名

完成後,我希望這裡沒有字元限制。

相關內容