ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
HLS(HTTP Live Streaming)は、Apple が 2009 年に発表したストリーミング配信プロトコルで、.m3u8 はそのテキスト形式のプレイリストファイルです。M3U8 自体は M3U(MP3 プレイヤー時代のプレイリスト形式)の UTF-8 エンコード版で、拡張子の「8」は UTF-8 を意味します。HLS では M3U の構文を拡張し、配信制御用の独自ディレクティブ(#EXT-X- で始まるタグ)を多数追加して、本格的なストリーミングプロトコルとして仕立て直しました。
HLS の基本アイデアは「動画を数秒単位の細切れセグメントに分割し、ふつうの HTTP サーバから順番に配信する」というシンプルなものです。専用のストリーミングサーバ(RTMP、RTSP)が不要で、CDN(Akamai、CloudFront、Fastly など)が普通に使え、企業ファイアウォール越しでも HTTP のため通過しやすいというメリットがあります。
もう一つの中核機能が適応ビットレート配信(Adaptive Bitrate, ABR)です。一つの動画を 360p / 720p / 1080p / 4K と複数画質でエンコードしておき、視聴者の回線速度・端末性能に応じてプレイヤーが動的に画質を切り替えます。電車で電波が悪くなれば 360p に下げ、Wi-Fi に戻れば 1080p に戻る、という挙動を支える仕組みです。
2017 年に IETF で RFC 8216 として標準化され、iOS / iPadOS / tvOS では Safari と AVPlayer がネイティブで HLS を再生します。Android / PC ブラウザでは hls.js / Shaka Player などの JavaScript ライブラリ経由で再生されるのが一般的です。
内部構造
HLS の配信は通常 2 段階のプレイリスト構成を取ります。
マスタープレイリスト(Master Playlist):各画質バリアントへのリンクを束ねるトップレベルのプレイリスト。例:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360
360p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2400000,RESOLUTION=1280x720
720p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080
1080p/index.m3u8メディアプレイリスト(Media Playlist):個別画質のセグメント一覧。例:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:6.000,
seg0.ts
#EXTINF:6.000,
seg1.ts
#EXTINF:6.000,
seg2.ts
#EXT-X-ENDLIST主要なタグ:
#EXTM3U:M3U プレイリスト宣言(必須、1 行目)#EXT-X-VERSION:HLS バージョン#EXT-X-TARGETDURATION:セグメントの最大長(秒)#EXT-X-MEDIA-SEQUENCE:セグメント連番開始番号(ライブで重要)#EXTINF:個々のセグメントの長さ#EXT-X-STREAM-INF:マスタープレイリストでバリアント情報を示す#EXT-X-ENDLIST:オンデマンド配信での終端マーカー(ライブでは付けない)#EXT-X-KEY:AES-128 暗号化キー指定(DRM/コンテンツ保護)#EXT-X-DISCONTINUITY:セグメント間の不連続(CM 挿入等)
セグメントは元々 MPEG-TS(.ts)が標準でしたが、現在は fMP4(fragmented MP4、.m4s)も使え、DASH との共通化が進んでいます。
主な用途
- 動画配信サービス:Apple TV+、Disney+、Hulu、ABEMA、TVer など多くの OTT サービスが HLS で配信
- ライブ配信:YouTube Live、Twitch のバックアップ、スポーツ中継、ニュース配信
- iOS / Apple TV:HLS が公式推奨。AppStore 審査では 10 分以上の動画は HLS 配信が必須要件
- 企業ウェビナー:Zoom ウェビナー、Microsoft Stream の動画配信
- CDN 配信:CloudFront、Akamai、Fastly、Cloudflare Stream が HLS をネイティブサポート
- 監視カメラ:ネットワークカメラの Web 配信
- 音声配信:音声のみの HLS でラジオ配信、ポッドキャストの一部
関連形式との比較
vs MPEG-DASH:DASH は MPEG が ISO/IEC 23009-1 として 2012 年に標準化した競合プロトコル。XML 形式の MPD マニフェストを使う点が m3u8 との大きな違い。両者は機能的にほぼ同等で、現在は CMAF(Common Media Application Format)で同じ fMP4 セグメントを使えるよう統一が進んでいます。
vs RTMP:RTMP は Flash 時代のリアルタイムプロトコル。低遅延だが Flash 終焉で配信端では衰退、収録端(OBS → サーバ)でのみ生き残っています。HLS は配信端、RTMP は収録端という棲み分けが定着しました。
vs Progressive MP4:単一の MP4 ファイルを HTTP で配信する方式。シンプルだが画質切り替えができない。小規模配信向け。
vs Low-Latency HLS(LL-HLS):従来の HLS は遅延が 10〜30 秒あったため、Apple は 2020 年に LL-HLS を発表。部分セグメント(partial segment)と HTTP/2 push を使って 2 秒程度まで遅延を縮めます。
編集・再生ツール
セグメント生成:ffmpeg(ffmpeg -i in.mp4 -c copy -hls_time 6 -hls_playlist_type vod out.m3u8)、Bento4、Shaka Packager、AWS Elemental MediaConvert。
ライブ配信:OBS Studio + Nginx-RTMP + HLS、AWS Elemental MediaLive、Wowza Streaming Engine。
再生:iOS Safari / AVPlayer(ネイティブ)、Chrome / Firefox / Edge は hls.js または Shaka Player、Video.js、JW Player、THEOplayer などのプレイヤー経由。VLC、mpv、IINA はネイティブ対応。
検証ツール:Apple の Media Stream Validator(mediastreamvalidator コマンド)、ffprobe、hls-analyzer。
注意点
遅延:標準 HLS は構造上 10〜30 秒の遅延が発生します。スポーツ中継のリアルタイム性が求められる用途では LL-HLS や WebRTC を検討してください。
セグメント長:セグメントが長いほど効率は良いが、遅延が増え画質切り替え応答が鈍る。一般に 4〜6 秒、低遅延構成では 2 秒、LL-HLS の部分セグメントでは 0.3 秒程度。
CORS 設定:ブラウザで hls.js を使う場合、セグメント・プレイリスト両方に適切な CORS ヘッダ(Access-Control-Allow-Origin)が必要です。
UTF-8 BOM:仕様上 BOM は禁止。BOM 付きで保存するとプレイヤーが #EXTM3U を認識せず再生に失敗します。
パスの相対参照:プレイリスト内のセグメント URI はプレイリストファイルの位置を基準とする相対パス、または絶対 URI。CDN で配信する際にパス設計を間違えると 404 連発になります。
DRM:強い著作権保護には FairPlay Streaming(Apple)や Widevine(Google)+ DASH の併用が必要。AES-128 のみでは商用配信のセキュリティ要件を満たしません。
ライブとオンデマンドの区別:ライブでは #EXT-X-ENDLIST を付けず、定期的にプレイリストを更新します。オンデマンドでは #EXT-X-ENDLIST で終端を明示します。
関連リンク
- 音声・動画形式(親カテゴリ)
- ファイル拡張子とは
- MP4(.mp4 / .m4v)
- WebM(.webm)
- MKV(.mkv)
- MOV(.mov)
- AAC(.aac / .m4a)
- アニメーション コンテンツでの動画フォーマットの使用
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- MP3(.mp3)
- WAV(.wav)
- FLAC(.flac)
- AAC(.aac / .m4a)
- MP4(.mp4 / .m4v)
- MOV(.mov)
- WebM(.webm)
- MKV(.mkv)
- Opus(.opus)
- M3U8 / HLS(.m3u8)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?