m3u8 ファイルをダウンロードして ffmpeg で MP4 に変換・結合

.m3u8 形式の動画ファイルを公衆 Wi-Fi 環境でダウンロードして、後で部屋でゆっくり観ることができるようにする要請が生じたため、調べてみた。

.m3u8 ファイル自体をダウンロードする

Firefox 版の動画ゲッターを使った。

動画の視聴を始めると、プラグインが .m3u8 を認識し、.m3u8 ファイルをダウンロードできるようになる。動画ゲッターでは .m3u8 ファイルの中身の .ts ファイルもダウンロードできるが、そこまでする必要はない。

もちろん、面倒臭くなければ、ページの HTML ソースを直接見て、該当すると思われるプレイリストの .m3u8 を含む URL を抜き出してしまえば、動画ゲッターを使うまでもない。動画ゲッターで取った .m3u8 に記載されている URL が相対 URL だったりするなど、場合によってはこちらの方が手っ取り早い場合もある。

動画ゲッターでダウンロードした .m3u8 の中身
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1500000
https://???.cloudfront.net/???/???.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1500000,URI="https://???.cloudfront.net/???/???_iframe.m3u8"

動画ゲッターでダウンロードした .m3u8 ファイルの中身の https://???.cloudfront.net/???/???.m3u8 のアドレスを ffmpeg コマンドの入力ファイルとして使った。

ffmpeg で .m3u8 ファイルから MP4 に変換・結合する

ffmpeg を使うのがシンプルかつ強力なので、Homebrew で ffmpeg をインストールした。

インストール

brew install ffmpeg
ffmpeg コマンド

ffmpeg -protocol_whitelist "file,crypto,http,https,tcp,tls" -i ???.m3u8 -c copy -bsf:a aac_adtstoasc out.mp4

m3u8 の中身である断片化された多数の .ts ファイルのダウンロードは ffmpeg が処理過程でサラリとやってくれる。

コメント

このブログの人気の投稿

EP-805A 廃インク吸収パッド交換

WZR-HP-AG300H with OpenWrt