mp4ファイルから字幕を取り出したい

この記事は約3分で読めます。
スポンサーリンク

■先に追記します

2020年9月に、MP4Boxを使うフロントエンドアプリを作りました🎉

そちらの方が楽ですのでぜひご利用ください

MP4ファイルから字幕を抽出する | その後
mp4ファイルから自動で字幕を抽出する簡単なフロントエンドを作ってみました

ここから下が元の記事です


マンスリープログラムのコンテンツをレビューしたいなと

がんばって字幕を入力したりもしたんですが、全盛期ほどのキータッチスピードは出ないので😢 やっててフラストレーションたまりまくり😤

…なので、昔よりも向上した探し物のスキルを使って😉  My MP4Box GUI というアプリを発見👍🏼  MP4Boxの方はコマンドラインツールっぽいので、GUIの方が扱いやすいかなと

My MP4Box GUIを起動したら、Demux のタブをクリックして、[Open]を押してダウンロードした .mp4 なファイルを選択して開くとアナライズがスタート。もしかすると Timed Text と小さなダイアログが出てくるかもしれないので、[OK]をクリックすれば .mp4 ファイルに含まれる要素がリストされます。そうしたらおもむろに字幕部分にチェックを入れて [Demux] を押せば .srtファイルに書き出してくれました。すばらしい🎉

できあがった .srt ファイルですが、まぁ中身は思いっきりテキストファイルなのでメモ帳でもなんでも開けますが、字幕番号とか時間ごとに区切られた情報なので、いらない情報が多いかなと😵

なので、DOSコマンドの findstr を使って、ざっくり消してしまおうということで、こんなバッチファイルを書いてみました(画面幅の関係で2行になってますが、途中で改行はありません)

findstr /V /R “[0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9][0-9][0-9]” %1 | findstr /V /R “^[0-9]*$” > %~n1.txt

コレをテキストエディタか何かにコピペして、srt2txt.bat とか名前を付けて .srtファイルと同じフォルダに置いておけば、

>srt2txt hogehoge.srt

とすれば、テキストだけが抽出されたファイルが同じフォルダに hogehoge.txt として作成されまする💪

…でもそもそも、公開されてしばらくすると字幕が画像埋め込みになっちゃうみたい。リリースされたらとっとと作業しなくちゃですね

2018/8/31追記
コマンドがうまく動作しないというコメントがありましたので、単発用のバッチファイルと複数用のバッチファイルをZIPファイルにまとめました。ダウンロードしてお使いください(findstrのコマンドしか書いてませんが、心配でしたら中身をエディタで確認してからお使いください)。うまく動作したらご報告いただければうれしいです

https://www.atchfactory.com/download/srt2txt.zip

コメント

  1. カワノツヨシ より:

    お尋ねしたいんですが、
    沢山の動画から、字幕を抜き取り、沢山のsrtファイルがあるんですが、それをまとめてそれぞれのtxtファイルにする方法ないでしょうか?
    よろしくお願いします。

    • やまねこ より:

      カワノツヨシさん

      ご質問の件、バッチコマンドで for コマンドを使えば実現できます(詳しくはコマンドプロンプトで for /? として見てください)

      結論からすればテキストエディタなどで(表示の関係で2行になってますが途中で改行は不要です)

      for %%F in (*.srt) do findstr /V /R “[0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9][0-9][0-9]” %%F | findstr /V /R “^[0-9]*$” > %%~nF.txt

      をコピペして たくさん .srt がいるフォルダに srt2txt-multi.bat とでも名前を付けて保存して、コマンドプロンプトから実行すれば、まとめて .txt に変換されます

      上のコマンドにある %% を % に変更すれば、ファイルに保存しなくてもコマンドプロンプトから実行できます

      念のために .srt ファイルたちはバックアップしてからお試しください

  2. タナカ より:

    コマンドを入力して、実行してもテキストファイルは作成されるのですが、きちんと出力できません

    • やまねこ より:

      タナカさん

      >テキストファイルは作成されるのですが、きちんと出力できません

      これがどういう状態なのか分かりかねるのですが、もしワイルドカードでファイルを指定すると全部の行頭にファイル名が入りますので、1つずつ実行するか、少し前にコメントに書いた複数のファイルをまとめて変換するコマンドをお試しください

      コマンドは、まず引数で渡されたファイルから findstr で行頭に 00:00:00,000(数字は任意)のない行をすべて取り出し、その結果から今度は行頭に 0(数字は任意)のない行を取り出して、ファイル名の拡張子より前の部分に.txt を付けて保存する というものです

      手元の.srt ファイルの内容をテキストエディタで見ると

      1
      00:00:00,000 –> 00:00:02,003
      字幕だよ!

      というブロックの繰り返しなのでブログ記事内のコマンドを書きましたが、お手元の.srtファイルの形式が異なっているようでしたら期待の動作をしませんので、適宜書き換えてお使いください

  3. さとし より:

    教えてください。
    「DOSコマンドの findstr 」を用いて試してみましたら,テキストファイルは作成されるものの,中身は真っ白でテキストの表示がありません。つまり,すべての文字が削除されたものが作成されてしまいます。

    コマンドは,改行なしの次のものを用いました。
    findstr /V /R “[0-9][0-9]:[0-9][0-9]:[0-9][0-9],[0-9][0-9][0-9]” %1 | findstr /V /R “^[0-9]*$” > %~n1.txt

    例えば,抜き出した字幕が下記のものですが,不要な文字列をどのようにすると,削除できるでしょうか。下記の「招待されたら どう思われますか?」の部分だけを抜き取りテキストファイルにしたいです。

    1
    00:00:00,000 –> 00:00:04,015
    招待されたら どう思われますか?

    教えていただければ幸いです。

    • やまねこ より:

      さとしさん

      コマンドには見た感じ問題がなさそうですね🤔

      書き込んでいただいた字幕ファイルの中身を test.srt と名前を付けて保存し、それを手元にあるバッチファイルに通したところ、招待されたら どう思われますか? の文字列だけが残った test.txt ファイルが吐き出されました😅

      単発用のバッチファイルと、複数用のバッチファイルを ZIPファイルにしましたので、ダウンロードしてお試しください(findstrのコマンドしか書いてませんが、心配でしたら中身をエディタで確認してからお使いください)

      https://www.atchfactory.com/download/srt2txt.zip

      ご報告をお待ちしています

      • さとし より:

        ご返信が遅くなり,申し訳ありません。
        丁寧に教えてくださり,ありがとうございました。
        今度はうまくいきました。本当に助かりました。

  4. プー より:

    上のバッチファイルのサンプルですが,ダブルクォーテーションが2バイトコード(全角)になってました。そのまま使うとブランクのテキストファイルができました。それで英語キーボードから1バイトコード(半角)で置き換えたら,うまくいきました。お知らせまで。

    • やまねこ より:

      プーさん

      言われてみれば、表示されているダブルクォーテーションは、右と左で対になるタイプの全角っぽい表示になっていますね…🤔

      記事のソースは半角のダブルクォーテーションになっているので、WordPress が勝手に変換して表示してしまっているようです🤬まったく気づいてませんでした😱

      コメントくださった皆さんが上手くいかなかったのはソコが原因だったかもしれません。お知らせありがとうございます

タイトルとURLをコピーしました