M3U8ファイルは動画そのものではなく、UTF-8で記述されたテキスト形式のプレイリストです。 HLS(HTTP Live Streaming)では、再生に必要な動画・音声の分割ファイルや別のプレイリストの場所を示します。そのため.m3u8だけをダウンロードしても、動画全体が保存されたことにはなりません。

ライブ配信の視聴中やブラウザーの通信ログ、Windowsで動画を保存しようとしたときにM3U8を見かけることがあります。構造がわかれば、再生できない原因や利用可能な画質を判断しやすくなります。

M3U8ファイルには何が書かれている?

メディアプレイリストをメモ帳で開くと、次のような内容が表示されます。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:6.0,
segment0.ts
#EXTINF:5.2,
segment1.ts
#EXT-X-ENDLIST
  • #EXTM3U:拡張M3U形式のプレイリストであることを示します。
  • #EXT-X-VERSION:3:HLSの互換性バージョンで、画質を意味する数字ではありません。
  • #EXT-X-TARGETDURATION:6:セグメントの目標最大時間を秒単位で示します。
  • #EXT-X-MEDIA-SEQUENCE:0:先頭セグメントの通し番号です。
  • #EXTINF:6.0,:次のセグメントの再生時間です。
  • segment0.ts:動画データの場所。相対パスは元のプレイリストURLを基準に解決されます。
  • #EXT-X-ENDLIST:これ以上セグメントが追加されないことを示します。このタグがないだけでライブ配信と断定はできません。

M3U8の「8」はUTF-8を表します。動画のコーデック名ではありません。例では.tsを使っていますが、HLSは.m4sなどのfMP4セグメントにも対応しています。M3U8は動画の「目次」、実際の映像は参照先のファイルにある、と考えるとわかりやすいでしょう。

マスタープレイリストとメディアプレイリストの違い

項目 マスタープレイリスト メディアプレイリスト
記載内容 画質・音声などの別プレイリスト 実際のメディアセグメント
代表的なタグ #EXT-X-STREAM-INF #EXTINF
主な役割 再生するバージョンを選ぶ 分割ファイルを順に取得する

マスタープレイリストの例:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=900000,RESOLUTION=640x360
360p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3200000,RESOLUTION=1920x1080
1080p/index.m3u8

BANDWIDTHはバリエーションの申告ピークビットレート、RESOLUTIONは画像サイズを示します。プレーヤーは利用可能なバリエーションを選んで、そのメディアプレイリストを読み込みます。別言語の音声・字幕が#EXT-X-MEDIAで指定される場合もあります。マスターが必ず最高画質というわけではありません。

WebサイトがM3U8・HLSを使う理由

通信状況に応じた画質変更。 回線が不安定になれば低いビットレートの映像へ切り替えられ、バッファリングを減らせる可能性があります。

HTTP/CDNで配信できる。 短いセグメントを一般的なWebサーバーから配信でき、動画全体の転送完了を待たずに再生を開始できます。

ライブとオンデマンドの両方に対応。 ライブではプレイリストが更新され、録画済みのVODでは完成した一覧を使うことが一般的です。

複数の画質・音声・字幕。 HLSは必ず.tsのみを使うわけではなく、fMP4/CMAFも利用できます。

WindowsでM3U8を開いたり再生したりできる?

参照先にアクセスでき、プレーヤーが対応していれば可能です。VLCなら多くのHLS URLを「ネットワークストリーム」から開けます。ブラウザーによっては標準対応し、対応していない場合はWebサイトのJavaScriptプレーヤーが再生を担当します。メモ帳で開く場合はテキストの確認だけです。

保存済みの.m3u8がオフラインで動かないのは、動画セグメントがサーバー上に残っているためです。URLの有効期限切れ、認証情報の不足、相対パスの変化でも失敗します。

M3U8ストリームをMP4として保存する方法

.m3u8の拡張子を.mp4に変更しても変換にはなりません。参照先のデータを取得し、互換性がある場合にMP4コンテナーへまとめる必要があります。

方法1:FFmpeg(コマンドライン)

保存する権利のあるストリームなら、次のコマンドが出発点になります。

ffmpeg -i "https://example.com/path/master.m3u8" -c copy output.mp4

URLを実際にアクセスできるものへ置き換えてください。-c copyは対応する音声・映像を再エンコードせずにコピーするため、通常は画質を維持できます。ただし、期限切れURL、欠けたセグメント、暗号化、互換性のないコーデック、ライブ配信では失敗することがあります。

方法2:Direct Link Downloader(Windows)

  1. 自分が所有するか保存許可を得たコンテンツのM3U8 URL、または対応する動画ページのURLをコピーします。
  2. WindowsでDirect Link Downloaderを開いて貼り付け、解析結果を確認します。
  3. 選択可能な画質と保存フォルダーを指定してダウンロードします。対応ストリームではセグメントがまとめられ、再生可能なファイルとして保存されます。MP4出力の可否は元データとの互換性によります。
  4. 元ファイルを削除する前に、映像・音声・長さを再生して確認しましょう。

Direct Link DownloaderをMicrosoft Storeで見る →

M3U8保存の限界と注意点

  • DRMは回避できません。 #EXT-X-KEYがあるだけでDRMと断定できませんが、ライセンスを使う保護コンテンツの復号やアクセス制限の回避は通常のダウンローダーの機能ではありません。
  • 期限切れURLは復元できません。 署名付きURLやCookieなどの認証情報には有効期限があります。正規の手段で新しいリンクを取得してください。
  • 元動画以上の画質にはできません。 ソースが720pならM3U8を使っても4K映像にはなりません。
  • 正常なMP4を常に保証するわけではありません。 音声トラックの欠落や不完全なライブ録画、非対応コーデックで失敗する場合があります。

公開または利用許可のあるURLは無料のM3U8 Inspectorで先に確認できます。秘密の署名付きURLを信頼できないサービスへ貼り付けないでください。

よくある質問

M3U8ファイルはウイルス?

通常はプレーンテキストであり、実行ファイルではありません。ただし、不審なサーバーへのリンクを含むことがあります。信頼できるプレーヤーを使ってください。

M3UとM3U8の違いは?

両方ともプレイリストですが、M3U8はUTF-8で保存されます。一般的な音楽用M3Uが必ずHLSであるわけではありません。

M3U8とMP4は同じもの?

いいえ。M3U8はメディアの場所を示すテキスト、MP4は映像や音声を格納するコンテナーです。

TSファイルとは何が違う?

M3U8は目次、.tsは動画データを含むMPEG-2 Transport Stream形式です。詳しくはM3U8をMP4に保存する手順をご覧ください。

ブラウザーで再生できるのに保存できないのはなぜ?

WebプレーヤーにはCookie、認証ヘッダー、短時間だけ有効なURL、DRMなどが組み込まれている場合があります。再生できても外部ツールでのダウンロードが保証されるわけではありません。

ライブ配信も保存できる?

許可された非DRMの配信なら録画できる場合があります。ただし、プレイリストに過去のセグメントが残っていなければ、以前の部分は取得できません。

まとめ

M3U8は動画本体ではなく、HLSプレーヤーがメディアを探すための地図です。オフライン保存にはプレイリストだけでなく、アクセス可能なセグメントと適切な出力形式が必要です。対応ストリームをWindowsで扱う場合は、Direct Link Downloaderを利用できます。

所有する、または保存許可のあるコンテンツのみダウンロードしてください。DRMやアクセス制限の回避には対応していません。

参考資料

続けて読む