Example Playlist Files for use with HTTP Live Streaming メモ

Example Playlist Files for use with HTTP Live Streaming メモ

このテクニカルノートでは、HTTPライブストリーミングマルチメディアデータをストリーミングするために使用できる
いくつかの例ではプレイリストファイルについて説明します。

Introduction

HTTPライブストリーミングは、メディアの種類別セグメントファイルと呼ばれる典型的には約10秒持続時間の小さい一連のファイル、
などのオーディオおよびビデオを送信します。
インデックスファイル、またはプレイリストは、メディアセグメントファイルのURLの、順序付けされたリストを提供しています。
HTTPライブストリーミング用のインデックスファイルは。M3U8プレイ、MP3プレイリストに使用されます。m3u形式の拡張子と
して保存されます。
インデックスファイルのURLは、シーケンス内のインデックスファイルを要求するクライアントによってアクセスされます。
このテクニカルノートでは、HTTPライブストリーミングとマルチメディアデータをストリーミングするために使用することができます
プレイリストファイルのいくつかの異なる種類について説明します。
HTTPライブストリーミングプロトコルおよびこのテクニカルノートで提示したプレイリスト情報の詳細については、HTTPのIETFインタ
ーネットドラフト仕様をライブストリーミングを参照してください。
ライブストリーミングHTTPの詳細については、また、HTTPライブストリーミングの概要を参照してください。
あなたがプレイリストを生成するために、Apple HTTPライブストリーミングのツールを使用することができます。
これらのツールは頻繁に更新されるので、確認して、現在のバージョンをダウンロードする必要があります。
あなたは、iPhone Developer Programのメンバである場合は、それらにアクセスできます。
単にアップルのデベロッパWebサイトにログオンし、ダウンロードエリアを検索します。

Basic Video on Demand (VOD) Playlist

ビデオのためにオンデマンド(VOD)のセッションで、メディアファイルは、プレゼンテーションの全体の長さを表す可能です。
インデックスファイルは静的であり、プレゼンテーションの開始以降に作成されたすべてのメディアファイルへのURLの完全な
リストが含まれています。
セッションのこの種のプログラム全体へのクライアントのフルアクセスを可能にします。
リスト1を例VODプレイリストを参照してください。

ここでオンデマンドプレイリストの例では、ビデオで使用されるタグの説明は次のとおりです。
EXTM3UとEXTINF:拡張M3Uファイル形式は、2つのタグが定義されています。
拡張M3UファイルはEXTM3Uなければならない最初の行によって、基本的なM3Uファイルと区別されます。
EXTINFは、それを以下のURLで識別されるメディアファイルを記述するレコードのマーカーである。
各メディアファイルのURLがEXTINFタグを付けなければなりません。
EXTINFタグは、秒単位のメディアセグメントの長さを指定する10進位取り記数法では、整数または浮動小数点数である
"持続時間"属性が含まれています。
EXT-X-PLAYLIST-TYPEタグは、プレイリストファイルに関する可変性情報を提供します。
それは全体のプレイリストファイルに適用されます。このタグは、EVENTまたはVODのいずれかの値を含めることができます。
タグが存在し、イベントの値を持つ場合、サーバは(それに行を追加するかもしれませんが)プレイリストファイルの任意の部分
を変更したり削除したりすることはできません。
タグが存在し、VODの値がある場合、プレイリストファイルは変更しないでください。

Important 常に浮動小数点EXTINF期間を(プロトコルバージョン3でサポートされている)を使用します。
これは、ストリーム内のシーク時、クライアントは、丸め誤差を最小限に抑えることができるようになります。
浮動小数点EXTINF期間を指定するときに、プレイリストファイルの互換バージョンを示すために、EXT-X-VERSION
タグを使用します(EXT-X-VERSIONタグを認識しない古いクライアントはコメントとして扱われ、プレイリストを扱います
としてバージョン1)。
プレイリスト内の各メディアファイルのURLが一意の整数のシーケンス番号を持っています。
URLのシーケンス番号は、1を加えたものを前にURLのシーケンス番号に等しくなります。
EXT-X-MEDIA-SEQUENCEタグは、プレイリストファイルに表示される最初のURLのシーケンス番号を示しています。
EXT-X-TARGETDURATIONタグは最大のメディアファイルの長さを指定します。
EXT-X-VERSIONタグは、プレイリストファイルの互換バージョンを示します。
プレイリストのメディアと、そのサーバーはHTTPのIETFインターネットドラフトの最新のバージョンのすべての規定を遵守しなければならない
プロトコルのバージョンを定義ストリーミング仕様のライブ。
EXT-X-ENDLISTタグには複数のメディアファイルはプレイリストファイルに追加されることを示します。

Important メディアファイルの再生リストのエントリの完全なパス名を使用して、リスト1にVODプレイリストに注目してください。
これは許可されているが、それは相対パスの代わりに使用されていることをお勧めします。
相対パス名は絶対パス名よりも移植性があります。
個々のプレイリストエントリのフルパス名を使用すると、ほとんどの場合、相対パス名を使用するよりもテキストを使用しています。
非常に長いVODプレイリスト、または非常に長い期間ライブプレイリストの場合、これはプレイリストファイルのダウンロード時間を増やす、
プレイリストファイル自体に大きなファイルサイズの違いを作成することができます。
ここで、相対パス名と同じプレイリストがあります。

Live Playlist (Sliding Window)

ライブセッションでは、インデックスファイルは、新しいメディアファイルが作成され、利用できるようになりますように、
ファイルからのメディアのURIを除去することによって更新されます。

Important EXT-X-ENDLISTタグは、彼らが利用可能になると新しいメディアファイルをインデックスファイルに追加されることを示す、
ライブプレイリストに存在していません。
メディアのURIは、それらがリストに表示される順序でプレイリストファイルから削除する必要があります。
EXT-X-MEDIA-SEQUENCEタグの値は、プレイリストファイルから削除されているすべてのメディアのURIに1ずつ増加しなければなりません。
それはセッションの開始時に現れるように例のライブのプレイリストは、リスト3を参照してください。
更新されたインデックスファイルが連続したストリームに移動ウィンドウが表示されます。
このタイプのセッションは、連続放送に適しています。
ここでは、新しいメディアのURIを使用して更新された後、同一のプレイリストは次のとおりです。

Event Playlist

イベントリストは、イベントの値を持つEXT-X-PLAYLIST-TYPEタグで指定されています。
イベントリストは始めるためだけに生きてプレイリストのように見えます。
それは最初に彼らが利用可能になると新しいメディアファイルをプレイリストに追加されることを示す
、EXT-X-ENDLISTタグを持っていません。

しかし、EVENTタグでは、すべてでプレイリストを変更することはできません。あなただけのファイルの最後に新しいセグメントを
追加することができます。
彼らは、フロントで追加することはできません。
イベントが締結しているまで、新しいセグメントは、EXT-X-ENDLISTタグが付加された時点で、追加されます。

名前が示すように、イベントのプレイリストは、典型的には、コンサートや、ユーザーが最初からイベントに任意の場所をシークできるようにしたいの
スポーツゲームなどのイベントのために使用されます。
このようなイベントを提供している場合は、おそらくあなたのコンテンツを保護したいと思うでしょう。
あなたのメディアファイルと暗号化を使用する方法について学ぶために暗号化キーを参照してください。

Basic Variant Playlist 

あなたは、同じプレゼンテーションの別のエンコーディングを提供するために複数のプレイリストファイルを提供することがあります。
リスト7を参照してください。
バリアントは、特定のビットレートでストリームのバージョンです。各バリアントは別のプレイリストです。
バリアントプレイリストが利用可能なバリアントのすべてを説明しています。
クライアントは、測定されたネットワークのビットレートに基づいて最も適切なバリアントに切り替わります。
クライアントのプレイヤーは、ストリーミング時にユーザに最高の体験を与えるために、再生の失速最小限に抑える
ために調整されています。

Note バリアントのプレイリストが再読み込みされていません。
クライアントは、バリアントのプレイリストを読み込んだ後は、バリエーションのセット変更されていないことを前提としています。
できるだけ早くクライアントがストリームを終了し、個々の変異体、のいずれかにendlistタグを見るように。

EXT-X-STREAM-INFタグは、プレイリストファイル内の次のURLは、別のプレイリストファイルを識別することを示しています。
次の属性が定義されています。
BANDWIDTH
値は、秒あたりのビットの10進整数です。
それが表示されるか、またはプレイリストに表示されるコンテナのオーバーヘッドを含むように計算された各メディアファイル全体のビットレート、
上限でなければなりません。

Important すべてのEXT-X-STREAM-INFタグは、帯域幅の属性を含める必要があります。

PROGRAM-ID
値が一意にプレイリストファイルのスコープ内の特定のプレゼンテーションを識別する小数点の整数です。
プレイリストファイルが同じプレゼンテーションの別のエンコーディングを識別するためにPROGRAM-IDが同じで複数のEXT-X-STREAM-INFタグを
含めることができます。
これらのバリアントのプレイリストは、追加EXT-X-STREAM-INFタグを含めることができます。

CODECS
値は、各形式プレイリストファイル内のメディアセグメント内に存在するメディアサンプルのタイプを指定する形式のカンマ区切りリストを引用符で
囲んだ文字列です。
有効な形式識別子はRFC6381[RFC6381]はによって定義されたISOファイルの形式の名前空間内のものです。

Important すべてのEXT-X-STREAM-INFタグは、コーデックの属性を含める必要があります。
この属性は、特定のストリームをデコードするために必要なコーデックの完全なリストを提供しています。
それは、クライアントが音声のみです。バリアント、およびオーディオとビデオの両方を持っているものを区別することができます。
次に、クライアントは、ストリームを切り替えるときは、この情報の使用は、優れたユーザーエクスペリエンスを提供することができます。

Note これと次の例では、'\'はタグは空白を削除した次の行に続くことを示すために使用されます。

Ad Playlist (Discontinuities)

多くの場合、ユーザーがこれらの特定のサイトから発信されている知っているように、それぞれの前に表示されたブラン
ドのいくつかの並べ替え(広告)と映画のシリーズ全体を提供したいと思う.
これを行う一つの方法は、単に各ムービーで広告をマージすることです。
あなたがしなければなら再エンコードの多くの映画の何百ものを持って、プラスの場合でも、各ムービーで広告を複製できます。
あなただけの一本の映画として広告を配信し、次のムービーを再生することができます。
問題は、映画への広告から移行するときに、品質の低下をされることになります。
たとえば、広告では、クライアントがその後徐々に可能な限り最高の再生体験を提供するために立ち上げ、それを読むことができることを確認するために
、低データレートで再生を開始します。
広告の再生が完了すると、ムービーは、低データレートで起動します(広告がそうしたように)と立ち上げ、あなたは品質のブレークが発生しますします。
ムービーの途中で広告を表示する場合は、一緒に行くとさらに、品質の低下を取得します。
ソリューションは、クライアントが来て変化があることがわかっているようにすることです。
これは、EXT-X-不連続タグで行われます。
EXT-X-不連続タグがそれに続くメディアファイルとそれに先行する1つの間のエンコーディングの不連続性を示しています。
ここで18Sの広告(セグメントad0.tsとad1.ts)が付いているいくつかのムービーを再生するためにEXT-X-不連続タグを使用して
ストリームの例としては、次のとおりです。

Encryption Keys

メディアファイルは、それらへのアクセス権を持つユーザーを制御するために暗号化されることがあります。
これを行うには、まずメディアを暗号化し、EXT-X-KEYタグとプレイリスト内の暗号化されたメディアセグメントにタグを付ける。
EXT-X-KEYタグはそれに従う復号メディアファイルに必要な情報を提供します。
これは、2つの異なる暗号化方式、NONEおよびAES-128をサポートしています。
EXT-X-KEYタグは初期化ベクトル(IV)の属性を含めることができます。
初期化ベクター属性が存在する場合、キーで使用する初期化ベクタを指定します。
その値は16進整数です。この初期ベクトルを変化させること暗号の強度を向上させます。
メディア暗号化のデフォルトの初期化ベクトル(何も指定されていない場合)、メディアファイルのシーケンス番号です。
あなたは、初期ベクトル値を指定して、シーケンス番号に依存しないでください。
この主な理由は、移植性です。
たとえば、セグメントが再暗号化を必要とし、そのシーケンス番号を変更するプレイリスト(例えば、広告を挿入する)、
に表示される場所を変更した場合。

Note 初期ベクトル属性は、最初のプロトコルバージョン2で登場し、プロトコルの以前のバージョンと互換性がありません。
初期ベクトルを指定するときに、プレイリストファイルの互換バージョンを示すために、EXT-X-VERSIONタグを使用します。

ここではリスト8からではなく、暗号化とEXT-X-KEYタグを使用してメディアに追加された初期ベクトルと同じ広告プレイリストの例です。

Alternate Media

iOSの5の新機能は、代替メディアのサポートがあります。
この機能は、プロバイダがメインのプレゼンテーションの "オーバーライド"とバリアントのプレイリストのセットのいずれかを
指定することができます。
存在する場合、クライアントは、オーバーライドメディア(オーディオまたはビデオ)を再生し、メインのプレゼンテーションから
同じタイプのすべてのメディアを抑制します。
これはプレゼンテーションでは、重複したメディアを格納するために、プロバイダを必要とするか、それは1つだけを必要とするとき、
クライアントはすべての亜種をダウンロードして必要とせずにメディアの複数のバージョンを提供することができます。
また、追加のメディアが、元のコンテンツをリマスタリングせずに続いて提供することができます。
新しいEXT-X-MEDIAタグがメディア選択グループを識別するバリアントプレイリストに定義されている。
さらに、2つの新しい属性がEXT-X-STREAM-INFタグに対して定義されています。オーディオオーディオメディアグループとビデオ映像
メディアグループを指定する指定します。
ストリームを再生しながら、これらは利用可能なメディアオプションを定義します。
メディアグループ内の各要素は、同様の特性を(同じコーデック、同じ最大帯域幅)を持つ必要があります。
STREAM-INFバリアントは、AUDIO(またはビデオ)属性を持つオーディオ(またはビデオ)の選択肢を提供することを示すことが
できます。
この値は、選択することができるすべてのメディアタグで共有されるグループIDです。
STREAM-INFタグはAUDIO(またはビデオ)属性を持つ場合、それはまた、コーデック属性を持っている必要があります。
EXT-X-MEDIAタグが記述されるメディアは、そのURI属性を省略しSTREAM-INFタグのURIに含まれていることを示すことができます。

Note つのメディアの代替は、STREAM-INFのURIで運ばれ、選択した代替ではないされている場合、両方を交互に、ダウンロード
することができます。

EXT-X-MEDIA AUTOSELECT属性タグの値がYESである場合、クライアントはそのような選択されたシステムの言語として、現在の再生環境を
、一致しているので、明示的なユーザー·プリファレンスが存在しない場合に、この代替を再生することもできます。
その不在は、NOの暗黙的な値を示します。
この属性はオプションです。
EXT-X-MEDIAのデフォルト属性タグの値がYESである場合、クライアントは別の選択肢を示すユーザからの情報がない場合に、この代替を果たすべきである。
この属性はオプションです。その不在は、NOの暗黙的な値を示します。
ここでは、3つのオーディオオプションを持つバリアントプレイリストの例は次のとおりです。

MEDIAタグのNAME属性は一意である必要があります。
必要に応じて、コーデックやビットレートの変更を可能にするために、複数のオーディオグループがあるかもしれません。
しかし、バリアント内の各オーディオグループは、その中に交互の正確な数が同じである必要があります。

たとえば、上記の例では、より高いビットレートのオーディオを提供するために、バリアントリストは次のようになります。

メディアグループの各メンバーは、そのメディアタイプのため、それぞれのメディアグループにレプリケートされる必要があること
に注意してください。
たとえば、 "オーディオ-HI"グループの "スペイン語"を省くことができませんでした。

代替のビデオはまた別の角度のために、提示することができます。
たとえば、このバリアントプレイリストは3つの異なるカメラアングルを持つ単一のビットレートと単一のオーディオストリームを説明します。
異なるビットレートを生成するには、異なるビデオ·グループIDは、各ビットレートのために必要となるであろう。

Byte-Range Support for Segments

上記の概要のセクションで説明したように、プレイリストは、メディアセグメントファイルのURLをクライアントに提供します。
各メディアのURLは、単一の連続した​​ストリームのセグメントであるメディアファイルを指します。これは、あなたが映画の中で700メディアセグメント
を持っている場合、あなたが実際にあなたのウェブサーバ上で700のファイルを持っていることを意味します。
iOSの5の新機能は、現在大規模なURLのバイト範囲(サブレンジ)としてメディアセグメントを指定することができます。これは、
大きなファイルまたは単一の大きなファイルにメディアセグメントを統合することができます。この主な利点は、クライアントがメ
ディアの再生ではなく、別の場所からそれぞれの連続した​​セグメントファイルをダウンロードされたとき、それは実際にはシーケン
ス内の大きなファイルを介して歩いている。
これは、プロキシキャッシュサーバはあなたが必要となり、セグメントは、あなたがそれをしたい時にキャッシュ内にあることを確認するために、
プリフェッチする必要があるかのより良いアイデアを得ることができます。
追加の利点は、管理するためのはるかに少ないファイルが存在します。あなたは長い間映画の中で多くのビデオバリアントを持っていれば、個々の
セグメント数千のファイルを持つことができます。バイト範囲をサポートするように、あなただけのいくつかを持っています。

Important 非静的リソースに対してバイト範囲要求を行うと、公共のインターネット上で信頼できません。
Webサーバがそれを扱うことができる場合であっても、あなたの仲介のキャッシングサーバーではない場合があります。そのため、
我々は(もちろん、彼らは常にオンデマンドコンテンツのビデオのために静的になります)、ライブコンテンツのためのあなたのメ
ディアファイルは静的であることをお勧めします。
それだけでは限り、あなたは再生を開始した後、それらに追加しないので、彼らは非常に小さいまたは非常に大きい場合は問題ではありません。

バイト範囲のメディアセグメントを指定するための新しいタグEXT-X-BYTERANGEがあります:

#EXT-X-BYTERANGE:長さ[@オフセット]

それは範囲の長さを指定します。バイトの範囲は、以前のbyterangeからすぐに続かなければ、それはまた、オフセットを指定する必要があります。

ここでプレイリストファイルの例です。最初に、古いスタイルのプレイリストは3つのセグメントは、独自のURL(相対URL)とそれぞれに示されています。

ここでバイト範囲のメディアセグメントを使用するように書き直し、同じプレイリストがあります。プレイリストはまだ単一のメデ
ィアの種類別セグメントmedia.tsに3つのセグメントが、これらの現在の範囲を持っており、バイト範囲のタグは、セグメントが
実際に占有していることをバイト範囲を指定します。

Important バイト範囲のメディアセグメントを指定するプレイリストは、プロトコルバージョン4が必要です。さらに、彼らは
EXT-X-TARGETDURATIONとEXT-X-MEDIA-SEQUENCEタグを含める必要があり、メディアのURIは、別々の行に存在する必要
があります。すべてのセグメントは、単一のリソースから来る場合でも、彼らはまだ独立して暗号化する必要があります。

I-Frame Playlist

iOSの5は早送りや逆再生をサポートしています。ただし、早送り機能と再生機能を逆にするための特別な目的のコンテンツを生成
する必要はありません。あなたがする必要があるのはI-フレームがどこにあるか指定することです。 I-フレーム、またはイント
ラフレームは、そのエンコーディングの他のフレームに依存しないビデオフレームをエンコードされます。 I-フレームがどこにあ
るかを指定するには、IOS5新しいI-フレームのみのプレイリストを紹介しています。

新しいEXT-XI-フレーム-ONLYタグは、プレイリスト内の各メディアセグメントはI-フレームシングルを説明していることを示します。

I-フレームのみプレイリストは、通常のプレイリストとほぼ同じです。唯一の違いは、I-フレームのプレイリストは本来的持続時間を持っていないということです。彼らの代わりに時間の瞬間を表しています。 EXT-XI-フレーム-ONLYタグの付いたプレイリストのみI-フレームには、EXTINFタグの持続時間は、実際にはI-フレームの "スパン"を指します。 (それはプレイリスト内のI-フレームの最後である場合、またはプレゼンテーションの終わり)これは、メディア·セグメント内のI-フレームとプレイリスト内の次のIフレームのプレゼンテーション時間のプレゼンテーション時間の間の時間です。

EXT-X-byterangeのタグは、Iフレームを含むメディアリソースのサブ範囲を識別するために使用する必要があります。

ここでsegment1.tsとsegment2.tsでI-フレームを指定します。I-フレームのみプレイリストの例は次のとおりです。
新しいEXT-XI-FRAME-STREAM-INFタグは、マルチメディアプレゼンテーションのIフレームを含むプレイリストファイルを識別するために定義されています。

その形式は次のとおりです。

#EXT-X-I-FRAME-STREAM-INF:

EXT-XI-FRAME-STREAM-INFタグは、プレイリスト内の特定のURIには適用されません、それは一人で立っている。

EXT-X-STREAM-INFタグに対して定義されたすべての属性は、AUDIO属性を除いて、EXT-XI-FRAME-STREAM-INFタグに対して定義されています。さらに、以下の属性が定義されています。

URI

値は、I-フレームのプレイリストファイルを識別するURIを含む引用符で囲まれた文字列です。

ここでEXT-XI-FRAME-STREAM-INFタグを使用してI-フレームのプレイリストファイルの例です。
スポンサーサイト
姉妹サイトだよ! よかったらみてね!

コメントの投稿

非公開コメント

twitter
twitter アカウント @drum_kuroneko 気軽にフォローしてください。
誰でも簡単に開発ができます!!
人気ナンバー1
自己紹介

yuutyan0205

プロガー:yuutyan0205
きままな自由人です。

たまにプログラミングを行っています。

仕事ください・・・

開発者アプリ一覧 気になったらダウンロードしてください。
開発環境おすすめ
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新記事
月別アーカイブ
カテゴリ
アクセスランキング
[ジャンルランキング]
コンピュータ
826位
アクセスランキングを見る>>

[サブジャンルランキング]
マック
50位
アクセスランキングを見る>>
訪問者数
現在の訪問者数
現在の閲覧者数:
全記事表示リンク

全ての記事を表示する

相互リンク希望の方とご質問ある方ご連絡ください。

名前:
メール:
件名:
本文: