動画から字幕を抽出
初回は字幕エンジン(約31 MB)をダウンロードします。このサイトから配信され、以降はブラウザにキャッシュされます。動画自体がこのタブの外に出ることはありません。
この頁は動画ファイルを受け取り、その中にすでに入っている字幕トラックを、トラック 1 つにつき 1 ファイル、トラックの言語にちなんだ名前で返します。英語 SDH のトラック、中国語のトラック、PGS の画像トラックを持つ Matroska ファイルなら、.srt、もう 1 つの .srt、.sup の 3 ファイルが出ます。コンテナは再エンコードせずに分離するので、テキストのトラックはファイルにもともと入っていたバイトのまま取り出され、画面から打ち直されたり、時刻を付け直されたりしません。
処理はタブの中で行われます。動画はこのサイトが自ら配信する WebAssembly 版の ffmpeg が読み、ネットワークの要求はそのエンジンのためだけです。初回に約 31 MB をダウンロードし、以降はブラウザがキャッシュします。動画自体はどこにも送信されません。このサイトのほかのすべての頁と同じ規則で、機械の外に出せない素材に使える理由です。
画面に焼き込まれた字幕は取り出せず、どの道具にもできません。読むべきトラックがなく、その言葉は画素だからです。ファイルに字幕ストリームがまったくないときは、空のファイルを作らずにそう述べます。焼き込みの場合も同じで、字幕が見えるのに字幕トラックのない動画は、取り出すものが何もないと報告されます。
頁は書き出す前に見つけたすべての字幕ストリームを一覧します。番号、コーデック、言語、タイトル、既定か強制かの印です。すでに自前のコンテナに住んでいるトラックはその形式を保ちます。ASS は ASS のまま、WebVTT は WebVTT のままで、ここで SRT に変換すると書式を黙って落とすからです。頼まれずに書式を落とすのは、このサイトがしない唯一のことです。独立したコンテナを持たないコーデックのトラック(例えば MP4 の中の mov_text)は SRT に再エンコードされ、結果カードがそう述べ、コピーとして通しません。
画像のトラックはテキストではなく画像として出ます。PGS ストリームは .sup に、DVD のストリームは .sub になります。これは意図的です。画像がファイルにあったもので、そのテキストを推測するのは、独自の頁と独自の言語の問いを持つ別の仕事です。テキストが必要なら .sup を PGS の頁へ持って行ってください。
よくある質問
どの動画コンテナを落とせますか?
MKV、MP4、M4V、AVI、MOV、TS、WebM、WMV、FLV、MPG、OGV です。この一覧は実質、同梱する ffmpeg が持つ分離器の一覧で、動画コーデックの一覧ではありません。コンテナの中身が何であれ、字幕トラックは同じ種類のストリームです。変わった拡張子でも中身が普通の Matroska ならたいてい動きます。分離器が名前ではなくヘッダーを読むからです。断片化した、あるいは不完全なダウンロードは多くの場合動きません。たどる索引がないからです。
読み取りの間、動画はパソコンの外へ出ますか?
出ません。ダウンロードは ffmpeg エンジン自体の約 31 MB だけで、このサイトから配信され、初回の後はブラウザがキャッシュします。動画はタブの中のエンジンの仮想ファイルシステムにマウントされてそこから読まれ、要求の本文として書かれることはありません。ネットワークパネルで確かめられます。処理中にそれを運ぶ要求はありません。この性質が頁の存在理由で、ほとんどの抽出器はまずアップロードし、法務や医療の保留下にある素材はアップロードできません。
なぜ .srt ではなく .sup ファイルが出たのですか?
そのトラックがテキストではなく画像として保存されているからです。PGS ストリーム(コーデック hdmv_pgs_subtitle)は画像の連なりで、画像ストリームを正直に取り出せば画像ストリームになります。.sup はプレーヤーや字幕編集がまさに期待する形です。それをテキストにするには各画像の文字を認識する必要があり、言語の問いと校正の手順を持つ別の頁です。抽出器は読んでいないテキストを作りません。
独立したファイル形式を持たないトラックを道具はどう扱いますか?
そのトラックだけを SRT に再エンコードし、結果に再エンコードと印を付けます。よくあるのは MP4 の中に住む字幕コーデック mov_text で、独自のファイル形式がないので、ストリームをそのままコピーすると何も開けないバイトができます。再エンコードは無損失ではなく、mov_text が持つ書式や位置は残らないので、結果カードはそれを損失として載せ、コンテナの中身をそのまま写したコピーとしては提示しません。
トラックが複数あるとき、出力ファイルはどう名付けられますか?
動画自身の名前とトラックの言語コードによります。documentary.mkv に英語のトラックがあれば documentary.eng.srt です。2 つのトラックが言語を共有するとき(普通の英語トラックと英語 SDH トラックはよくあります)、2 つ目は最初のものを上書きせず documentary.eng-2.srt になります。言語タグのないトラックはストリーム番号に戻るので、やはり区別できます。ファイルが複数になる場合、頁は 1 つの zip として差し出します。ブラウザは頁が一度に複数のダウンロードを始めるのを妨げるからです。
初回の実行が 2 回目より長いのはなぜですか?
初回は ffmpeg エンジンの約 31 MB をダウンロードするからです。進捗の行はそのダウンロードと、続く抽出そのものを覆います。ブラウザがエンジンをキャッシュするので、同じ頁の後の実行はほぼすぐ始まります。キャッシュが消されていなければ再読み込みの後も同じです。エンジンは 4 つの部分で配信されます。ホスティングが 25 MiB を超える単一ファイルを拒むからで、頁は開始前にメモリ上で組み立てます。その組み立てが同じ初回の待ち時間の一部です。
時間がかかりすぎる実行を取り消せますか?
取り消せます。取り消しボタンは実行中の抽出を止め、それを行っているワーカーを終了させるので、大きなファイルが待たないと決めた後もコアを占有し続けることはありません。取り消しはエラーではなく、項目は再試行できる状態に戻り、次の実行は新しいワーカーで始まります。途中の結果はダウンロードとして提供されません。完成して見える半分書かれた字幕ファイルは、ファイルがないより悪いからです。