HTTPライブストリーミングHLSとも呼ばれる)は、Apple社が開発し、2009年にリリースされたHTTPベースのアダプティブビットレートストリーミング通信プロトコルです。このプロトコルは、メディアプレーヤー、ウェブブラウザ、モバイルデバイス、ストリーミングメディアサーバーなどで広くサポートされています。2022年現在、毎年実施されるビデオ業界調査では、HLSが最も人気のあるストリーミング形式であることが一貫して示されています。[2]

HLSは、ストリーム全体を複数の小さなHTTPベースのファイルダウンロードに分割し、各ファイルダウンロードが、潜在的に無制限のトランスポートストリーム全体から1つの短いチャンクをダウンロードするという点で、MPEG-DASHに似ています。異なるビットレートでエンコードされた利用可能なストリームのリストは、拡張M3Uプレイリストを使用してクライアントに送信されます。[3]

HTTPライブストリーミングは、標準HTTPトランザクションに基づいているため、 RTPなどのUDPベースのプロトコルとは異なり、標準HTTPトラフィックを通過させるあらゆるファイアウォールプロキシサーバーを通過できます。これにより、従来のHTTPサーバーからコンテンツを提供したり、広く利用可能なHTTPベースのコンテンツ配信ネットワークを介して配信したりすることも可能になります。[4] [5] [6]この標準規格には、標準的な暗号化メカニズム[7]とHTTPSを使用した安全な鍵配布も含まれており、これらを組み合わせることでシンプルなDRMシステムが実現されます。プロトコルの最新バージョンでは、トリックモードの早送り・巻き戻しや字幕の統合も提供されています。

AppleはHTTPライブストリーミングをインターネットドラフト(個別提出)として文書化しました。これは、RFC( Request for Comments )として公開するプロセスの第一段階です。2015年12月現在、この文書の著者はRFC Independent Stream Editor(ISE)に対し、 IETFのコンセンサスプロセス外で情報提供目的(非標準)のRFCとして公開するよう要請しています。 [8] 2017年8月には、プロトコルのバージョン7を記述したRFC 8216が公開されました。[9]

建築

HTTPライブストリーミングは、HTTPライブストリーミング(HLS)をサポートする従来のウェブサーバーを使用してオーディオビジュアルコンテンツを配信します。コンテンツを適切なフォーマット(コーデック)に調整し、ネットワーク経由でリアルタイムに送信するには、 OBSなどの特定のソフトウェアが必要です。サービスのアーキテクチャは以下で構成されます。

サーバ
入力ビデオフローを配信に適した形式でコード化・カプセル化します。その後、複数のファイルに分割して配信準備を整えます。入力プロセスでは、ビデオはエンコードおよび分割され、ビデオフラグメントとインデックスファイルが生成されます。
  • エンコーダ:ビデオファイルをH.264形式で、オーディオをAACMP3AC-3、またはEAC-3形式で符号化します。[10]これはMPEG-2トランスポートストリーム(MPEG-TS)またはMPEG-4パート14 (MP4)でカプセル化されて伝送されます。
  • セグメンター: ストリームを等長のフラグメントに分割します。また、フラグメント化されたファイルへの参照を含むインデックスファイルを作成し、.m3u8形式で保存します。
卸売業者
標準の Web サーバーによって形成され、クライアントからの要求を受け入れ、ストリーミングに必要なすべてのリソース (.m3u8 プレイリスト ファイルと .ts セグメント ファイル) を配信します
クライアント
すべてのファイルとリソースをリクエストしてダウンロードし、それらを組み立てて、ユーザーに連続した動画として表示します。クライアントソフトウェアは、まずURL経由でインデックスファイルをダウンロードし、次に利用可能な複数のメディアファイルをダウンロードします。再生ソフトウェアは、シーケンスを組み立てて、ユーザーに連続して表示できるようにします。

特徴

HTTPライブストリーミングは、信頼性の低いネットワーク状況でも、ユーザーに見える再生の遅延を発生させることなく、プレーヤーが適応できるメカニズムを提供します。例えば、信頼性の低い無線ネットワークでは、HLSを利用することでプレーヤーは低品質のビデオを使用できるため、帯域幅の使用量を削減できます。HLSビデオは、同じビデオを複数のサーバーで再生することで高可用性を実現できます。これにより、サーバーの1つに障害が発生した場合でも、プレーヤーはシームレスに切り替えることができます。

適応性

プレーヤーがネットワーク帯域幅に適応できるように、元のビデオは複数の異なる品質レベルでエンコードされます。サーバーは、これらのエンコード(バリアントストリーム)のインデックス(マスタープレイリスト)を提供します。プレーヤーは再生中にこれらのバリアントストリームを選択でき、ネットワーク状況の変化に応じてシームレスに切り替えることができます。

断片化されたMP4の使用

Appleは2016年のWWDCで、フラグメントMP4 (fMP4)ファイル用のバイト範囲アドレス指定機能の搭載を発表しました[11] 。これにより、 MPEG-2トランスポートストリームに多重化することなく、HLS経由でコンテンツを再生できるようになります。業界では、これをHLSとMPEG-DASHの互換性に向けた一歩と捉えました[12] [13]

低遅延HLS

Low Latency の名前と対応する頭字語を持つ、無関係な HLS 拡張機能が 2 つ存在します。

  • AppleがWWDC2019で発表したApple Low Latency HLS(ALHLS)[14]
  • コミュニティLHLS(LHLS)はAppleの発表より前に存在し、よりシンプルであるとされている[15]

このセクションの残りの部分では、AppleのALHLSについて説明します。ALHLSは、ライブストリームの再生を開始する時間を短縮し、ライブストリーミングイベント中にその時間を維持することで、HLS経由でストリーミングする際のグラスツーグラスの遅延を削減します。MPEG-CMAFのfMP4と同様に、部分的なメディアセグメントファイルをミックスに追加することで機能します。CMAFとは異なり、ALHLSは部分的なMPEG-2 TSトランスポートファイルもサポートしています。部分的なメディアセグメントは、標準セグメント(例:6秒)を1秒未満(例:200ミリ秒)の等しいセグメントに分割したものです。標準の最初のセグメントは、一連の部分的なセグメントに置き換えられます。後続のセグメントは標準サイズです。[16] セグメントをプレイリストと一緒にプッシュするにはHTTP/2が必要であり、繰り返しHTTP/TCP接続を確立するためのオーバーヘッドを削減します。

その他の機能は次のとおりです:

  • プレイリスト デルタ更新: プレイリスト間で変更された内容のみを送信します。これは通常、単一の MTU に収まるため、大規模な DVR ウィンドウの場合、かなり大きくなる可能性があるプレイリストをより効率的に読み込むことができます。
  • プレイリストの再読み込みのブロック: ライブ メディア プレイリストを要求するときに、最初のセグメントも準備できるまで待機し、両方を同時に返します (追加の HTTP/TCP 要求を節約)
  • レンディションレポート: 他のメディアレンディションにメタデータを追加して、ABR間の切り替えを高速化します。
  • 新しいタグが追加されました: EXT-X-SERVER-CONTROL / EXT-X-PART / EXT-X-SKIP / EXT-X-RENDITION-REPORT
  • URL QUERY_STRING ?_HLSコールバックが追加されました

Appleは新しいツールも追加しました。tsrecompressor、オーディオとビデオの連続した低遅延ストリームを生成・エンコードします。mediastreamsegmenterツールの低遅延バージョンが利用可能になりました。これはHLSセグメンターで、tsrecompressorからUDP/MPEG-TSストリームを受け取り、上記の新しいタグを含むメディアプレイリストを生成します。

低遅延HLSのサポートは、tvOS 13ベータ版とiOS & iPadOS 14で利用できます。[17] 2020年4月30日、AppleはメインHLS仕様の第2版に低遅延仕様を追加しました。[18]

ダイナミック広告挿入

HLSでは、SCTE-35仕様に基づくスプライス情報を使用することで、動的な広告挿入がサポートされています。SCTE-35スプライスメッセージは、EXT-X-DATERANGEタグを使用してメディアプレイリストファイルに挿入されます。各SCTE-35 splice_info_section()は、SCTE35-CMD属性を持つEXT-X-DATERANGEタグで表されます。splice_insert()コマンドによって通知されるSCTE-35スプライスアウト/インペアは、同じID属性を持つ1つ以上のEXT-X-DATERANGEタグで表されます。SCTE-35スプライスアウトコマンドにはSCTE35-OUT属性が、スプライスインコマンドにはSCTE35-IN属性が必要です。

SCTE35-OUT属性とSCTE35-IN属性を含む2つのEXT-X-DATERANGEタグの間には、メディアセグメントURIのシーケンスが存在する場合があります。これらのメディアセグメントは通常、ローカル広告またはカスタマイズされた広告に置き換えることができる広告プログラムを表します。広告の置き換えでは、メディアファイルの置き換えは不要で、プレイリスト内のURIを別の広告プログラムを指すように変更するだけで済みます。広告の置き換えは、オリジンサーバーまたはクライアントのメディア再生デバイスで実行できます。

サーバーの実装

HTTP ライブ ストリーミングをサポートする注目すべきサーバー実装には次のようなものがあります。

  • Adobe Media Server は、iOS デバイス向け HLS (HLS) と Protected HTTP Live Streaming (PHLS) をサポートしています。
  • Akamai はライブ ストリームとオンデマンド ストリームで HLS をサポートしています。
  • AT&T は、ライブまたはオンデマンドのすべての形式で HLS をサポートしています。
  • Ant Media Serverはライブストリームとオンデマンドストリーム用のHLSと低遅延HLS [19]をサポートしています。
  • Axis Communication IPカメラはCamStreamerアプリACAP経由でHLSをサポートします
  • Instart はオンデマンド ストリーム用の HLS をサポートしています。
  • Amazon CloudFront はオンデマンドストリーム用の HLS をサポートしています。
  • Bitmovin はオンデマンドおよびライブ ストリーミング用の HLS をサポートしています。
  • CDNetworks は、ライブ ストリームとオンデマンド ストリームで HLS をサポートしています。
  • Cisco Systems : Live/TSTV/VOD/HLS および Cloud DVR サービスの完全なエンドツーエンドの配信をサポートします。
  • Cloudflare は、ライブ ストリームとオンデマンド ストリームで HLS をサポートしています。
  • EdgeCast Networks は、 HLS を使用したクロスデバイス ストリーミングをサポートします。
  • FastlyはライブストリームとオンデマンドストリームでHLSをサポートしています。[20]
  • RealNetworks のHelix Universal Server は、 iPhone、iPad、iPod への H.264 および AAC コンテンツのライブおよびオンデマンド HTTP ライブまたはオンデマンド ストリーミングのために iPhone OS 3.0 以降をサポートしています。
  • MicrosoftIIS Media Services は、ライブおよびオンデマンドのSmooth Streamingと HTTP Live Streaming をサポートしています。
  • レベル 3 は、 HLS ライブ ストリームとオンデマンド ストリームをサポートします。
  • Limelight Networksは一部のアカウントでHLSをサポートしています。[21]
  • nginx-rtmp-moduleを搭載したNginxはライブモードでHLSをサポートします。ngx_http_hls_moduleモジュールを含む商用版Nginx PlusもHLS/HDS VODをサポートします。[22]
  • Nimble Streamer はライブおよび VOD モードで HLS をサポートし、Apple Low Latency HLS 仕様もサポートされています。
  • hls-serverパッケージを搭載したNode.jsは、ライブモードへのhlsエンコーディングとローカルファイル変換をサポートします。 [23]
  • OvenMediaEngineは、ライブ ストリーミング用の Low Latency HLS (LL-HLS) と HLS をサポートするオープン ソースプロジェクトです。
  • PeerTubeはHLSをサポート
  • Stormストリーミングサーバーは、メディアソース拡張プレーヤーのバックアップモードとしてHLSをサポートしています[24]
  • Tata Communications CDN は、ライブ ストリームとオンデマンド ストリームで HLS をサポートしています。
  • TVersity は、iOS デバイス上のあらゆるビデオ コンテンツを再生するために、オンザフライ トランスコーディングと組み合わせて HLS をサポートします。
  • UstreamはライブブロードキャストのHLS配信をサポートしています。取り込まれたストリームは、元のオーディオおよびビデオコーデックがHLSの要件を満たしていない場合、再トランスコードされます。
  • VLC メディア プレーヤーは、バージョン 2.0 以降、ライブ ストリームとオンデマンド ストリームの提供に HLS をサポートしています。
  • Wowza Media SystemsWowza Streaming Engine は、ライブ (DVR 付き)、オンデマンド ストリーミング、および Apple Low Latency HLS 仕様の HLS および暗号化された HLS をサポートします。

使用法

  • GoogleはAndroid 3.0(Honeycomb)でHTTPライブストリーミングのサポートを追加しました。 [25]
  • HPはwebOS 3.0.5でHTTPライブストリーミングのサポートを追加しました[26]
  • マイクロソフトは2015年にWindows 10のEdgeHTMLレンダリングエンジンにHTTPライブストリーミングのサポートを追加しました。[27]
  • マイクロソフトはIIS Media Services 4.0にHTTPライブストリーミングのサポートを追加しました。[28]
  • Yospace は、Yospace HLS Player および Flash SDK バージョン 1.0 に HTTP ライブ ストリーミングのサポートを追加しました。[引用が必要]
  • Sling MediaはSlingboxとSlingPlayerアプリにHTTPライブストリーミングのサポートを追加しました。 [29]
  • 2014/15年にBBCはライブインターネットラジオとオンデマンドオーディオサービス向けにHLS-AACストリームを導入し、iPlayerラジオクライアントでこれらのストリームをサポートしています。[30]
  • TwitchはHTTPライブストリーミング(HLS)を使用してライブストリーミングを送信し、多くの同時視聴者にスケーリングします。また、複数のバリエーション(例:1080p、720pなど)もサポートしています。[31]

サポートされているプレーヤーとサーバー

HTTP ライブ ストリーミングは、次のオペレーティング システムでネイティブにサポートされています。

Windows 10 は、Chromium ベースのBlinkブラウザエンジンに移行する前は、Microsoft Edge(現在は Edge Legacy と呼ばれています)で使用されていた独自のブラウザエンジンである EdgeHTMLHTTP ライブストリーミングをネイティブサポートしていました。Edge Legacy は、Windows 10 バージョン 2004 まで含まれていました。バージョン 20H2 で Edge Chromium に置き換えられました。Windows 11と同時に、Microsoft は HLS をネイティブにサポートする更新されたメディアプレーヤーをリリースしました

クライアント

サーバー

ライブエンコーダー

VODエンコーダー

参照

参考文献

  1. ^ Pantos, R.; May, W. (2017). 「プレイリスト」. HTTPライブストリーミング. IETF . p. 9. sec. 4. doi : 10.17487/RFC8216 . ISSN  2070-1721. RFC 8216. 2020年1月15日閲覧
  2. ^ Lederer, Stefan. 「2022年ビデオ開発者レポート」(PDF) . Bitmovin . 2023年10月25日閲覧
  3. ^ Jordan, Larry (2013年6月10日). 「HTTPライブストリーミングの基礎」. Larry's Blog . Larry Jordan & Associates . 2013年6月18日閲覧
  4. ^ 「MPEG-DASH vs. Apple HLS vs. Smooth Streaming vs. Adob​​e HDS」Bitmovin . 2015年3月29日.
  5. ^ Chen, Songqing; Shen, Bo; Tan, Wai-tian; Wee, Susie; Zhang, Xiaodong (2006-07-09). 「Webサーバー経由のインターネットストリーミングの事例」. 2006 IEEE International Conference on Multimedia and Expo . pp.  2145– 2148. doi :10.1109/ICME.2006.262660. eISSN  1945-788X. ISBN 9781424403677. ISSN  1945-7871. S2CID  9202042.
  6. ^ Songqing Chen; Bo Shen; Wee, S.; Xiaodong Zhang (2007-07-23). 「SProxy: インターネットストリーミングをサポートするキャッシュインフラストラクチャ」. IEEE Transactions on Multimedia . 9 (5): 1062– 1072. Bibcode :2007ITMm....9.1062C. CiteSeerX 10.1.1.74.4838 . doi :10.1109/TMM.2007.898943. ISSN  1520-9210. S2CID  870854. 
  7. ^ Pantos, R. (2011年9月30日). 「HTTPライブストリーミング」. インターネットエンジニアリングタスクフォース. 2013年6月18日閲覧
  8. ^ 「draft-pantos-http-live-streamingの履歴」 。 2017年4月17日閲覧ストリームが「なし」から「ISE」に変更されました。
  9. ^ Pantos, Roger; May, William (2017年8月). HTTPライブストリーミング. doi : 10.17487/RFC8216 . RFC 8216. 2017年9月5日閲覧
  10. ^ Roger, Pantos; William, May. 「HTTPライブストリーミング」. tools.ietf.org . 2017年1月23日閲覧。
  11. ^ HTTP ライブストリーミングの新機能。Apple Developer
  12. ^ Siglin, Tim (2016年6月16日). 「HLSがフラグメント化されたMP4をサポートし、DASHとの互換性を実現」StreamingMedia.com .
  13. ^ Grandl, Reinhard (2016年6月15日). 「WWDC16: HLSはFragmented MP4をサポートし、MPEG-DASHとの互換性も確保!」Bitmovin.com .
  14. ^ 低遅延HLS。Apple Developer
  15. ^ 「コミュニティが低遅延ライブストリーミングを提供してくれた。そしてAppleがそれを奪った」2019年6月14日。 2019年6月17日閲覧
  16. ^ 「Apple開発者向けドキュメント」。developer.apple.com 。 2022年8月10日閲覧
  17. ^ Speelmans, Pieter-Jan (2020年12月9日). 「Low-Latency Everywhere: How to implement LL-HLS across platforms」Theo . 2021年3月11日閲覧
  18. ^ Pantos, Roger (2020年4月30日). 「HTTP Live Streaming 2nd Edition」. IETF . 2020年4月30日閲覧。
  19. ^ Guney, Yunus Emre (2024年8月29日). 「ストリーミングを向上:Ant Media ServerによるLL-HLSマジック - Ant Media Server」. antmedia.io . 2024年12月6日閲覧
  20. ^ 「ビデオCDN | ビデオストリーミング | ストリーム配信 | Fastly」。www.fastly.com . 2020年10月1日閲覧
  21. ^ 「エンコーディングガイド」。Limelight Orchestrate Video Support。Limelight Networks。2013年8月1日時点のオリジナルよりアーカイブ2013年11月14日閲覧。
  22. ^ 「モジュール ngx_http_hls_module」. nginx.org .
  23. ^ "hls-server". npm. 2018年2月12日.
  24. ^ "Storm Streaming". Storm Streaming . 2021年7月30日閲覧出力デバイス: HLS、MPEG-DASH、WebSocket、RTMP
  25. ^ 「Android 3.0 プラットフォームのハイライト」。Android Developers。2011年1月28日時点のオリジナルよりアーカイブ。
  26. ^ “webOS 3.0.5 Updates”. 2012年1月22日時点のオリジナルよりアーカイブ。
  27. ^ 「簡素化されたアダプティブビデオストリーミング:Windows 10でのHLSとDASHのサポートを発表」。Internet Explorerチームブログ。2015年1月29日。
  28. ^ ab Siglin, Tim (2010年11月1日). 「First Look: Microsoft IIS Media Services 4」. StreamingMedia.com . 2011年7月30日閲覧
  29. ^ Chan, David (2010年11月26日). 「iPadアプリレビュー:SlingPlayer」. Blogcritics . 2014年4月15日時点のオリジナルよりアーカイブ2014年4月14日閲覧。
  30. ^ スコット、アンドリュー(2015年2月27日)「Audio Factory:概要」インターネットブログ、BBC。オンデマンドアセットはAAC HLSのみとなります。…現在もメーカーと協議中ですが、多くのメーカーが数週間から数ヶ月以内に、320 kb/sのHLS AACストリーム全57種類をユーザーに提供できると確信しています。
  31. ^ Shen, Yueshi (2017). 「ライブビデオのトランスマックス/トランスコーディング:FFmpeg vs TwitchTranscoder、パート1」
  32. ^ 「サポートされているメディア形式」。Android Developers
  33. ^ 「HTTP ライブ ストリーミング (HLS) | 使用できますか...HTML5、CSS3 などのテーブルをサポートします」。caniuse.com
  34. ^ 「Android版Firefox 50.0、新機能、アップデート、修正点をすべて見る」Mozilla
  35. ^ Giles, Ralph; Smole, Martin (2017年11月28日). 「Firefox での AV1 ビデオの DASH 再生」. Mozilla Hacks – ウェブ開発者ブログ.
  36. ^ 「Android版Firefoxベータ59.0beta、新機能、アップデート、修正点をすべてご覧ください」Mozilla
  37. ^ Slivka, Eric (2010年11月15日). 「iTunes 10.1で『iTunes Live Stream』サービスのヒントが見つかる」. MacRumors .
  38. ^ "#2943 (クライアントとしてのHTTPライブストリーミングのサポート)". VLCバグトラッカー. 2009年7月9日.
  39. ^ 「VLCプレーヤーでHLSストリーミングビデオを再生する - The VideoLAN Forums」。forum.videolan.org
  40. ^ 「Windows 8 - HTTP ライブストリーミング」。www.3ivx.com
  41. ^ 「3ivx - Xbox Live 開発者パートナー プログラム - コンポーネント プロバイダー」。www.3ivx.com
  42. ^ NV、THEO Technologies。「HTML5ビデオプレーヤー - THEOplayer」。www.theoplayer.com
  43. ^ Player、Radiant Media。「バージョン履歴 - Radiant Media Player」www.radiantmediaplayer.com
  44. ^ 「dailymotion – Medium」. Medium .
  45. ^ “hls.js デモページ”. 2015年11月20日時点のオリジナルよりアーカイブ。
  46. ^ "Orange-OpenSource/hasplayer.js". GitHub .
  47. ^ 「Spark」. Spark .
  48. ^ "google/shaka-player". GitHub .
  49. ^ 「Shaka Player デモ」. shaka-player-demo.appspot.com .
  50. ^ 「Fluid Player - HTML5 ビデオ プレーヤー」。www.fluidplayer.com
  51. ^ 「Fluid Player ドキュメント」. docs.fluidplayer.com .
  52. ^ "fluid-player/fluid-player". GitHub .
  53. ^ 「QMPlay2 - Qt Media Player 2」。2023年10月22日 – GitHub経由。
  54. ^ "marakew/AvProxy". GitHub .
  55. ^ Ozer, Jan (2015). 「レビュー:Bitmovinのクラウドビデオエンコーディングサービス、Bitcodin」www.StreamingMediaGlobal.com .
  56. ^ 「HLSビデオの配信 - Brightcove Learning」。support.brightcove.com
  57. ^ Guney, Yunus Emre (2024年8月29日). 「ストリーミングを向上:Ant Media ServerによるLL-HLSマジック - Ant Media Server」. antmedia.io . 2024年12月6日閲覧
  58. ^ 「MediaGoom。必須のウェブストリーミング」。