m3u8 オンラインプレーヤー
CORS対応の任意のm3u8/HLS動画URLを入力すると、ブラウザで直接オンライン再生できます。
📺 m3u8ファイルとは?理解すれば簡単です
簡単に言うと、m3u8は「プレイリスト」です。音楽アプリで作成するプレイリストと似ていますが、動画セグメントのURLを一つずつリストアップしたものです。
例えるなら:映画を見る場合、MP4形式なら完全なファイルで、最初から最後まで全て含まれています。しかしm3u8形式の場合、映画は数百の小さなセグメント(各5~10秒程度)に分割され、 .m3u8ファイルがこれらのセグメントのアドレスをリストアップし、プレーヤーに「まずセグメント1を再生、次にセグメント2、次にセグメント3...」と指示します。
プレーヤーがこのm3u8ファイルを受け取ると、順番にこれらの小さなセグメントを要求してバッファします。セグメント化されていることはほとんど感じられず、連続して再生される動画のように見えます。
🌐 HLSプロトコル:なぜこれほど人気なのか?
m3u8ファイルの背後にある技術はHLS(HTTP Live Streaming)と呼ばれ、Appleが2009年に開発しました。現在、オンライン動画で広く使われるプロトコルとなっています。 大規模なメディアサービス、オンライン講座、ライブ配信システム、自社メディア基盤でHLSが使われる主な理由は次のとおりです:
- 適応ビットレート:接続が速い時は自動的に1080p HDに切り替え、遅い時は480pに下がります。手動で切り替える必要がなく、バッファリングもありません。
- サーバーに優しい:HLSは標準HTTPプロトコルを使用するため、通常のWebサーバーで処理できます。専用のストリーミングサーバーは不要で、展開が簡単です。
- CDNに優しい:動画セグメントをCDN(コンテンツ配信ネットワーク)に直接配置できます。ユーザーが動画を見る際、自動的に最も近いノードから取得され、高速で低遅延です。
- ライブとオンデマンド両対応:ライブストリーミングでは、サーバーが新しいセグメントを生成しながらm3u8リストを更新します。オンデマンドでは、リストは固定されており、ユーザーは自由にプログレスバーをドラッグできます。
- 帯域幅効率:ユーザーが早送りする際、目標位置付近のセグメントのみを読み込めばよく、動画全体を転送する必要がありません。
🔧 実際にどこで使われているか?
オンライン動画プラットフォーム:多くのメディアサービスはオンデマンド再生やライブ配信にHLSを採用しています。再生をクリックすると、ブラウザはプレイリストを要求し、セグメントごとに動画を読み込みます。
ライブストリーミングプラットフォーム:スポーツイベント、ゲームストリーミング(Twitch、Huya、Douyuなど)はすべてHLSを使用しています。配信者がサーバーにプッシュし、サーバーがリアルタイムで.tsセグメントを生成してm3u8リストを更新し、視聴者がライブ映像を見ることができます(通常10~30秒の遅延があります)。
オンラインコース:MOOCプラットフォームやオンライン学校は、m3u8を使用して「可変速度再生」「チャプタージャンプ」「再生再開」などの機能を簡単に実装でき、DRM暗号化でコースの海賊版を防ぐこともできます。
防犯カメラの再生:多くのスマートカメラのクラウド録画再生もHLS形式です。モバイルアプリで録画を閲覧する際、実際にはm3u8リストを再生しています。
💻 このプレーヤーを自分のウェブサイトに埋め込む方法
自分のウェブサイトやブログがあり、m3u8プレーヤーを追加したい場合は、このコードをHTMLにコピー&ペーストするだけです:
<iframe src="https://playearns.com/player.html?url=あなたのm3u8 URL"
width="100%" height="500" frameborder="0" allowfullscreen></iframe>
url=あなたのm3u8 URLを実際の動画リンクに置き換えてください。例えば、動画URLがhttps://example.com/video/index.m3u8の場合、
https://playearns.com/player.html?url=https://example.com/video/index.m3u8と記述します。
複数のチャンネルや動画がある場合、ページにボタンの行を配置し、各ボタンに対応するm3u8 URLを設定します。ユーザーがボタンをクリックすると、JavaScriptでiframeのsrc属性を変更し、
チャンネル切り替えを実現できます(テレビのチャンネル変更と同様)。
⚠️ 一部のm3u8が再生できない理由
問題1:クロスオリジン制限(CORS)
これが最も一般的な理由です。動画サーバーがクロスオリジンアクセス権限(Access-Control-Allow-Originレスポンスヘッダー)を設定していない場合、ブラウザはm3u8ファイルやセグメントの読み込みを拒否します。
メディアサーバーを管理している場合は、サーバー側でCORSヘッダーを修正してください。許可されたテストストリームでは、VLCやPotPlayerで比較し、ブラウザポリシーの問題かストリーム自体の問題かを切り分けます。
問題2:リンクの有効期限切れまたは認証が必要
一部のm3u8 URLは時間制限付き(例:生成後1時間以内のみアクセス可能)か、特定のトークンが必要です。期限切れまたはトークンがない場合、404エラーが発生します。
問題3:暗号化された動画
一部のプラットフォームはセグメントをAES-128やDRMで保護しています。再生には正当な許可と対応するキーが必要です。許可がない場合、m3u8ファイルが見えていても再生できません。
📥 m3u8とMP4の違い
m3u8は「どのように再生し、どのセグメントを再生するか」を記述するプレイリストです。MP4は動画ファイル自体で、実際の音声・動画データを含んでいます。
m3u8はオンライン再生に適しています:特にライブストリーミングと長時間のオンデマンド動画に適しており、適応ビットレート、早送り、再生再開をサポートします。
MP4は許可済み素材のローカルパッケージングに適しています:主な音声・動画データを1つのファイルにまとめられるため、自分が所有または処理許可を得た素材の検証、保管、編集前処理に向いています。
自分が所有または許可を得たHLS素材を処理する必要がある場合は、m3u8をMP4に変換する合法的な処理ガイドを確認してください。 CORS、セグメント、コーデック互換性、FFmpegの基本的な使い方と制限を整理しています。
🛠️ HLS素材を合法的に処理する方法
手順1:権利とソースを確認する
作成、アップロード、所有、または明確な許可を得たHLSストリームのみを処理してください。第三者サービスのリンクは、必ず利用規約とライセンス範囲を先に確認します。
手順2:FFmpegでローカル検証する
FFmpegは、許可済みメディアのパッケージングやコーデックの問題を確認するのに向いています。例:
ffmpeg -i "https://example.com/owned-media/index.m3u8" -c copy output.mp4
手順3:再生失敗を診断する
このWebプレーヤーで読み込めない場合は、ブラウザのNetworkパネルでステータスコード、CORSヘッダー、セグメントのMIMEタイプ、許可済みキー要求、プレイリストの有効期限を確認します。