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 - 出力ファイル名
終わりです。ここには文字数制限がないことを願います。