
古い (現在は廃止されている) QuickTime 7 Pro の「テキスト トラック」機能を使用して作成された、 形式の字幕トラックを.mov
持つファイルがあります。これについて、次のことが分かります。mov_text
ffmpeg -i myfile.mov
Stream #0:4(eng): Subtitle: mov_text (text / 0x74786574), 640x116, 0 kb/s (default)
Metadata:
rotate : 0
creation_time : 2021-11-20T03:08:45.000000Z
handler_name : Apple Text Media Handler
現在、私はまだ QuickTime 7 Pro にアクセスでき、そこで字幕を抽出して SubRip または他のプログラムで読み取れる他の形式に変換できます。ただし、システムを更新する必要があり、QuickTime 7 Pro は macOS Catalina 以降では動作しないため、新しいシステムでも字幕にアクセスできる方法を探しています。これが最善ffmpeg
の方法のようですが、まだ行き詰まっています。
私が試したことは次のとおりです:
ffmpeg -i test.mov -map 0:s:0 -c copy -f data QT-subtitles.txt
字幕のプレーンテキストは提供されますが、タイムスタンプは提供されないため、字幕を別の形式に変換するのにはあまり役に立ちません。
ffmpeg -i test.mov -map 0:s:0 QT-subtitles.srt
タイムスタンプを含む字幕を SubRip に正しく変換します。ただし、改行やその他の書式設定は削除されます。
また、無効なデータが見つかったという次のエラー メッセージも表示されます。
Stream mapping:
Stream #0:4 -> #0:0 (mov_text (native) -> subrip (srt))
Press [q] to stop, [?] for help
[mov_text @ 0x7fa492823200] invalid UTF-8 byte in subtitle
[mov_text @ 0x7fa492823200] Invalid UTF-8 in decoded subtitles text; maybe missing -sub_charenc option
Error while decoding stream #0:4: Invalid data found when processing input
[mov_text @ 0x7fa492823200] invalid UTF-8 byte in subtitle
[mov_text @ 0x7fa492823200] Invalid UTF-8 in decoded subtitles text; maybe missing -sub_charenc option
Error while decoding stream #0:4: Invalid data found when processing input
size= 6kB time=00:02:04.30 bitrate= 0.4kbits/s speed=3.32e+04x
video:0kB audio:0kB subtitle:3kB other streams:0kB global headers:0kB muxing overhead: 82.697044%
以下のコメントからの提案を指定する-c text
か、-sub_charenc
すべて同じ結果になります。
そこで、字幕をQTText形式のまま(下記参照)または他の方法で改行やその他の書式を保持する単純なテキストファイルに抽出する方法を見つけたいと思っています。これは、QuickTime 7 Proで抽出してエクスポートしたときに、元のQuickTimeテキストトラックがテキストファイルとしてどのように見えるかを示しています(仕様を参照)。ここ)。
{QTtext}{font:Verdana}{plain}{size:36}{textColor: 65535, 65535, 65535}{backColor: 0, 0, 0}{justify:default}{timeScale:30}{width:640}{height:116}{timeStamps:absolute}{language:0}{textEncoding:0}
[00:00:00.00]
Text here {bold} bold word {plain} text here
[00:00:01.12]
Text here text here text here
Next line here (respects spaces)
[00:00:02.14]
次に、などの書式タグを HTML タグに変換するスクリプトを簡単に作成できます{bold}
。これは SubRip が理解できるものだと思います。
またはffmpeg
などのファイル拡張子から必要なものを推測させる以外に、出力形式を指定する方法はありますか? (特に、出力として指定できれば、上記のような QTText 形式のファイルが生成されるのではないかと考えていますが、どうすればいいでしょうか?)srt
txt
mov_text
うまくいかない場合はffmpeg
、他のツールを試してみたいと思います。
答え1
mov_text 字幕を他の形式 (Subrip SRT ファイルなど) にトランスコードすることに問題がない場合は、次の操作を試してください。
ffmpeg -i test.mov -map 0:s:0 -c:s srt subtitles.srt