初心者向け、FFmpegでm3u8のURLから動画をダウンロードしてMP4に変換&結合する方法

VideoProc分析失敗原因と対策
  • ISLAND TVやTVerなどで動画をWinX YouTube DownloaderやFreemake Video Converterなどでダウンロードしようとすると、直接にダウンロードできません。
  • 調べて見たら、ISLAND TVやTVerなどの動画のURLがm3u8になっていて、一般の動画ダウンロードソフトではダウンロードできません。m3u8のURLから動画をダウンロードするにはFFmpegというソフトがお勧められました。
  • しかし、ネットで紹介された方法はパソコン音痴の私にとってはあまりにも複雑で、イマイチわかりません。
  • 初心者でもわかるように、最初から最後までFFmpegでm3u8のURLから動画をダウンロードする方法を教えていただけませんか。

先日、筆者は「FFmpegでm3u8のURLから動画をダウンロードする方法を教えてください」というメールを受信しました。

確かに、ネットではFFmpegでm3u8のダウンロード方法についての文章はたくさんありますが、全部初心者にとっては、分かりづらいと思います。
だから、ここでは、FFmpegでm3u8のURLから動画をダウンロードする方法を一から紹介します。

豆知識〜m3u8を直接にダウンロードして再生できない原因

ストリーミングをダウンロードするために、まずm3u8とHLSという形式を紹介しなければなりません。

    HLS

  • HLS( -HTTP Live Streaming)というのはAppleが策定したライブストリーミングの手法です。WOWOW, AbemaTV, Netflix, Hulu, Tver, Avgel, GYAO!, Pornhub, U-NEXTなどの動画サイトではHLSという方式で動画が配信されています。
  • HLSによる配信は、m3u8(インデックスファイル)とTS(分割されたメディアセグメントファイル)により構成されています。

    m3u8

  • m3u8というのはただストリーミング動画の一つ、または複数のメディアファイルのパスをプレーンテキスト(テキストファイル)で記述したものです。このファイルを、".m3u"または".m3u8"の拡張子で保存します。動画データを格納することではありません。一方、このファイルのおかげで、ストリーミングへのアクセス、ウェブサイトからのダウンロード、インターネットラジオの視聴が容易になります。

動画ゲッターなどのブラウザプラグインでは、m3u8インデックスファイルをダウンロードして、そしてtsファイルを一括ダウンロードすることもできます。
しかし、そのtsファイルが大量になってしまい、再生するものにはなれません。
ここはFFmpegの出番です。FFmpegを使ったら、m3u8のURLからts動画をMP4にダウンロードして保存することができます。

これからはその方法について詳しく紹介します。

VideoProc

VideoProc - 動画ダウンロードには一押し!

☘ 1000以上のサイトから動画が素早くダウンロード可能
☘ 音楽をMP3/AAC/M4A/WMAにダウンロードできる
☘ ようつべライブ動画を直接に無劣化でダウンロードできる
☘ 複数の動画(プレイリス・チャンネル)が同時に追加可能
☘ ようつべの未公開動画と「後で見る」もダウンロードできる
☘ レジューム機能あり、失敗したダウンロードタスク再開可能

m3u8のURLを取得する方法

FFmpegは直接に動画のm3u8ファイルのURLを取得できないので、事前にブラウザから、m3u8動画のURLを取得する必要があります。

  • 動画の再生画面の空白の部分を右クリックして、「ページのソースを表示」をクリックします。

    一部のサイトは右クリック未対応なので、直接にブラウザのURL欄で「view-source:+動画ページのURL」を入力して開きます。

    例えば:view-source:https://j-island.net/movie/play/id/7225

  • キーボードにある「Ctrl」+「F」と同時にクリックして、「.m3u8」を入力します。

    「' '」にあるURLは探しているm3u8のURLです。

ストリーミング動画のm3u8のURL
ストリーミング動画のm3u8のURL

筆者が試した動画のURLは下のようになります。
/movie/play_hls/file_name/200922_04/?play_list=j-island%2F200922_04%2F200922_04.m3u8
しかし、これは絶対パスではなく、相対パスです。URLが不完全で、FFmpegでは認識できません。

http/htttpsのある相対パスに補足しましょう。
実践で利用したサイトは「https://j-island.net/」なので、先コピーした「movie/play_hls/file_name/200922_04/?play_list=j-island%2F200922_04%2F200922_04.m3u8」の前に「https://j-island.net/」を貼り付けたらFFmpegで読み込めるm3u8のURLができました。

m3u8のURLは「https://j-island.net/movie/play_hls/file_name/200922_04/?play_list=j-island%2F200922_04%2F200922_04.m3u8」となります。
一部のサイトは完全の相対パスを利用しているので、ドメインを補足する必要がありません。

豆知識〜FFmpeg各オプションの簡単な説明

FFmpegでm3u8のURLから動画をダウンロードするには、FFmpegの各オプションを説明する必要があると思うので、まずその意味を解説します。
FFmpegで動画を処理する時、下のようなコマンドが基本形となります。

  • ffmpeg -i "入力.拡張子" "出力.拡張子"

FFmpegでストリーミング動画を保存する場合は、次のような形になります。

  • ffmpeg -i "解析URL" -c copy "ストリーミング.ts"

また他のオプションの説明は下記をご覧下さい。

-user-agent ""は、ブラウザの種類やバージョンを表す文字列です。ブラウザからのアクセスを偽装するために必要となります。

-codec copyは、動画・音声を複製します。

-c copyと書くこともできます。

-copytsは、元動画ファイルのタイムスタンプをコピーするオプション。

-bsf:a aac_adtstoascは、tsからmp4に変換するときに付けるオプション。…なのですが、今は付けなくてもよしなにやってくれるみたいです。

-loglevel "error"は、プロンプトに表示されるログの設定になります。このオプションを付けると、エラーが起こったときのみログが表示されます。

FFmpegでm3u8のURLからts動画をダウンロードして保存する方法

HLSにより配信している動画の形式は元々tsファイルなので、FFmpegのエンコードなしのダウンロードなら、動画はtsで保存します。出力の拡張子は「.ts」にします。

コマンドは「ffmpeg -i "http*****.m3u8" -c copy "output.ts"」となります。そして下の順でやったら、FFmpegでm3u8のURLからts動画をダウンロードすることができます。

Windows 10の左下にある検索ボックスで「CMD」を入力して、「ffmpeg -i "http*****.m3u8" -c copy "output.ts"」をコピペして「Enter」キーをクリックしたら、FFmpegでm3u8のURLから動画をtsファイルにダウンロードして保存します。

FFmpegでm3u8動画をtsにダウンロードするコマンド
FFmpegでm3u8動画をtsにダウンロードするコマンド

そのダウンロードしたtsファイルの保存先はコマンドプロンプトを開いて、そのカーソルの左にあるパスです。
下図のように、ダウンロードしたtsファイルの保存先はC:\Users\akiというフォルダです。

FFmpegでダウンロードしたtsファイルの保存先
FFmpegでダウンロードしたtsファイルの保存先

FFmpegでm3u8のURLからts動画をMP4に変換して結合する方法

ですが、tsファイルはアプリケーション側で扱いにくい形式なので、tsからmp4形式に変換するのが一般的です。

FFmpegでストリーミング動画形式を変換すると画質や音質は劣化するのではないか、と心配になるかも知れません。

HLSには元のファイルにも規定があり、ts(コンテナの)の中にはmp4(コンテナに入れられるコーデックの映像・音声)が入っています。このような変換を上のコマンドで行った場合は、データの先頭にあるファイル情報(ヘッダ)のみが変更されます。ビデオとオーディオのコーデックは変換しないので、映像・音声はそのままなので、劣化するということはありません。

それでは、FFmpegでm3u8のURLから動画をMP4に変換して結合する方法を紹介します。

Windows 10の左下にある検索ボックスで「CMD」を入力して、「ffmpeg -i "http****.m3u8" -c copy -bsf:a aac_adtstoasc "output.mp4"」をコピペして「Enter」キーをクリックしたら、FFmpegでm3u8のURLから動画をtsファイルにダウンロードして保存します。

FFmpegでm3u8動画をMP4に変換するコマンド
FFmpegでm3u8動画をMP4に変換するコマンド

そのダウンロードしたtsファイルの保存先はコマンドプロンプトを開いて、そのカーソルの左にあるパスです。

下図のように、ダウンロードしたMP4ファイルの保存先はC:\Users\akiというフォルダです。

FFmpegでダウンロードしたMP4の保存先
FFmpegでダウンロードしたMP4の保存先

まとめ

FFmpegでm3u8のURLから動画をダウンロードする方法を身につけましたか。

それでも、FFmpegの使い方が分からない場合、筆者に連絡しましょう。aki@winxdvd.com

高性能動画保存ソフト- VideoProc

VideoProcは人気動画保存ソフトで、ニコニコ、インスタグラムストーリーのような1000+ネット動画をダウンロードして保存することが出来ます。また、録画機能が搭載されているので、動画やゲームを録画して保存するも簡単にできます。保存した動画をMP4, MOV, AVI, FLV MP3など形式でお使いのパソコンやスマホで自由に楽しめます。

この記事を書いた人:アキ

本ページの内容に関して、ご意見等ございましたら、お気軽にお問い合わせください。

  • メールアドレスが公開されることはありません。 * が付いている欄は必須項目です。