Web 上から動画をダウンロードしたと思ったら m3u8 形式だったという事は無いだろうか。 m3u8 はプレイリスト情報が書かれたテキストファイルとなっており、動画ファイルそのものではない。
このようにテキストエディタで開くと動画の元データの URL が列挙されている。元データの URL といっても動画ファイルを分割した ts ファイルが列挙されており、再生の状況に合わせて随時ダウンロード・再生していくことになっている。主に動画配信サイト等で利用されている形式のため、普段扱う機会の無いファイルではある。
このページでは m3u8 ファイルを mp4 などの動画に変換する方法を紹介しよう。
ffmpeg で m3u8 を mp4 等の動画に変換する方法
ffmpeg では以下のコマンドで動画を変換することができる。
$ ffmpeg.exe -i input output
しかし、m3u8 形式のファイルを扱う際はこのコマンドを利用すると、以下のようなエラーが発生する。
Protocol 'https' not on whitelist 'file,crypto,data'!
Unable to open resource: https://example.com
https プロトコルがホワイトリストにないと言われている。どうやら ffmpeg のデフォルトでは、m3u8 ファイル内に含まれている URL を扱えないようだ。
この問題を解決するには、ホワイトリストに https を追加してやれば良い。最終的なコマンドは以下のような感じだ。
$ ffmpeg.exe -protocol_whitelist file,http,https,crypto,data,tls,tcp -i .\example.m3u8 example.mp4
protocol_whitelist に https, tls, tcp を追加してやればネット上のファイルも ffmpeg で扱えるようになる。これで m3u8 から mp4 が生成されたと思う。動画プレイヤーなどで開いて確認してみよう。