web-dev-qa-db-ja.com

HTTPアダプティブビットレートストリーミング

AppleはiPhoneOS 3.0にHTTPアダプティブビットレートストリーミングを組み込んでおり、特にSafariはこれを自動的に処理します。

これを低コストで試してみたいのですが、最悪の場合はカスタムHTTPサーバーが必要であり、最良の場合は興味深いPHPなどのスクリプトが必要になると思います。

しかし、最初に私はプロトコルの違いや標準が何であるかを知る必要があります。 HTTPはプロトコルとしてはかなり単純ですが、アダプティブビットレートとは、ファイルサイズが異なること、チャンクの場所がビットレートによって異なることなどを意味します。たとえば、クライアントは、ダウンロード中にストリームについて特別なことをサーバーに通知しますか、それともそれですか。すべてサーバー側で処理されますか?

エンドユーザーのバッファリングの一時停止をなくすことは、ライブビデオストリームと事前に録画されたビデオストリームの両方にとって非常に魅力的です。多くのネットワークと政府がポート80以外のトラフィックを制限していることを考えると、HTTP経由で両方を行う方がさらに優れています。

  • HTTPアダプティブビットレートストリーミング、特にAppleの実装に関する技術的な詳細は何ですか?

-アダム

2
Adam Davis

更新

AppleがIETFドラフト提案を作成し、一部の人々はすでにセグメンターに取り組んでいるようです。

HTTPライブストリーミング-draft-pantos-http-live-streaming-01
http://tools.ietf.org/id/draft-pantos-http-live-streaming-01.txt

fFMpegとオープンソースセグメンターを使用したiPhoneHTTPストリーミング
http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/


わかりました。HTTPサーバーは単にダムHTTPサーバーとして機能しているようです。アカマイが提供するサンプルWebサイトをざっと見てみると、静的コンテンツストリーミングを開始するのに十分な情報が得られます。

http://iphone.akamai.com/

ホワイトペーパー( http://www.akamai.com/dl/akamai/iphone_wp.pdf )は、トランスポートストリームのエンコーディングに関する情報を提供しているため、.tsストリームは簡単です。

エンコーダー(または別のセグメンタープロセス)は、H.264/AACコンテンツを、MPEG-2 TS形式(.ts)の小さなコンテンツセグメントのシーケンスで生成します。セグメントを参照するM3U8インデックスファイルもあります。ライブコンテンツの場合、M3U8は最新のコンテンツを反映するように継続的に更新されます。

H.264エンコーディングは、シングルパスベースラインプロファイルであり、フレームの並べ替えは無効にする必要があります。キーフレームは5秒ごとに提案されます。理想的には、選択したセグメント長の約数です。

このWebサイトでは、M3U8ファイルが提供されています。これは単なるM3Uプレイリストですが、UTF-8文字エンコード形式です。

次に、そのファイルは各ビットレートのM3U8ファイルにリンクします。切り替えをシームレスに行えるように、すべて同じ位置(たとえば、2秒または10秒ごと)にカットが必要だと思います。それは完全にクライアント主導であるように見えます-クライアントは帯域幅を測定する方法とそれが取得しようとしているバージョンを決定します。

メインファイルの内容は次のとおりです。

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=860000
hi/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=512000
med/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=160000
lo/prog_index.m3u8

次に、他の各ファイルは次のとおりです。

hi/prog_index.m3u8

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, 
fileSequence0.ts
#EXTINF:10, 
fileSequence1.ts
#EXTINF:10, 
fileSequence2.ts
#EXTINF:10, 
fileSequence3.ts
#EXTINF:1,  
fileSequence4.ts
#EXT-X-ENDLIST

med/prog_index.m3u8

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, 
fileSequence0.ts
#EXTINF:10, 
fileSequence1.ts
#EXTINF:10, 
fileSequence2.ts
#EXTINF:10, 
fileSequence3.ts
#EXTINF:1,  
fileSequence4.ts
#EXT-X-ENDLIST

lo/prog_index.m3u8

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, 
fileSequence0.ts
#EXTINF:10, 
fileSequence1.ts
#EXTINF:10, 
fileSequence2.ts
#EXTINF:10, 
fileSequence3.ts
#EXTINF:1,  
fileSequence4.ts
#EXT-X-ENDLIST

これは、HTML5ビデオタグで機能します。

<video width=”640” height=”480” >
   <source src=”content1/content1.m3u8” />
</video>

まだ多くの未回答の質問がありますが、これで始めるにはおそらく十分です。

-アダム

3
Adam Davis

Windowsセグメンターがありません-iPhoneセグメンターが不明な理由で正しく機能していません。セグメンターをダウンロードするには、iPhone開発者として登録されている必要があります

1
bobby

Akamai それをそのように説明します:

IPhoneOSバージョン3.0およびQuickTimeX以降、プログレッシブダウンロードの制限なしに、通常のWebサーバーからストリーミングオーディオおよびビデオをHTTP経由で送信して、iPhone、iPod touch、またはデスクトップコンピューターなどの他のデバイスで再生できます。

新しいストリーミングプロトコルは複数のビットレートをサポートし、ネットワークの状態に基づいて最適なビットレートに自動的に切り替えて、スムーズな品質の再生体験を実現します。この実装は、HTTPSを介したメディア暗号化とユーザー認証も提供し、発行者が作業を保護できるようにします。 3.0仕様を使用して、ライブコンテンツとオンデマンドコンテンツの両方を配信できます。

IPhoneへのHTTPストリーミングは、サーバーコンポーネント、Akamaiネットワーク、およびクライアントソフトウェアの3つの部分で構成されています。

一般的な構成では、ハードウェアエンコーダーがオーディオビデオ入力を受け取り、H.264ビデオとAACまたはHE-AACオーディオを含むMPEG-2トランスポートストリームに変換します。エンコードされたストリームは、ストリームセグメンターによって一連の短いメディアファイルに分割されます。セグメンターは、作成された短いメディアファイルのリストを含むインデックスファイルも作成および維持します。これらのファイルはWebサーバーに配置されます。

IPhone OSに組み込まれているメディアプレーヤーには、インデックスファイルへのリンクが提供され、メディアファイルを順番に要求して、セグメント間の一時停止やギャップなしで再生します。

したがって、コンテンツを適切に作成するには、ストリームセグメンターが必要なようです。 HTTPサーバーは、このテクノロジーでは一般的です。

1
Kevin Kuphal

スビトッチ、ユキヒョウはいますか? Appleストリームセグメンターが付属しています。manmediastreamsegmenterと入力するだけでマニュアルが表示されます。

0
tommy chheng