【保存版】暗号化されたHLS(.m3u8)ストリーム動画をダウンロード・保存する方法 / How to download video from DPlayer (encrypted m3u8)

Web上のストリーミング動画を保存しようとしたとき、「.m3u8」という形式に遭遇したことはありませんか? さらに、いざダウンロードしようとすると「暗号化」されていて弾かれてしまう……というのもよくある悩みです。

今回は、暗号化の種類(AES-128とDRMの違い)から、最強のツール「FFmpeg」を使った具体的なダウンロード手順まで、実例を交えてサクッと解説します。


そもそも暗号化には種類がある(AES-128とDRMの違い)

「暗号化された動画」といっても、実は大きく分けて2つのレベルがあります。ここを勘違いしていると、いくら頑張ってもダウンロードできないので注意が必要です。

① AES-128(標準的なHLS暗号化) 一般的なWebサイトの多くで採用されている方式です。 例えるなら「箱に南京錠はかかっているけど、鍵はそのすぐ横に置いてある」状態。
動画データ自体は暗号化されていますが、再生用のプレイリスト(.m3u8ファイル)の中に「鍵のURLはここだよ」と書かれています。そのため、後述するFFmpegを使えば自動で鍵を取得し、簡単にロックを解除して保存できます。

② DRM(Widevine / PlayReady など) NetflixやAmazon Prime Videoなどの大手VODで使われる、著作権を守るための強固な保護技術です。 例えるなら「身分証を持った正規会員しか入れない、監視カメラ付きの金庫」。
鍵をもらうために専用のライセンスサーバーによる厳しいチェックが入るため、一般的なダウンロードツールでは門前払いされてしまい、絶対に保存できません。

今回解説する方法でダウンロードできるのは「 AES-128」で暗号化された動画のみです。


FFmpegを使ったダウンロード手順(これ一択でOK)

AES-128のダウンロードにおいて、最も汎用性が高く確実なのは「FFmpeg」です。
コマンドラインツールなので最初は戸惑うかもしれませんが、暗号化キーを自動取得して結合してくれるため非常に強力です。

FFmpegをダウンロードする

まずは公式サイトからFFmpegのファイルをダウンロードし、分かりやすい場所(デスクトップやダウンロードフォルダなど)に保存・展開しておきます。

https://evermeet.cx/ffmpeg/

cd コマンドでフォルダを移動する

次に、ターミナルを開いて以下のコマンドを入力し実行(Enter)します。

    cd [FFmpegをダウンロードしたディレクトリ](例: Download/FFmpeg)

    この cd とは「Change Directory(チェンジ・ディレクトリ)」の略で、その名の通り「作業するフォルダ(ディレクトリ)を移動する」ためのコマンドです。

    難しく聞こえるかもしれませんが、やっていることはMacのFinderやWindowsのエクスプローラーで、目的のフォルダをダブルクリックして開くのと同じです。 「これからこのフォルダの中にあるFFmpegを使って作業するよ!」と、パソコンに教えてあげるイメージですね。

    FFmpegのコマンドを実行する

    無事にFFmpegがあるフォルダへ移動(cd)できたら、下記のダウンロード用のコマンドを貼り付けて実行(Enter)します。これで動画の保存が開始されます。

    Bash
    ffmpeg -i "https://example.com/video.m3u8?auth_key=123456789-987654321&v=3&time=0" -c copy output.mp4

    -c copy オプションをつけることで、再エンコードなしで超高速に結合・保存されます。鍵の処理はFFmpegが裏で勝手にやってくれます。


    実践編:DPlayerなどのパラメータ付きURLを攻略する

    実際のWebサイトでは、単純なURLではなく「認証キー」などが付与されていることがよくあります。 今回はDPlayerなどでよく見かける以下のURLを例に実践してみましょう。

    Chromeの開発者ツールを開きます。

    cmd+Fを押し「m3u8」と検索しm3u8のURLを探します。

    以下のURLのような、「https://あああああ.m3u8?auth_key=123456789-987654321」の形式のURLを探してコピーします。

    開発者ツール
    https://あああああ.m3u8?auth_key=123456789-987654321&v=3&time=0

    認証キー(auth_key)の有効期限: このトークンは数時間〜数日でリンク切れになります。取得したらすぐにダウンロードを開始しましょう。

    m3u8のURLの中に& という文字列があれば事前に&に置き換えてください。

    あとは下記のコマンドを実行することでAES-128に暗号化されたHLSをダウンロードすることができるようになります。

    Bash
    cd [FFMPEGをダウンロードしたディレクトリ]
    ./ffmpeg -headers "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \
           -i "先ほど取得したURL(例
           例:https://あああああ.m3u8?auth_key=123456789-987654321&v=3&time=0)" \
           -c copy output.mp4

    コメント

    タイトルとURLをコピーしました