memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

vtt字幕ファイルを統合したmp4ファイルを作成する手順

どうでもいい背景

ACM会員サービスの1つに色々な分野の研究者の方によるオンライン講演があります。配信頻度は1ヶ月に1回くらいです。

基礎がないと理解できないことも多いのですが、異なる分野の潮流を知るきっかけになり毎回視聴するようにしています。

ただ、ライブ配信のため日本時間ではだいたいが深夜2,3時になり、まず視ることができません(できなくはないけどおじさんなので寝ているZzzz)。

やさいいACMはこれらの配信を見逃した人向けに動画を別途配信してくれます。今回は以下の配信だったのですが、ZOOMにアクセスしてウェビナーを視聴しているとダウンロードボタンがあることに気づきました。何気に押してみると、mp4ファイル、m4aファイル、vttファイル、などが落ちてきました。ほー、これをローカルで見れるのね。すばらしー。

そこで、はて、vttファイルとは?と思ったわけです。字幕ファイルだろうなと思いました。字幕を統合したmp4ファイルが欲しいなぁ。。。と思ったのがこのエントリーの発端です。

調べた。

まず、Mac標準のQuickTimeで動画・字幕ファイルを読み込んでみれないか。。。と思ったができなかった。

VLCだとできることは確認済み。ここで終わってよかったが。。。せっかくなので調べてみた。

動画編集といえばhandbreak(1.5.1)と思って色々調べたができない。いや、できるっていう記事もあるけど、なぜか字幕ファイルをインポートするボタンがない。Mac版だからだろうか?⇒諦めた

次、ffmeg。

これはできるらしい。参考にしたのは以下。ちょっと呪文のようなパラメータがあるが、とりあえずmp4ファイルとvttファイルを与えてmkvファイルを生成してくれる ⇒できた。ただ、mkvファイルではQuickTime Playerでは見れない。動画編集といえばそれなりに時間がかかるずだけど、あっというまに終了した。エンコーディングするというよりただ2つのファイルを結合したくらいの時間だった。

mkvファイルをmp4ファイルにする。そのときに字幕もコピーする方法を探したら。。。以下にあった。書かれているコマンドをそのまま入力しただけ。処理時間も一瞬だった。⇒mp4ファイルをQuickTime Playerで見れた。字幕も選択するとちゃんと見れた。

手順

処理する手順をまとめます。Macを前提とします。

0.まず、ffmpegをインストールします。依存ファイルが膨大にあるため完了するまで時間がかかりました。

brew install ffmpeg
copy

1.字幕なしのmp4ファイル(a.mp4)と字幕ファイル(a.vtt)を用意します。名前は何でもいいですが説明の都合上、この名前にしただけです。で、以下のコマンドを入力します。字幕は英語の場合です。日本語字幕の場合はengではなくjpnを指定するそうです。一瞬で終わります。

ffmpeg -i a.mp4 -i a.vtt -map 0:v -map 0:a -map 1  -metadata:s:s:0 language=eng -c:v copy -c:a copy -c:s srt a.mkv
copy

2.mkvファイルをmp4ファイル(a.mp4)にします。以下のコマンドを入力します。これも一瞬で終わります。

ffmpeg -i a.mkv -y -map 0:0 -map 0:1 -map 0:2  -c:v copy -c:a:1 copy -c:s mov_text a.mp4
copy

パラメータの意味は調べていませんが。。。とりあえずできたのでいいとしましょう。

ただ、調べてみて思ったのですが、そうある作業ではないので、ちょっと見たいだけなら字幕付きファイルなど作成せずに、vlcなどのアプリでmp4ファイルとvttファイルを指定して視聴した方が楽です。。。という何とも言えない感想で締めたいと思います。

でわ!