前提
ffmpegがインストール済み
$ ffmpeg -version
ffmpeg version 6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
$ ffprobe -version
ffprobe version 6.1.1 Copyright (c) 2007-2023 the FFmpeg developers
データの確認
$ ffprobe input.mkv
Stream #0:1(eng): Subtitle: ass
Metadata:
title : English Subs (Coalgirls/R1)
Stream #0:2(eng): Subtitle: hdmv_pgs_subtitle
Metadata:
title : English SDH (Retail US-BD)
複数ある字幕のうち必要なものの以下二つを確認。
- Streamに続く0:n
(変換コマンドのオプション"-map 0:n"でこの値を指定する) - Subtitleに続くファイル形式
ファイル形式が「ass」
字幕のデータがテキスト形式のためそのまま抽出可能。
$ ffmpeg -i input.mkv -map 0:n output.srt
ファイル形式が「HDMV PGS」
字幕データがビットマップ方式のためOCR(光学文字認識)を使用してテキストに変換しなければならない。
ffmpegにOCR機能はないため、supファイル(ビットマップ画像)として保存し別の方法で変換が必要。
$ ffmpeg -i input.mkv -map 0:n -c copy -f sup output.sup
Sup to Srt Download
ffmpegで作成したsupファイルを選択してstrファイルに変換
プレーンテキストに変換
・Nikse - Subtitle Edit online
"Subtitle -> Open"で展開し"Subtitle -> Export plain text"で保存