これが私のプロセスです

これが私のプロセスです

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

  • 引数 1 - dvdsub を含むビデオのファイル名
  • 引数 2 - 抽出タイプ
  • 引数 3 - [dvdsub を含むストリーム番号]:[抽出されたファイルの希望ファイル名].idx

私の例では、video.idxファイルとvideo.subファイルが生成されます。

.idx および .sub ファイルから subrip を生成する

vobsub2srt の使用

vobsub2srt は tesseract を使用しますが、tesseract のレガシー モードを使用するのが最も効果的であることがわかりました。

vobsub2srt --tesseract-oem 0 video

  • 引数 1 - Tesseract エンジン モード (tesseract --help-oemモード用)
  • 引数 2 - レガシー モード
  • 引数3 - ファイル名両方.idx と .subそれなし拡大

私の例では、video.srtが生成されます。

サブリップファイルの検査と編集

私が経験した間違い

  • 'I' の代わりに '|' を使用しますが、Tesseract のレガシー モードではこの間違いはあまり発生しないようです。
  • ' の代わりに '
  • スペース: 行が「-」で始まる場合、「-」と最初の単語の間にスペースがない場合があります。
  • ない ' & "
  • '[' の代わりに 'I' または '|' を使用しますが、レガシーではこの間違いはあまり起こらないようです。

編集する

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

  • 引数 1 と 2 - 入力 #1 - dvdsub を含むビデオ ファイル
  • 引数 3 & 4 - 入力 #2 - Subrip ファイル
  • 引数 5 - すべてのストリームに使用されるコーデック
  • 引数 6 - すべてのストリームをコピーします (ビデオとオーディオのみがコピーされます)
  • 引数 7 - 字幕コーデック (字幕の場合は引数 5 を上書きします)
  • 引数 8 - 字幕コーデックとして subrip を選択します (冗長かもしれませんが、安全です)
  • 引数 9 と 10 - 最初の入力からのビデオ ストリームを出力の最初のストリームにマッピングします
  • 引数 11 と 12 - 1 番目の入力からのオーディオ ストリームを出力の 2 番目のストリームにマッピングします
  • 引数 13 と 14 - 2 番目の入力からの字幕ストリームを出力の 3 番目のストリームにマッピングします
  • 引数 15 - 出力ファイル名

終わりです。ここには文字数制限がないことを願います。

関連情報