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 m3