2019年6月現在、字幕ファイルのダウンロードうまくできていない。字幕は動画をブラウザで開く前にデベロッパーツール(F12)を開いてNetworkでvttをフィルタすれば見つかる。現在の字幕ファイルはvttなので下のjsonからの変換が不要。
TED のプレゼンテーション動画をブラウザやアプリで見るときに字幕が選択できるが、これを ffmpeg で PC に保存し動画に合わせる方法。わざわざ字幕付き動画は公式から普通に保存できるが2言語の字幕付きの動画に変換する方法も併せて紹介する。
動画の保存方法は PC からは再生ページのプレイヤ右下の「Share」から動画、音声、字幕を焼き付けた(ハードサブ)動画が選択できる。字幕の保存方法は簡単な方法はないが、まずブラウザでソースコードを表示して「ted://talks/」の次に書いてある数字を控えておき字幕用のアドレスに記入する。プレイヤに日本語字幕が選択できなければもちろん保存は出来ない。昔は動画リンクから字幕IDは調べられたが調べられなくなっている。
日本語字幕用のアドレス(1234 の部分に上で調べた数値を記入)。英語の場合は末尾が eng。
https://www.ted.com/talks/subtitles/id/1234/lang/jpn
そのほかの言語については以下を参照。
Get subtitle for TED video
字幕をブラウザから保存すると、json 形式になりこれでは動画プレイヤで扱えないので ffmpeg で変換する。
ffmpeg で字幕を扱いやすい .srt に変換し保存する。
ffmpeg -i https://www.ted.com/talks/subtitles/id/1234/lang/jpn output.srt
ネット越しではなくて PC に json を保存しても変換できる。
ffmpeg -i ted.json output.srt
公式ドキュメント:FFmpeg Formats Documentation : tedcaptions
複数字幕を同時に表示するには複数の字幕を1つに合わせる。方法として手動でコピペする方法と「cat」コマンドで連結する方法がある。この場合は元データの json ではなく字幕形式に予め変換しておく。以下のコマンド例は2つの字幕を1つにする。
cat jp.srt en.srt > jp-en.srt
動画に合わせるには映像と音声をコピーし、字幕もコピーする。字幕ファイルは .mkv の方が扱いやすい。
ffmpeg -i input.mp4 -i jp-en.srt -map 0 -map 1 -c copy -c:s copy output.mkv
.mp4 なら字幕コーデックをmov_textにする。ただしこれだと複数字幕を一つにしたときに字幕が複数段に表示されないので複数字幕の表示には非推奨。
ffmpeg -i input.mp4 -i jp-en.srt -map 0 -map 1 -c copy -c:s mov_text output.mp4
関連記事