JP6316781B2 - バイト範囲リクエストを使用したビデオデータのネットワークストリーミング - Google Patents

バイト範囲リクエストを使用したビデオデータのネットワークストリーミング Download PDF

Info

Publication number
JP6316781B2
JP6316781B2 JP2015160180A JP2015160180A JP6316781B2 JP 6316781 B2 JP6316781 B2 JP 6316781B2 JP 2015160180 A JP2015160180 A JP 2015160180A JP 2015160180 A JP2015160180 A JP 2015160180A JP 6316781 B2 JP6316781 B2 JP 6316781B2
Authority
JP
Japan
Prior art keywords
request
url
byte range
representation
byte
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015160180A
Other languages
English (en)
Other versions
JP2016028474A (ja
Inventor
トーマス・シュトックハマー
ドナルド・ダブリュ.・ギリーズ
マイケル・ジー.・ルビー
ファティ・ウルピナー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2016028474A publication Critical patent/JP2016028474A/ja
Application granted granted Critical
Publication of JP6316781B2 publication Critical patent/JP6316781B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4343Extraction or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/1045Proxies, e.g. for session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/6437Real-time Transport Protocol [RTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/858Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
    • H04N21/8586Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

優先権の主張
本出願は、その全体が参照により本明細書に組み込まれる、2011年4月7日に出願された米国仮出願第61/473,105号の利益を主張する。
本開示は、符号化されたマルチメディアデータの記憶およびトランスポートに関する。
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、デジタルビデオ情報をより効率的に送信および受信するために、MPEG−2、MPEG−4、ITU−T H.263またはITU−T H.264/MPEG−4、Part 10、Advanced Video Coding(AVC)によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法など、ビデオ圧縮技法を実装する。
[0004]ビデオデータが符号化された後、ビデオデータは送信または記憶のためにパケット化され得る。ビデオデータは、国際標準化機構(ISO)ベースメディアファイルフォーマット、ならびにMP4ファイルフォーマットおよびAdvanced Video Coding(AVC)ファイルフォーマットなどのそれの拡張など、様々な規格のいずれかに準拠するビデオファイルにアセンブルされ得る。そのようなパケット化されたビデオデータは、ネットワークストリーミングを使用したコンピュータネットワークを介した送信など、様々な方法でトランスポートされ得る。
[0005]2000年代半ばに、リアルタイムトランスポートプロトコル(RTP)を介したインターネット経由のビデオおよびオーディオトラフィックの増大により、インターネットは大量のネットワークトラフィックで一杯になり始めたが、これらのプロトコルに対する輻輳制御がなかった。これを受けて、企業の情報技術(IT)管理者は、企業のゲートウェイを詰まらせていたビデオおよびオーディオストリームを含むRTPパケットをブロックするために、自社のファイアウォールをプログラムした。
[0006]ファイアウォールは、ビデオおよびオーディオストリーミングサービスの存在を脅かした。そのため、サービスプロバイダは、TCP(より具体的には、TCPのHTTPポート)仮想回路を介してコンテンツを提供し始めた。サービスプロバイダはこれを、自社のビデオおよびオーディオトラフィックを有用なHTTPトラフィックと見せかけるために行った。ITファイアウォール管理者はHTTP/TCPを介したビデオおよびオーディオを容易にブロックすることができなかったため、しばらくの間、TCPを介したHTTP経由のビデオおよびオーディオが隆盛をきわめた。
[0007]最初は、たいていのビデオのダウンロードに「プログレッシブダウンロード」方法が使用された。この機構では、ビデオファイル全体をダウンロードするために、単一のHTTP接続および転送が使用される。ユーザは、ダウンロードが発生するのを見て、全ストリーム視聴体験をサポートするのに十分なデータがバッファリングされていると感じたとき、「PLAY」ボタンを押し、ビデオを表示し始める。擬似ストリーミング体験をもたらす十分なデータがダウンロードされると、プレーヤはプレイアウトを自動的に開始することがある。しかしながら、ユーザがビデオをすぐに、特に低容量リンクで見たいと思ったとき、この方法は問題に直面した。別の問題として、変化するワイヤレス環境では、適応ダウンロードが突然、緩慢なペースにシフトダウンして、ビデオの途中で失速することがある。
[0008]2005年以降、これらの問題に対処しようとする、適応ストリーミングオーバーHTTP(Adaptive Streaming over HTTP)を実現するための作業が進行している。適応ストリーミングプロトコルの例には、Microsoft Smooth Streaming(MSS)、Apple Live Streaming(ALS)、Adobe HTTP Dynamic Streaming(AHDS)、および3GPP Standard、Dynamic Adaptive Streaming over HTTP(DASH)がある。 2011年には、(MSSに基づく)Netflixビデオストリーミングサービスが、夕方のピーク時間に北米のインターネットバックホールの30%を消費して、顧客の自宅にビデオパケットを配信した。
[0009]適応ストリーミング方法は、HTMLウェブページによく似た形でビデオを編成する。たとえば、DASHでは、ビデオを構成する「フラグメント」(サブファイルであり、サブセグメントとも呼ばれる)のすべてを参照するように「ビデオウェブベージ」が定義される。フラグメントは、一般に、リアルタイムビデオまたはオーディオの2秒であり、一般に、ビデオの場合にはMPEG Iフレーム(本質的に完全なJPEG符号化ピクチャ)で始まる。H.264/AVCでは、そのようなフレームは瞬間デコーダリフレッシュ(IDR)フレームと呼ばれる。DASHでは、「ビデオウェブベージ」はメディアプレゼンテーション記述(MPD)と呼ばれる。2時間ビデオのMPDは、3600個のビデオユニフォームリソースロケータ(URL)と3600個のオーディオURLとを参照する可能性があり、これらの各々は再生時のメディアの2秒に対応し得る。なお、ビデオが符号化される際のビットレートごとに3600個のビデオURLが提供され得ることに留意されたい。
[0010]DASHの1つの改善点として、いくつかの異なるビットレートで同じビデオが記述可能であり、プレーヤはビットレートを(たとえば、2秒ごとに)切り替えることができる。MPDは概して、表現と呼ばれる、同じビデオの3〜8個の異なるレンダリングを記述する。インターネットが輻輳しているとき、または端末が低容量リンク上にあるとき、低ビットレートフラグメントがフェッチされ得る。インターネットが輻輳してないとき、または端末が高容量リンクを有するとき、高ビットレートフラグメントがフェッチされ得る。一般に、オーディオの場合は単一のオーディオストリームがフェッチされ、ビットレート切替えは生じない。ネットワークまたはリンクの状態が変化したときには、プレーヤはより高いビットレートまたはより低いビットレートでビデオフラグメントをフェッチすることによって適応し得る。プレーヤは一般に、フラグメントの境界で適応する。それによって、プレーヤは、インターネット上の変化する輻輳状態に動的に適応し、HTTPを介してオーディオデータとビデオデータの両方をトランスポートすることができる。8個の異なる表現が提供される場合、全部で3600×8=28,800個のフラグメントがオリジンサーバ上で管理され得ることに留意されたい。
[0011]HTTP 0.9は1993年に導入された後、非常に成功したので、インターネットはすぐにHTTPリクエストで一杯になった。そして1997年に、キャッシングを含め、RFC2068においてHTTP1.0が規格化された。ブラウザがオブジェクトをキャッシュし始めただけではなく、研究者も、HTTP1.0における新しいキャッシング特徴を利用するために透過的なHTTP Proxy Cacheデバイスを作り始めた。プロキシキャッシュデバイスはHTTP GETリクエストを見つけ、概してリクエストを変更せずに転送する。プロキシキャッシュが、jpegピクチャまたは20分間有効な株価情報などの(コンテンツが長い寿命を有し、キャッシュされ得ることを意味する)約5個のHTTP「キャッシング」ヘッダのうちの1つを有するHTTP応答に気付いたとき、プロキシキャッシュデバイスはキャッシュ可能な応答を記憶し、同じユーザまたは異なるユーザが後にそのコンテンツをリクエストしたときに、それを再生することができる。ネットワーク管理者は、プロキシキャッシュを通じてすべてのHTTPトラフィックをルーティングするようにスイッチまたはルータを再プログラムすることができる。
[0012]さらに、(RFC2616に指定されている)HTTP1.1は、部分GETリクエストを規定している。部分GETリクエストは、ターゲットURLを指定する情報のほか、「Range:」ヘッダと、それに続く、所望のバイト範囲を示す値とを含む。HTTP1.1による規定にもかかわらず、すべてのウェブブラウザが部分GETリクエストの使用を実施するとは限らない。その上、ウェブブラウザ(またはクライアントデバイスによって実行される他のアプリケーション)が部分GETリクエストを実施するときでも、プロキシサーバ、プロキシキャッシュデバイス、または他のプロキシデバイスなどの中間ネットワークデバイスは、クライアントデバイスによってリクエストされた部分だけではなく、ファイル全体を取り出すように構成されていることが多い。
[0013]プロキシデバイスは通常、ウイルスもしくは他の悪意のあるネットワークトラフィックを検出するためのディープパケット検査、(同じデータについての他のリクエストに応答するための)キャッシング、またはファイル全体の取出しを必要とする他の機能などの、ネットワークトラフィックに対する追加のアクションを実行するように構成される。したがって、そのようなプロキシデバイスは、範囲リクエストを剥ぎ取り、指定されたURLにおけるファイル全体を取り出し、それによって、取り出されたファイル全体をリクエスト元クライアントデバイスに提供する傾向がある。たとえば、いくつかのウイルススキャニングアルゴリズムは、ファイル全体のスキャニングを必要とし、その場合、ファイル全体をダウンロードする必要がある。しかしながら、(2時間ムービーなどの)比較的大きいマルチメディアファイルの場合、リクエストされたバイト範囲の代わりにファイル全体を取り出すことにより、リクエスト元クライアントデバイスに比較的小さいバイト範囲を送信する際に相当な遅延が生じ得る。
[0014]概して、本開示は、ネットワークを介してメディアデータをストリーミングするためのバイト範囲リクエストをサブミット(submit)することに関する技法について説明する。本開示の技法は、部分GETリクエストを使用してバイト範囲リクエストをサブミットするのではなく、HTTP GETリクエストのURLにリクエストされるバイト範囲を指定することを対象とする。このようにして、バイト範囲リクエストが「Range:」ヘッダを指定する必要はなくなり、それによって、中間プロキシキャッシュデバイスによる望ましくない行動が回避される。すなわち、部分GETリクエストを受信したことに応答して、ファイル全体を取り出すように構成されたプロキシキャッシュデバイスは、リクエストされたURLの部分データを取り出すだけであるはずだ。リクエストされたURLがバイト範囲を指定している場合、取り出されたデータは、ベースURLにおけるファイル全体よりもはるかに小さくなるべきである。
[0015]一例では、マルチメディアデータを取り出す方法は、ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定することと、ソースデバイスへの要求に従ってファイルとバイト範囲とをユニフォームリソースロケータ(URL)のファイルパス部分に指定するURLを形成することと、ソースデバイスに対して形成されたURLを指定するGETリクエストを出すこととを含む。
[0016]別の例では、マルチメディアデータについての情報を取り出すためのデバイスは、ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定することと、ソースデバイスへの要求に従ってファイルとバイト範囲とをユニフォームリソースロケータ(URL)のファイルパス部分に指定するURLを形成することと、ソースデバイスに対して形成されたURLを指定するGETリクエストを出すこととを行うように構成された1つまたは複数のプロセッサを含む。
[0017]別の例では、マルチメディアデータについての情報を取り出すためのデバイスは、ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定する手段と、ソースデバイスへの要求に従ってファイルとバイト範囲とをユニフォームリソースロケータ(URL)のファイルパス部分に指定するURLを形成する手段と、ソースデバイスに対して形成されたURLを指定するGETリクエストを出す手段とを含む。
[0018]別の例では、コンピュータプログラム製品は、実行されたときに、マルチメディアデータを取り出すためのデバイスのプロセッサに、ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定することと、ソースデバイスへの要求に従ってファイルとバイト範囲とをユニフォームリソースロケータ(URL)のファイルパス部分に指定するURLを形成することと、ソースデバイスに対して形成されたURLを指定するGETリクエストを出すことと、を行わせる命令を備えるコンピュータ可読記憶媒体を含む。
[0019]別の例では、ビデオデータについての情報を送る方法は、マルチメディアコンテンツのマニフェストファイルを提供することと、マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、URLテンプレートおよびバイト範囲テンプレートは、URL内にバイト範囲リクエストを含むようにURLを形成するためのテンプレートを提供し、URLテンプレートおよびバイト範囲テンプレートに従って構成されたURLを含むリクエストを受信することと、リクエストのURLはマルメディアコンテンツの表現のバイト範囲を指定し、リクエストに応答して、リクエストのバイト範囲に対応する表現のマルチメディアデータを出力することと、を含む。
[0020]別の例では、ビデオデータについての情報を送るためのデバイスは、マルチメディアコンテンツのマニフェストファイルを提供することと、マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、URLテンプレートおよびバイト範囲テンプレートは、URL内にバイト範囲リクエストを含むようにURLを形成するためのテンプレートを提供し、URLテンプレートおよびバイト範囲テンプレートに従って構成されたURLを含むリクエストを受信することと、リクエストのURLはマルメディアコンテンツの表現のバイト範囲を指定し、リクエストに応答して、リクエストのバイト範囲に対応する表現のマルチメディアデータを出力することと、を行うように構成された1つまたは複数のプロセッサを備える。
[0021]別の例では、ビデオデータについての情報を送るためのデバイスは、マルチメディアコンテンツのマニフェストファイルを提供する手段と、マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、URLテンプレートおよびバイト範囲テンプレートは、URL内にバイト範囲リクエストを含むようにURLを形成するためのテンプレートを提供し、URLテンプレートおよびバイト範囲テンプレートに従って構成されたURLを含むリクエストを受信する手段と、リクエストのURLがマルメディアコンテンツの表現のバイト範囲を指定し、リクエストに応答して、リクエストのバイト範囲に対応する表現のマルチメディアデータを出力する手段と、を含む。
[0022]別の例では、コンピュータプログラム製品は、ビデオデータを提供するためのデバイスのプロセッサに、マルチメディアコンテンツのマニフェストファイルを提供することと、マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、URLテンプレートおよびバイト範囲テンプレートは、URL内にバイト範囲リクエストを含むようにURLを形成するためのテンプレートを提供し、URLテンプレートおよびバイト範囲テンプレートに従って構成されたURLを含むリクエストを受信することと、リクエストのURLがマルチメディアコンテンツの表現のバイト範囲を指定し、リクエストに応答して、リクエストのバイト範囲に対応する表現のマルチメディアデータを出力することと、を行わせる命令を備えるコンピュータ可読記憶媒体を含む。
[0023]1つまたは複数の例の詳細は、添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
ネットワークを介してメディアデータをストリーミングするための技法を実装する例示的なシステムを示すブロック図。 図1のネットワークの一部を形成するデバイスの例示的なセットを示すブロック図。 様々なコンテンツ配信ネットワーク(CDN)を含む例示的なシステムを示すブロック図。 例示的なマルチメディアコンテンツの要素を示す概念図。 マルチメディアコンテンツの表現のセグメントに対応し得る、例示的なビデオファイルの要素を示すブロック図。 URLテンプレートデータの指示を提供するための、またクライアントデバイスによってURLテンプレートデータを使用してバイト範囲リクエストを生成するための例示的な方法を示すフローチャート。 URLにバイト範囲を指定するGETリクエストを生成するための例示的な方法を示すフローチャート。 中間ネットワークデバイスを介してクライアントデバイスとサーバデバイスとの間でHTTP GETリクエストが交換される例示的な方法を示すフローチャート。 マルチメディアコンテンツのデータの取出し元となるCDNを決定するための例示的な方法を示すフローチャート。
[0033]概して、本開示では、ネットワークを介したオーディオおよびビデオデータなどのマルチメディアデータのストリーミングに関する技法について説明する。本開示の技法は、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)と併せて使用され得る。本開示では、ネットワークストリーミングと併せて実行され得る様々な技法について説明し、それらの技法のいずれかまたはすべては単独でまたは任意の組合せで実装され得る。以下でより詳細に説明するように、ネットワークストリーミングを実行する様々なデバイスが本開示の技法を実装するように構成され得る。
[0034]DASHおよびネットワークを介してデータをストリーミングするための同様の技法によれば、(オーディオデータ、ビデオデータ、テキストオーバーレイ、または他のデータをも含み得る、ムービーまたは他のメディアコンテンツなどの)マルチメディアコンテンツは様々な方法で様々な特性を用いて符号化され得る。コンテンツ作成(preparation)デバイスは、同じマルチメディアコンテンツの複数の表現(representation)を形成し得る。各表現は、様々なコーディングおよびレンダリング能力をもつ多種多様なクライアントデバイスによって使用可能なデータを与えるために、コーディングおよびレンダリング特性など、特性の特定のセットに対応し得る。その上、様々なビットレートを有する表現によって帯域幅適応が可能になり得る。すなわち、クライアントデバイスは、現在利用可能である帯域幅の量を決定し、クライアントデバイスのコーディングおよびレンダリング能力とともにその利用可能な帯域幅の量に基づいて表現を選択し得る。
[0035]いくつかの例では、コンテンツ作成デバイスは、ある表現セットが共通の特性のセットを有することを示し得る。コンテンツ作成デバイスは、その場合、セット中の表現が帯域幅適応のために使用され得るように、セット中の表現が適応セットとも呼ばれる適応セットを形成することを示し得る。すなわち、セット中の表現は、ビットレートが異なるが、それ以外は実質的に同じ特性を共有し得る。このようにして、クライアントデバイスは、マルチメディアコンテンツの適応セットについての共通の特性の様々なセットを決定し、クライアントデバイスのコーディングおよびレンダリング能力に基づいて適応セットを選択し得る。次いで、クライアントデバイスは、帯域幅利用可能性に基づいて、選択された適応セット中の表現の間で適応的に切り替わり得る。
[0036]表現についてのデータは、個別のファイルに分離され得る。ファイルの各々は、特定のユニフォームリソースロケータ(URL)によってアドレス指定可能であり得る。クライアントデバイスは、特定のURLにおけるファイルについてのGETリクエストを、そのファイルを取り出すためにサブミットすることができる。本開示の技法によれば、クライアントデバイスは、たとえば、対応するサーバデバイスによって提供されたURLテンプレートに従って、URLパス自体に所望のバイト範囲の指示を含めることによって、GETリクエストを変更することができる。本開示では、「パス」という用語は、HTTP abs_path[RFC2616]またはHTTP rel_path[RFC2616][RFC2396]のいずれかを示し得ることに留意されたい。バイト範囲はサーバデバイスに対し、示されたバイト範囲のみが望ましいことを示す。
[0037]このようにして、本開示の技法は、従来型の部分GETリクエストを置き換えることと、あるいは、URL内に、たとえばURLパス自体に所望のバイト範囲を指定することとを含む。たとえば、表現のURLアドレス指定可能なファイルの特定のバイト範囲が望ましいと決定すると、クライアントデバイスは、本開示の技法に従ってURLパス内に所望のバイト範囲を指定することによって、URLについてのGETリクエストを構成することができる。マニフェストファイルクリエータは、このようにしてURLを構成するためのテンプレートを提供するとともに、テンプレートが必須であるか、それともオプションであるかに関する情報を提供することができる。さらに、プロキシデバイスまたは他の中間ネットワークデバイスが、本開示の技法に従って、受信された部分GETリクエストを変更URLに変換するように構成され得る。このようにして、部分GETリクエストを認識するように構成されたプロキシデバイスが、本開示の技法に従って部分GETリクエストを変換して、アップストリームプロキシデバイスが部分GETリクエストを完全GETリクエストに変更するのを回避することができる。さらに、サーバデバイスは、本開示の技法に従って、部分GETリクエストだけに応答するのではなく、変更URLにも応答し、ファイルのバイト範囲を指定するような変更URLを構成する方法を指定するように構成され得る。
[0038]本開示はまた、いくつかの例では、URL内に明示的に指定されたバイト範囲に関係するメディアコンテンツの特性をシグナリングするための技法を提供する。本開示は、「MustUseRangeURL」とラべリングされたMPDファイルの部分を形成する列挙された属性を提供する。属性に対応するフィールドの値は、クライアントデバイスがURL自体に所望のバイト範囲を指定することができる(または指定しなければならない)かどうかを示す。本開示はまた、「AllowedByteRanges」とラべリングされたMPDファイルの部分を形成する列挙された属性を提供する。リクエスト可能なバイト範囲が、MPDファイル内、表現のセグメントインデックス(SIDX)ボックス内に指定されてよく、または指定されなくてもよい。AllowedByteRanges属性は、クライアントデバイスがMPDファイル、SIDXボックス、またはマルチメディアコンテンツの他のデータ構造によって指定されたバイト範囲をリクエストし得るかどうかを示す指示を提供する。
[0039]本開示は、バイト範囲がどのように指定されるかを示すByteRangeTemplateフィールドをさらに提供する。ByteRangeTemplateフィールドは、$URL$フィールドと、$StartByte$フィールドと、$EndByte$フィールドとを含むことができ、これらは、同じくバイト範囲を指定する適切に形成された変更URLに従って順序付けられ得る。ByteRangeTemplateフィールドは、フォワードスラッシュもしくはピリオドまたは他のASCIIシンボルなどの追加の文字をさらに指定することができる。本開示の技法に従って、ByteRangeTemplateを使用して、クライアントデバイス(またはプロキシデバイス)は(「Range:」フィールドを含む)部分GETリクエストを、「Range:」フィールドを使用せずにバイト範囲を指定する変更URLに変換することができる。
[0040]たとえば、ウェブサーバが、バイト範囲を使用して、または、範囲がURLに埋め込まれている範囲リクエストにサービングすることによって、マルチメディアコンテンツ(たとえば、ムービー「トロン」)を提供すると仮定する。この例では、ウェブサーバはwww.example.comである。ウェブサーバは、マルチメディアコンテンツ「トロン」についてMPD(またはマニフェストファイル)において以下の指示を提供することができる。
Figure 0006316781
[0041]この例では、MPDファイルは、バイト範囲テンプレート(ByteRangeTemplate)がURL、続いてスラッシュおよび所望のバイト範囲における開始バイト(StartByte)、続いて別のスラッシュおよび所望のバイト範囲における終了バイト(EndByte)であることを示している。MustUseRangeURLは、バイト範囲テンプレートがオプションであることを示しており、これは、範囲リクエストを含む変更URLおよびHTTP1.1部分GETリクエストにサーバが応答することを意味し、AllowedByteRangesフィールドは、MPDに明示的に示されたバイト範囲のみが指定を許容されていることを示している。
[0042]この例を続けると、従来型のURLおよびバイト範囲は、以下の部分getリクエストとしてHTTP1.1に従って表され得る。
Figure 0006316781
[0043]本開示の技法によるクライアントデバイス(またはプロキシデバイス)は、上記の部分GETリクエストを変更して、以下の変更URLを形成することができる。
Figure 0006316781
[0044]概して、クライアントデバイスは、従来型の部分GETリクエストを生成するのではなく、この例示的なリクエストを生成することができる。この例では、URLは、(例として、マルチメディアコンテンツのMPDに指定されるはずの)所望のバイト範囲を明示的に指定する。
[0045]本開示はまた、URLがバイト範囲を含むことを示すHTTP用の拡張ヘッダの使用を提案する。これにより、プロキシデバイスは、URLがバイト範囲をいつ含めるかを決定することができ、その結果、プロキシデバイスは、リクエストを提供したクライアントデバイスのためにマルチメディアコンテンツのデータをプリフェッチすることができる。
[0046]本開示はまた、コンテンツ配信ネットワーク(CDN)またはコンテンツサーバファームを選択するための技法を提供する。いくつかの例では、クライアントデバイスは、BaseURLリクエストの本文に含まれる、リダイレクションURLへのPOSTリクエストを出すことができる。リダイレクションサーバデバイスは、POSTを受信し、たとえば、リクエスト元クライアントデバイスの特性、たとえば、クライアントデバイスのロケーションブラウザタイプ、ネットワーク配置、または後述する他の選択基準に基づいて、選択されたCDNに対し、BaseURLに対応するファイルについてのリクエストを出すことができる。他の例では、時刻、往復遅延、ホップカウント、ロケーションなど、選択基準は複数のCDNによって指定され得る。クライアントデバイスは、これらの基準を使用してCDNを選択することができる。選択は、基準に基づいてランダムに、または選択基準に対応するネットワーク特性を測定することによって行われてよく、これらの基準を使用してCDNを確定的に選択し得る。
[0047]概して、本開示の技法を使用して、特にマルチメディアコンテンツの部分(たとえば、フラグメントまたはサブセグメント)をリクエストすることに関して、マルチメディアデータのストリーミングに関係する1つまたは複数の問題を克服することができる。これらの問題は、すべてのブラウザがバイト範囲リクエストを実施するとは限らないことを含む。バイト範囲はURL仕様の一部ではなく、実際、「Range:」ヘッダはURLから別途送られるオプションのヘッダであるので、HTMLウェブページはバイト範囲を参照することができず、したがって、ブラウザはバイト範囲リクエストを実施する必要はない。バイト範囲リクエストを実装するブラウザでは、そのようなブラウザは、ビデオプラグインなどのプラグインがバイト範囲リクエストを出すのを許容しないことがある。この問題は、Adobe PDF Readerプラグインのようなブラウザプラグインの設計における1つの問題となっている。ブラウザのプラグインがバイト範囲リクエストを出すことができない場合、DASHプラグインはMPEGビデオファイルからバイトの範囲をフェッチすることができない。
[0048]さらに、協力元(cooperating)CDNに対しすべてのMPEGビデオファイルを配信し、協力元CDNに対しHTTP範囲リクエストを出すことによって一部のMPEGファイルを取り出すことが可能であり得るが、同じことをプロキシキャッシュデバイスにより行うのはそれほど容易ではない。プロキシキャッシュデバイスは、バイト範囲リクエストを実装することを要求されない。様々なプロキシキャッシュデバイスは、一般に、数百の異なる組織によって管理されており、数十の異なる実装態様があるので、すべてのプロキシキャッシュデバイスがバイト範囲リクエストを実装するのを保証することはできない。ファイル全体でバイト範囲リクエストに応答することは、HTTP1.1では正当である。これは、ブラウザがバイト範囲リクエストを無視すること、またはそれが意図的に行われ得ることが理由であり得る。プロキシキャッシュがウイルススキャナを実装している場合、スキャナは、バイト範囲の結果としてコンテンツを提供する前に、すべてを取り出して、それをウイルススキャンするために、バイト範囲リクエストをファイル全体リクエストに変換することがある。今日の一般的なウェブリクエストは、3個以上のプロキシデバイス(オリジンサーバのプロキシキャッシュ、国内のバックホールプロキシ、現地のISPプロキシ)を通過することがあり、任意の単一のプロキシデバイス(またはプロキシデバイスのすべて)は、バイト範囲リクエストを無効にするように構成され得る。
[0049]その上、たとえば通常のビデオの2時間に対し生じる一連のバイト範囲リクエストからMPEGファイルを再構成できるほど高度なプロキシキャッシュデバイスはあまりない。バイト範囲リクエストを出すことができるブラウザがほとんどなく、ブラウザプラグインの一部のみがバイト範囲リクエストを出すことができるときには、ファイル再構成は実施困難である。キャッシュが(a)バイト範囲リクエストをまったくキャッシュしないか、または(b)所与のファイルに対する直近のバイト範囲リクエストのみを保持するか、または(c)別個の各バイト範囲リクエストを別個のファイルとして扱う可能性の方がはるかに高い。最後のケースでは、2秒のフラグメントによる10個のストリームを伴う2時間ムービーの場合、プロキシキャッシュに最大72,000個のフラグメントが生じる。この場合、ムービーごとに何千ものフラグメントを管理するオーバーヘッドは、キャッシング上、非常に非効率でやっかいなものなる可能性がある。
[0050]本開示の技法は、ブラウザによってフェッチされるURL内でバイト範囲リクエストを出すための、マルチメディアコンテンツ、たとえば、3GPP DASHプロトコルによるマルチメディアコンテンツのストリーミングのためのメカニズムを含む。これらの技法はまた、いくつかの例では、バイト範囲がURLにどのようにマップされ得るかを定義する汎用テンプレートと、テンプレートの使用が必須であるのか、それとも単に許容されている(すなわち、オプションである)のかを表す方法と、URLに埋め込まれたバイト範囲があることを示すデータをクライアントデバイスからオリジンサーバおよびプロキシデバイスに提供する方法と、BaseURLおよび/またはByteRangeTemplateURLについてCDNタイプに基づいてテンプレートを選択する方法とを含む。これら技法のいずれかまたはすべては、単独でまたは組合せで使用され得る。
[0051]メディアコンテンツの表現のセグメントなど、ビデオファイルは、ISOベースメディアファイルフォーマット、Scalable Video Coding(SVC)ファイルフォーマット、Advanced Video Coding(AVC)ファイルフォーマット、Third Generation Partnership Project(3GPP)ファイルフォーマット、および/またはMultiview Video Coding(MVC)ファイルフォーマット、または他の同様のビデオファイルフォーマットのいずれかに従ってカプセル化されたビデオデータに準拠し得る。
[0052]ISOベースメディアファイルフォーマットは、メディアの交換、管理、編集、およびプレゼンテーションを可能にする、フレキシブルな、拡張可能なフォーマットでのプレゼンテーションのための、時限メディア情報を含むように設計される。ISOベースメディアファイルフォーマット(ISO/IEC14496−12:2004)は、時間ベースメディアファイルのための一般的な構造を定義するMPEG−4 Part−12において規定されている。ISOベースメディアファイルフォーマットは、H.264/MPEG−4 AVCビデオ圧縮のサポートを定義したAVCファイルフォーマット(ISO/IEC14496−15)、3GPPファイルフォーマット、SVCファイルフォーマット、およびMVCファイルフォーマットなどのファミリー中の他のファイルフォーマットのための基礎として使用される。3GPPファイルフォーマットおよびMVCファイルフォーマットはAVCファイルフォーマットの拡張である。ISOベースメディアファイルフォーマットは、オーディオビジュアルプレゼンテーションなどのメディアデータの時限シーケンスのためのタイミング、構造、およびメディア情報を含んでいる。ファイル構造はオブジェクト指向であり得る。ファイルは、非常に単純に基本オブジェクトに分解され得、オブジェクトの構造はそれらのタイプから暗示される。
[0053]ISOベースメディアファイルフォーマット(およびそれの拡張)に準拠するファイルは、「ボックス」と呼ばれる一連のオブジェクトとして形成され得る。ISOベースメディアファイルフォーマットのデータは、ボックス中に含まれ得、その結果、そのファイル内に他のデータが含まれている必要がなく、そのファイル内のボックスの外部にデータが存在する必要がない。これは、特定のファイルフォーマットによって必要とされる初期シグナチャを含む。「ボックス」は、一意のタイプ識別子と長さとによって定義されるオブジェクト指向ビルディングブロックであり得る。一般に、プレゼンテーションは1つのファイル中に含まれ、メディアプレゼンテーションは独立型(self-contained)である。ムービーコンテナ(ムービーボックス)はメディアのメタデータを含み得、ビデオおよびオーディオフレームは、メディアデータコンテナ中に含まれ得、他のファイル中にあり得る。
[0054]表現(動きシーケンス)は、セグメントと呼ばれることがある、いくつかのファイル中に含まれていることがある。タイミングおよびフレーミング(位置およびサイズ)情報は概してISOベースメディアファイル中にあり、補助ファイルは本質的に任意のフォーマットを使用し得る。このプレゼンテーションは、プレゼンテーションを含んでいるシステムに対して「ローカル」であり得るか、あるいはネットワークまたは他のストリーム配信メカニズムを介して与えられ得る。
[0055]メディアがストリーミングプロトコルを介して配信されるとき、メディアは、メディアがファイル中で表現される方法から変換される必要があり得る。これの一例は、メディアがリアルタイムトランスポートプロトコル(RTP)を介して送信されるときである。ファイルには、たとえば、ビデオの各フレームが、ファイルフォーマットサンプルとして連続して記憶される。RTPでは、これらのフレームをRTPパケット中に配置するために、使用されるコーデックに固有のパケット化ルールが順守されなければならない。ストリーミングサーバは、そのようなパケット化をランタイムに計算するように構成され得る。しかしながら、ストリーミングサーバを支援するためのサポートがある。
[0056]本開示の技法は、たとえば、動的適応ストリーミングオーバーHTTP(DASH)に従って、HTTPストリーミングなどのネットワークストリーミングプロトコルに適用可能であり得る。HTTPストリーミングにおいて、頻繁に使用される動作にはGETおよび部分GETがある。GET動作は、所与のユニフォームリソースロケータ(URL)または他の識別子、たとえばURIに関連するファイル全体を取り出す。部分GET動作は、入力パラメータとしてバイト範囲を受信し、その受信されたバイト範囲に対応するファイルの連続バイト数を取り出す。したがって、部分GET動作は1つまたは複数の個々のムービーフラグメントを得ることができるので、ムービーフラグメントはHTTPストリーミングのために与えられ得る。ムービーフラグメント中には、異なるトラックのいくつかのトラックフラグメントがあり得ることに留意されたい。HTTPストリーミングでは、メディア表現は、クライアントがアクセス可能であるデータの構造化コレクションであり得る。クライアントは、ユーザにストリーミングサービスを提示するためにメディアデータ情報をリクエストし、ダウンロードし得る。
[0057]HTTPストリーミングを使用して3GPPデータをストリーミングする例では、マルチメディアコンテンツのビデオおよび/またはオーディオデータのための複数の表現があり得る。そのような表現のマニフェストがメディアプレゼンテーション記述(MPD)データ構造で定義されていることがある。メディア表現は、HTTPストリーミングクライアントデバイスがアクセス可能であるデータの構造化コレクションに対応し得る。HTTPストリーミングクライアントデバイスは、クライアントデバイスのユーザにストリーミングサービスを提示するためにメディアデータ情報をリクエストし、ダウンロードし得る。メディア表現は、MPDの更新を含み得る、MPDデータ構造で記述され得る。
[0058]各期間は、同じメディアコンテンツについての1つまたは複数の表現を含み得る。表現は、オーディオまたはビデオデータのいくつかの代替符号化バージョンのうちの1つであり得る。表現は、符号化タイプなど、様々な特性によって異なり得、たとえば、ビデオデータの場合はビットレート、解像度、および/またはコーデックによって、またオーディオデータの場合はビットレート、言語、および/またはコーデックによって異なり得る。表現という用語は、マルチメディアコンテンツの特定の期間に対応し、特定の方法で符号化された符号化オーディオまたはビデオデータのセクションを指すために使用され得る。
[0059]特定の期間の表現はグループに割り当てられ得、グループはMPD中のgroup属性によって示され得る。同じグループ中の表現は、概して互いに代替として見なされる。たとえば、特定の期間についてのビデオデータの各表現は、それらの表現のいずれかが、対応する期間についてのマルチメディアコンテンツのビデオデータを表示するために復号のために選択され得るように、同じグループに割り当てられ得る。1期間内のメディアコンテンツは、いくつかの例では、存在する場合、グループ0からの1つの表現か、または各非ゼログループからのせいぜい1つの表現の組合せのいずれかによって表され得る。期間の各表現についてのタイミングデータは、期間の開始時間に対して表現され得る。
[0060]表現は1つまたは複数のセグメントを含み得る。各表現は初期化セグメントを含み得るか、または表現の各セグメントは自己初期化していることがある。存在するとき、初期化セグメントは、表現にアクセスするための初期化情報を含み得る。概して、初期化セグメントはメディアデータを含んでいない。セグメントは、ユニフォームリソースロケータ(URL)などの識別子によって一意に参照され得る。MPDは各セグメントに識別子を与え得る。いくつかの例では、MPDはまた、URLまたはURIによってアクセス可能なファイル内のセグメントについてのデータに対応し得る、range属性の形態のバイト範囲を与え得る。
[0061]各表現はまた、1つまたは複数のメディア構成要素を含み得、各メディア構成要素は、オーディオ、ビデオ、および/または(たとえば、字幕用の)時限テキストなど、1つの個々のメディアタイプの符号化バージョンに対応し得る。メディア構成要素は、1つの表現内の連続するメディアセグメントの境界にわたって時間連続的であり得る。それによって、表現は、個々のファイルまたは一連のセグメントに対応することができ、それらの各々は、同じ符号化およびレンダリング特性を含むことができる。
[0062]本開示の技法は、いくつかの例では、1つまたは複数の利益を提供し得る。たとえば、これらの技法により、中間プロキシノードはバイト範囲応答を適切にキャッシュすることが可能になり得る。これらの技法により、プロキシノードがリクエストされたバイト範囲をキャッシュするように構成されておらず、ファイル全体を取り出すように構成されているときでも、プロキシノードはリクエストされたバイト範囲を適切にキャッシュすることができる。そのような適切なキャッシングを可能にするために、URLのファイルパス部分にバイト範囲が組み込まれ得る。ファイルパスにバイト範囲を組み込むことによって、まったく同じバイト範囲についての将来のリクエストが(キーとしてURLファイルパスを使用して)適切に探索されて、キャッシュ「ヒット」を生むことができる。これは、探索が一般にURLのみで実行される(また、検索キーとして「Range:」ヘッダを含まない)ことから生じ得る。
[0063]また、これらの技法により、オリジンサーバは、2秒のフラグメントごとに1つのファイルではなく、表現ごとに1つのファイルを使用して(通常は3〜8個ある)ビデオ表現を記憶することができ、同時に、これらのファイルを中間ノードがキャッシュすることができる。これにより、オリジンサーバ上のファイルの数を、9,600〜28,800から3〜8に減らすことができ、オリジンサーバは、ビデオファイルの記憶および取出しにおいて格段に効率的になり得る。
[0064]さらに、これらの技法は、HTTP GETリクエストのURLにバイト範囲を組み込むために使用される方法に従って構成されたキャッシングサーバ(多くの場合、コンテンツ配信プロキシ)に利点をもたらし得る。これらのサーバは、リクエストを認識することができる場合、バイト範囲フラグメントを再アセンブルして、オリジンサーバと同様に、2時間ビデオの場合に3〜8個のファイルを記憶することができる。コンテンツ配信ネットワークが、このカスタムキャッシングおよび取出しポリシーを実現するために、これらの中間プロキシ上に「コンテンツ固有のアプリケーション」を配備することはまれではない。したがって、これは、開かれたインターネットにおける非常に実用的かつ実現可能な利益である。
[0065]その上、これらの技法は、1つのビデオがいくつかの異なるコンテンツ配信ネットワークによってキャッシュされるときに利点をもたらし得る。「コンテンツ固有のアプリケーション」の異なるポリシーまたは異なる属性のために、URL内のバイト範囲リクエストのパターンそのものは、コンテンツ配信ネットワークが異なる場合には異なる必要があり得る。本開示で説明する技法は、容易かつ自然な方法でこれを円滑にすることができ、クライアントデバイスがバイト範囲リクエストを、コンテンツ配信ネットワークが異なる場合には異なる形で埋め込むことを許容し得る。
[0066]図1は、ネットワークを介してメディアデータをストリーミングするための技法を実装する例示的なシステム10を示すブロック図である。この例では、システム10は、コンテンツ作成(preparation)デバイス20と、サーバデバイス60と、クライアントデバイス40とを含む。クライアントデバイス40およびサーバデバイス60は、インターネットを備え得るネットワーク74によって通信可能に結合される。いくつかの例では、コンテンツ作成デバイス20およびサーバデバイス60も、ネットワーク74または別のネットワークによって結合されるか、あるいは直接通信可能に結合され得る。いくつかの例では、コンテンツ作成デバイス20およびサーバデバイス60は同じデバイスを備え得る。いくつかの例では、コンテンツ作成デバイス20は、作成されたコンテンツを、サーバデバイス60を含む複数のサーバデバイスに配信することができる。同様に、いくつかの例では、クライアントデバイス40は、サーバデバイス60を含む複数のサーバデバイスと通信することができる。
[0067]以下でより詳細に説明するように、コンテンツ作成デバイス20、サーバデバイス60、およびクライアントデバイス40のいずれかまたはすべては、本開示の対応する技法を実行するように構成され得る。たとえば、サーバデバイス60および/またはコンテンツ作成デバイス20は、汎用テンプレートを定義し、たとえばクライアントデバイス40からのリクエストに応答して、たとえばサーバデバイス60に対しデータをリクエストするためにURLにバイト範囲をマップする方法をクライアントデバイス40に知らせるデータをクライアントデバイス40に送ることができる。同様に、クライアントデバイス40は、URLからデータを取り出すためのリクエストをサブミットすることができ、この場合、リクエストのURLは、汎用テンプレートに従ったリクエストされるバイト範囲を含む。その上、サーバデバイス60および/またはコンテンツ作成デバイス20は、テンプレートの使用が必須であるか、それともオプションであるかを示す情報をクライアントデバイス40に提供することができる。
[0068]さらに、クライアントデバイス40は、(図1に示されていない)中間ネットワークデバイスに対し、URLに埋め込まれたバイト範囲があることを中間ネットワークデバイスに知らせるデータを提供することができる。中間ネットワークデバイスは、プロキシデバイス、データをキャッシュまたは検査するように構成されたルータなどを含むことができ、以下でより詳細に説明する図2に示すように、ネットワーク74内に含まれ得る。さらに、クライアントデバイス40はマニフェストファイルを使用して、データのリクエスト先となるコンテンツ配信ネットワーク(CDN)を選択するための技法を決定することができる。サーバデバイス60は、CDNに含まれ得るサーバデバイスの一例を表す。たとえば、以下でより詳細に説明する図4に示すように、他のCDN内に、他のサーバデバイスまたは中間ネットワークデバイスが含まれ得る。概して、CDNは一般に、マニフェストファイル(HTMLマニフェストファイルであっても、DASH MPDであってもよい)を作成するエンティティによって選択され構成される。HTMLの場合、CDNの選択は、URL内のホスト名を変えることによって実現され得る。DASHの場合、本開示の技法に従って、URLにおけるホスト名とCDN URLパターン生成との組合せによってCDNが選択され得る。本開示の技法によれば、各CDNは、CDNに固有であるURL自体の中でバイト範囲リクエストを生成するためのテンプレートを指定することができる。
[0069]コンテンツ作成デバイス20は、図1の例では、オーディオソース22とビデオソース24とを備える。オーディオソース22は、たとえば、オーディオエンコーダ26によって符号化されるべき、キャプチャされたオーディオデータを表す電気信号を生成するマイクロフォンを備え得る。代替的に、オーディオソース22は、前に記録されたオーディオデータを記憶する記憶媒体、コンピュータシンセサイザなどのオーディオデータ生成器、またはオーディオデータの任意の他のソースを備え得る。ビデオソース24は、ビデオエンコーダ28によって符号化されるべきビデオデータを生成するビデオカメラ、前に記録されたビデオデータで符号化された記憶媒体、コンピュータグラフィックスソースなどのビデオデータ生成ユニット、またはビデオデータの任意の他のソースを備え得る。コンテンツ作成デバイス20は、必ずしもすべての例においてサーバデバイス60に通信可能に結合されるとは限らないが、サーバデバイス60によって読み取られる別個のメディアにマルチメディアコンテンツを記憶し得る。
[0070]未加工オーディオおよびビデオデータは、アナログまたはデジタルデータを備え得る。アナログデータは、オーディオエンコーダ26および/またはビデオエンコーダ28によって符号化される前にデジタル化され得る。オーディオソース22は、通話参加者が話している間、通話参加者からオーディオデータを取得し得、同時に、ビデオソース24は、通話参加者のビデオデータを取得し得る。他の例では、オーディオソース22は、記憶されたオーディオデータを備えるコンピュータ可読記憶媒体を備え得、ビデオソース24は、記憶されたビデオデータを備えるコンピュータ可読記憶媒体を備え得る。このようにして、本開示で説明する技法は、ライブ、ストリーミング、リアルタイムオーディオおよびビデオデータ、またはアーカイブされた、あらかじめ記録されたオーディオおよびビデオデータに適用され得る。
[0071]ビデオフレームに対応するオーディオフレームは、概して、ビデオフレーム内に含まれている、ビデオソース24によってキャプチャされたビデオデータと同時にオーディオソース22によってキャプチャされたオーディオデータを含んでいるオーディオフレームである。たとえば、通話参加者が概して話すことによってオーディオデータを生成する間、オーディオソース22はオーディオデータをキャプチャし、同時に、すなわちオーディオソース22がオーディオデータをキャプチャしている間、ビデオソース24は通話参加者のビデオデータをキャプチャする。したがって、オーディオフレームは、1つまたは複数の特定のビデオフレームに時間的に対応し得る。したがって、ビデオフレームに対応するオーディオフレームは、概して、オーディオデータとビデオデータとが同時にキャプチャされる状況、およびオーディオフレームとビデオフレームとが、それぞれ、同時にキャプチャされたオーディオデータとビデオデータとを備える状況に対応する。
[0072]オーディオエンコーダ26は概して符号化オーディオデータのストリームを生成し、ビデオエンコーダ28は符号化ビデオデータのストリームを生成する。データの各個々のストリームは(オーディオかビデオかにかかわらず)エレメンタリストリームと呼ばれることがある。エレメンタリストリームは、表現のデジタル的にコード化された(場合によっては圧縮された)単一の構成要素である。たとえば、表現のコード化ビデオまたはオーディオ部分はエレメンタリストリームであり得る。エレメンタリストリームは、ビデオファイル内にカプセル化される前に、パケット化エレメンタリストリーム(PES:packetized elementary stream)に変換され得る。同じ表現内では、1つのエレメンタリストリームに属するPESパケットを他のものから区別するためにストリームIDが使用され得る。エレメンタリストリームの基本データ単位はパケット化エレメンタリストリーム(PES)パケットである。したがって、コード化ビデオデータは概してエレメンタリビデオストリームに対応する。同様に、オーディオデータは1つまたは複数のそれぞれのエレメンタリストリームに対応する。
[0073]多くのビデオコーディング規格の場合と同様に、H.264/AVCは、誤りのないビットストリームのシンタックスと、セマンティクスと、復号プロセスとを定義し、そのいずれかは特定のプロファイルまたはレベルに準拠する。 H.264/AVCはエンコーダを指定しないが、エンコーダは、生成されたビットストリームがデコーダの規格に準拠することを保証することを課される。ビデオコーディング規格のコンテキストでは、「プロファイル」は、アルゴリズム、機能、またはツール、およびそれらに適用される制約のサブセットに対応する。たとえば、H.264規格によって定義される「プロファイル」は、H.264規格によって指定されたビットストリームシンタックス全体のサブセットである。「レベル」は、たとえば、ピクチャの解像度、ビットレート、およびマクロブロック(MB)処理レートに関係するデコーダメモリおよび計算など、デコーダリソース消費の制限に対応する。プロファイルはprofile_idc(プロファイルインジケータ)値でシグナリングされ得、レベルはlevel_idc(レベルインジケータ)値でシグナリングされ得る。
[0074]H.264規格は、たとえば、所与のプロファイルのシンタックスによって課される限界内で、復号されたピクチャの指定されたサイズなど、ビットストリーム中のシンタックス要素がとる値に応じて、エンコーダおよびデコーダのパフォーマンスの大きい変動を必要とする可能性が依然としてあることを認識している。H.264規格は、多くの適用例において、特定のプロファイル内でシンタックスのすべての仮定的使用を処理することが可能なデコーダを実装することが実際的でもなく、経済的でもないことをさらに認識している。したがって、H.264規格は、ビットストリーム中のシンタックス要素の値に課された制約の指定されたセットとして「レベル」を定義している。これらの制約は、値に関する単純な限界であり得る。代替的に、これらの制約は、値の演算の組合せ(たとえば、ピクチャの幅×ピクチャの高さ×毎秒復号されるピクチャの数)に関する制約の形態をとり得る。H.264規格は、個々の実装形態が、サポートされるプロファイルごとに異なるレベルをサポートし得ることをさらに規定している。H.264内のコーディングの様々なプロファイルおよびレベルに対応するように、また今度の高効率ビデオコーディング(HEVC:High Efficiency Video Coding)規格などの他のコーディング規格に対応するように、マルチメディアコンテンツの様々な表現が提供され得る。
[0075]プロファイルに準拠するデコーダは、通常、プロファイル中で定義されたすべての機能をサポートする。たとえば、コーディング機能として、Bピクチャコーディングは、H.264/AVCのベースラインプロファイルではサポートされないが、H.264/AVCの他のプロファイルではサポートされる。特定のレベルに準拠するデコーダは、レベルにおいて定義された制限を超えてリソースを必要としない任意のビットストリームを復号することが可能である必要がある。プロファイルおよびレベルの定義は、解釈可能性のために役立ち得る。たとえば、ビデオ送信中に、プロファイル定義とレベル定義のペアが全送信セッションについてネゴシエートされ、同意され得る。より詳細には、H.264/AVCでは、レベルは、たとえば、処理される必要があるブロックの数に関する制限と、復号ピクチャバッファ(DPB:decoded picture buffer)サイズと、コード化ピクチャバッファ(CPB:coded picture buffer)サイズと、垂直動きベクトル範囲と、2つの連続するMBごとの動きベクトルの最大数と、Bブロックが8×8ピクセル未満のサブブロックパーティションを有することができるかどうかとを定義し得る。このようにして、デコーダは、デコーダがビットストリームを適切に復号することが可能であるかどうかを決定し得る。
[0076]ITU−T H.261、H.262、H.263、MPEG−1、MPEG−2、H.264/MPEG−4 part10、および今度の高効率ビデオコーディング(HEVC)規格などのビデオ圧縮規格は、時間冗長性を低減するために動き補償時間的予測を利用する。ビデオエンコーダ28などのエンコーダは、動きベクトルに従って現在のコード化ピクチャを予測するために、いくつかの前の(本明細書ではフレームとも呼ぶ)符号化ピクチャからの動き補償予測を使用し得る。典型的なビデオコーディングには3つの主要なピクチャタイプがある。それらは、イントラコード化ピクチャ(「Iピクチャ」または「Iフレーム」)と、予測ピクチャ(「Pピクチャ」または「Pフレーム」)と、双方向予測ピクチャ(「Bピクチャ」または「Bフレーム」)と、である。Pピクチャは、時間順序で現在のピクチャの前の参照ピクチャのみを使用し得る。Bピクチャでは、Bピクチャの各ブロックは、1つまたは2つの参照ピクチャから予測され得る。これらの参照ピクチャは、時間順序で現在のピクチャの前または後に位置し得る。
[0077]パラメータセットは、概して、シーケンスパラメータセット(SPS)中のシーケンスレイヤヘッダ情報とピクチャパラメータセット(PPS)中のまれに変化するピクチャレイヤヘッダ情報とを含んでいる。パラメータセットがある場合、このまれに変化する情報をシーケンスごとまたはピクチャごとに繰り返す必要はなく、したがってコーディング効率が改善され得る。さらに、パラメータセットの使用はヘッダ情報の帯域外送信を可能にし、誤り耐性を達成するための冗長送信の必要を回避し得る。帯域外送信では、パラメータセットNALユニットが、他のNALユニットとは異なるチャネル上で送信される。
[0078]図1の例では、コンテンツ作成デバイス20のカプセル化ユニット30は、ビデオエンコーダ28からコード化ビデオデータを備えるエレメンタリストリームを受信し、オーディオエンコーダ26からコード化オーディオデータを備えるエレメンタリストリームを受信する。いくつかの例では、ビデオエンコーダ28およびオーディオエンコーダ26はそれぞれ、符号化データからPESパケットを形成するためのパケッタイザを含み得る。他の例では、ビデオエンコーダ28およびオーディオエンコーダ26はそれぞれ、符号化データからPESパケットを形成するためのそれぞれのパケッタイザとインターフェースし得る。さらに他の例では、カプセル化ユニット30は、符号化オーディオデータと符号化ビデオデータとからPESパケットを形成するためのパケッタイザを含み得る。
[0079]ビデオエンコーダ28は、ピクセル解像度、フレームレート、様々なコーディング規格への準拠、様々なコーディング規格のための様々なプロファイルおよび/またはプロファイルのレベルへの準拠、(たとえば、2次元または3次元再生用の)1つまたは複数のビューを有する表現、あるいは他のそのような特性など、様々なビットレートで、かつ様々な特性を用いてマルチメディアコンテンツの異なる表現を生成するために、様々な方法でマルチメディアコンテンツのビデオデータを符号化し得る。本開示で使用する表現は、オーディオデータとビデオデータ、たとえば、1つまたは複数のオーディオエレメンタリストリームと1つまたは複数のビデオエレメンタリストリームの組合せを備え得る。各PESパケットは、PESパケットが属するエレメンタリストリームを識別するstream_idを含み得る。カプセル化ユニット30は、エレメンタリストリームを様々な表現のビデオファイルにアセンブルすることを担当する。
[0080]カプセル化ユニット30は、オーディオエンコーダ26とビデオエンコーダ28とから表現のエレメンタリストリームのPESパケットを受信し、PESパケットから対応するネットワークアブストラクションレイヤ(NAL)ユニットを形成する。H.264/AVC(Advanced Video Coding)の例では、コード化ビデオセグメントは、ビデオテレフォニー、ストレージ、ブロードキャスト、またはストリーミングなどの適用例に対処する「ネットワークフレンドリーな」ビデオ表現を与えるNALユニットに編成される。NALユニットは、Video Coding Layer(VCL)NALユニットと非VCL NALユニットとにカテゴリー分類され得る。VCLユニットは、コア圧縮エンジンを含み得、ブロック、マクロブロック、および/またはスライスレベルのデータを含み得る。他のNALユニットは非VCL NALユニットであり得る。
[0081]カプセル化ユニット30は、マニフェストファイル(たとえば、MPD)とともに、マルチメディアコンテンツの1つまたは複数の表現についてのデータを出力インターフェース32に供給し得る。出力インターフェース32は、ユニバーサルシリアルバス(USB)インターフェース、CDまたはDVDライターまたはバーナーなど、記憶媒体に書き込むためのネットワークインターフェースまたはインターフェース、磁気またはフラッシュ記憶媒体へのインターフェース、あるいはメディアデータを記憶または送信するための他のインターフェースを備え得る。カプセル化ユニット30は、マルチメディアコンテンツの表現の各々のデータを出力インターフェース32に供給し得、出力インターフェース32は、ネットワーク送信、直接送信、または記憶媒体を介してそのデータをサーバデバイス60に送り得る。図1の例では、サーバデバイス60は、様々なマルチメディアコンテンツ64を記憶する記憶媒体62を含み、各マルチメディアコンテンツ64は、それぞれのマニフェストファイル66と1つまたは複数の表現68A〜68N(表現68)とを含む。本開示の技法によれば、マニフェストファイル66の部分は、別々のロケーションに記憶され得、たとえば、記憶媒体62、または潜在的にプロキシデバイスなどネットワーク74の別のデバイスの別の記憶媒体のロケーションに記憶され得る。
[0082]いくつかの例では、表現68は適応セットに分離され得る。すなわち、表現68の様々なサブセットは、コーデック、プロファイルおよびレベル、解像度、ビューの数、セグメントのファイルフォーマット、表現を用いて表示されるべきテキストおよび/または復号され、たとえばスピーカーによって提示されるべきオーディオデータの言語または他の特性を識別し得るテキストタイプ情報、適応セット中の表現のためのシーンのカメラアングルまたは現実世界のカメラパースペクティブを記述し得るカメラアングル情報、特定のオーディエンスのコンテンツ適合性を記述するレーティング情報など、特性のそれぞれの共通のセットを含み得る。
[0083]マニフェストファイル66は、特定の適応セットに対応する表現68のサブセットを示すデータ、ならびに適応セットについての共通の特性を含み得る。マニフェストファイル66はまた、ビットレートなど、適応セットの個々の表現についての個々の特性を表すデータを含み得る。このようにして、適応セットは、簡略化されたネットワーク帯域幅適応を可能にし得る。適応セット中の表現は、マニフェストファイル66の適応セット要素の子要素を使用して示され得る。
[0084]サーバデバイス60は、リクエスト処理ユニット70とネットワークインターフェース72とを含む。いくつかの例では、サーバデバイス60は、ネットワークインターフェース72を含む複数のネットワークインターフェースを含み得る。さらに、サーバデバイス60の機能のうちのいずれかまたはすべてが、ルータ、ブリッジ、プロキシデバイス、スイッチ、または他のデバイスなど、コンテンツ配信ネットワークの他のデバイス上で実装され得る。いくつかの例では、コンテンツ配信ネットワークの中間デバイスは、マルチメディアコンテンツ64のデータをキャッシュし、サーバデバイス60の構成要素に実質的に準拠する構成要素を含み得る。概して、ネットワークインターフェース72は、ネットワーク74を介してデータを送信および受信するように構成される。
[0085]リクエスト処理ユニット70は、クライアントデバイス40などのクライアントデバイスから、記憶媒体72のデータについてのネットワークリクエストを受信するように構成される。たとえば、リクエスト処理ユニット70は、R.Fieldingらによる、RFC2616、「Hypertext Transfer Protocol−HTTP/1.1」、Network Working Group、IETF、1999年6月に記載されている、ハイパーテキスト転送プロトコル(HTTP)バージョン1.1を実装し得る。すなわち、リクエスト処理ユニット70は、HTTP GETリクエストまたは部分GETリクエストを受信し、これらのリクエストに応答してマルチメディアコンテンツ64のデータを与えるように構成され得る。リクエストは、たとえば、セグメントのURLを使用して、表現68のうちの1つのセグメントを指定し得る。いくつかの例では、リクエストはまた、セグメントの1つまたは複数のバイト範囲を指定し得る。いくつかの例では、セグメントのバイト範囲は、部分GETリクエストを使用して指定され得る。他の例では、本開示の技法によれば、セグメントのバイト範囲は、たとえば汎用テンプレートに従って、セグメントのURLの一部として指定され得る。
[0086]リクエスト処理ユニット70はさらに、表現68のうちの1つのセグメントのヘッダデータを与えるためのHTTP HEADリクエストに対応するように構成され得る。いずれの場合も、リクエスト処理ユニット70は、リクエストされたデータをクライアントデバイス40などのリクエスト元デバイスに与えるためのリクエストを処理するように構成され得る。さらに、リクエスト処理ユニット70は、バイト範囲を指定するURLを構成するためのテンプレートを生成し、テンプレートが必須であるか、それともオプションであるかを示す情報を提供し、任意のバイト範囲が受け入れられるかどうか、またはバイト範囲の特定のセットのみが許容されるかどうかを示す情報を提供するように構成され得る。特定のバイト範囲のみが許容されるとき、リクエスト処理ユニット70は、許容バイト範囲の指示を提供することができる。
[0087]図1の例に示すように、マルチメディアコンテンツ64は、メディアプレゼンテーション記述(MPD)に対応し得る、マニフェストファイル66を含む。マニフェストファイル66は、異なる複数の代替表現68(たとえば、異なる品質をもつビデオサービス)の記述を含み得、その記述は、たとえば、表現68のコーデック情報、プロファイル値、レベル値、ビットレート、および他の記述特性を含み得る。クライアントデバイス40は、どのように表現68のセグメントにアクセスすべきかを決定するためにメディアプレゼンテーションのMPDを取り出し得る。従来型のDASHでは、バイト範囲を指定する2つの方法がある。第1の方法は、個別のフラグメント定義にバイト範囲を明記し、MPD XMLにバイト範囲を記憶することである。第2の方法は、MPEGファイル内のSIDXボックスからバイト範囲情報をフェッチし、SIDXバイト範囲情報を使用して、メディアについてのバイト範囲リクエストを出すことである。上述のバイト範囲は、これらの技法または当業者が理解する他の技法のうちのいずれかを使用して指定され得る。
[0088]クライアントデバイス40のウェブアプリケーション52はウェブブラウザを備えることができ、そのようなウェブブラウザは、クライアントデバイス40のハードウェアベースの処理ユニット、またはそのようなウェブブラウザへのプラグインによって実行される。ウェブアプリケーション52への言及は概して、ウェブアプリケーション、たとえばウェブブラウザ、独立型ビデオプレーヤ、またはウェブブラウザへの再生プラグインを組み込んでいるウェブブラウザのいずれかを含むことを理解されたい。ウェブアプリケーション52は、クライアントデバイス40のビデオデコーダ48の復号能力およびビデオ出力44のレンダリング能力を決定するためにクライアントデバイス40の構成(configuration)データ(図示せず)を取り出し得る。
[0089]構成データはまた、クライアントデバイス40のユーザによって選択された言語選好、クライアントデバイス40のユーザによって設定された深度選好に対応する1つまたは複数のカメラパースペクティブ(camera perspective)、および/またはクライアントデバイス40のユーザによって選択されたレーティング選好のうちのいずれかまたはすべてを含み得る。ウェブアプリケーション52は、たとえば、HTTP GETリクエストおよび部分GETリクエストをサブミットするように構成されたウェブブラウザまたはメディアクライアントを備え得る。ウェブアプリケーション52は、クライアントデバイス40の1つまたは複数のプロセッサまたは処理ユニット(図示せず)によって実行されるソフトウェア命令に対応し得る。いくつかの例では、ウェブアプリケーション52に関して説明する機能のすべてまたは部分が、ハードウェア、あるいはハードウェア、ソフトウェア、および/またはファームウェアの組合せで実装され得、ソフトウェアまたはファームウェアの命令を実行するために必須のハードウェアが設けられ得る。
[0090]ウェブアプリケーション52は、クライアントデバイス40の復号能力およびレンダリング能力を、マニフェストファイル66の情報によって示される表現68の特性と比較し得る。ウェブアプリケーション52は、初めに、表現68の特性を決定するためにマニフェストファイル66の少なくとも一部分を取り出し得る。たとえば、ウェブアプリケーション52は、1つまたは複数の適応セットの特性を記述するマニフェストファイル66の一部分をリクエストし得る。ウェブアプリケーション52は、クライアントデバイス40のコーディング能力およびレンダリング能力によって満たされ得る特性を有する表現68のサブセット(たとえば、適応セット)を選択し得る。ウェブアプリケーション52は、次いで、適応セット中の表現のビットレートを決定し、ネットワーク帯域幅の現在利用可能な量を決定し、ネットワーク帯域幅によって満たされ得るビットレートを有する表現のうちの1つからセグメント(またはバイト範囲)を取り出し得る。
[0091]概して、より高いビットレート表現はより高品質のビデオ再生を生じ得るが、利用可能なネットワーク帯域幅が減少したとき、より低いビットレート表現は十分な品質のビデオ再生を与え得る。したがって、利用可能なネットワーク帯域幅が比較的高いとき、ウェブアプリケーション52は比較的高いビットレート表現からデータを取り出し得るが、利用可能なネットワーク帯域幅が低いとき、ウェブアプリケーション52は比較的低いビットレート表現からデータを取り出し得る。このようにして、クライアントデバイス40は、ネットワーク74上でマルチメディアデータをストリーミングしながら、ネットワーク74の変化するネットワーク帯域幅利用可能性にも適応し得る。
[0092]上記のように、いくつかの例では、クライアントデバイス40は、たとえば、サーバデバイス60またはコンテンツ配信ネットワークの他のデバイスにユーザ情報を提供し得る。ユーザ情報は、ブラウザクッキーの形態をとってよく、または他の形態をとってもよい。ウェブアプリケーション52は、たとえば、ユーザ識別子、ユーザ識別子、ユーザ選好、および/またはユーザ人口統計学的情報を収集し、そのようなユーザ情報をサーバデバイス60に提供し得る。ウェブアプリケーション52は、次いで、再生中にターゲット広告メディアコンテンツからのデータを、リクエストされたメディアコンテンツのメディアデータ中に挿入するために使用すべき、ターゲット広告メディアコンテンツに関連するマニフェストファイルを受信し得る。このデータは、マニフェストファイルまたはマニフェストサブファイルについてのリクエストの結果として直接受信されることがあり、またはこのデータは、(ユーザ人口統計学的情報および他のターゲット情報を記憶するために使用される、供給されたブラウザクッキーに基づいて)代替のマニフェストファイルまたはサブファイルに対するHTTPリダイレクトを介して受信されることがある。
[0093]時々、クライアントデバイス40のユーザは、マルチメディアコンテンツ64などのマルチメディアコンテンツをリクエストするために、キーボード、マウス、スタイラス、タッチスクリーンインターフェース、ボタン、または他のインターフェースなど、クライアントデバイス40のユーザインターフェースを使用してウェブアプリケーション52と対話し得る。ユーザからのリクエストに応答して、ウェブアプリケーション52は、たとえば、クライアントデバイス40の復号能力およびレンダリング能力に基づいて、表現68のうちの1つを選択することができる。表現68のうちの選択された1つのデータを取り出すために、ウェブアプリケーション52は、表現68のうちの選択された1つの特定のバイト範囲を連続的にリクエストすることができる。このようにして、ウェブアプリケーション52は、1つのリクエストを通じてファイル全体を受信するのではなく、複数のリクエストを通じてファイルの部分を連続的に受信することができる。本開示の技法によれば、ウェブアプリケーション52は、たとえばテンプレートに従ってバイト範囲を指定するURLを含むリクエストを形成することができる。
[0094]いくつかの例では、サーバデバイス60は、クライアントデバイス40などのクライアントデバイスからのURLについての汎用テンプレートを指定することができる。そして、クライアントデバイス40はテンプレートを使用して、HTTP GETリクエストのためのURLを構成することができる。DASHプロトコルでは、URLは、各セグメント内にそれらを明記すること、またはURLTemplateを与えること、のいずれかによって形成され、このURLTemplateは、$$、$RepresentationID$、$Index$、$Bandwidth$、または$Time$(DASHの現在のドラフトのTable 9により記述されている)などの1つまたは複数の周知のパターンを含むURLである。URLリクエストを行う前に、クライアントデバイス40は、「$$」などのテキスト列、表現id、セグメントのインデックスなどを、URLTemplateに置換して、フェッチされる最終URLを生成することができる。本開示は、たとえば、マルチメディアコンテンツ64のマニフェストファイル66などの、マルチメディアコンテンツのMPDにおいて、DASHファイルのSegmentInfoDefault要素に追加され得るいくつかの追加のXMLフィールドを定義する。
[0095]いくつかの例では、サーバデバイス60は、汎用テンプレートの用法、たとえば、テンプレートが必須であるか、それともオプションであるかを第1のフィールドに表すデータを提供することができる。たとえば、サーバデバイス60(またはプロキシデバイス)はクライアントデバイス40に対し、クライアントデバイス40がテンプレートを使用することが求められるのか、それとも単に許容されるのかを示す情報を提供することができる。サーバデバイス60は、テンプレートの用法を示すために、マニフェストファイル66に要素の値を設定することができる。たとえば、(マニフェストファイル66の一例を表す)MPDファイルは「MustUseRangeURL」と標示されたフィールドを含むことができ、これは3つの値、すなわち、DoNotIncorporateByteRangeIntoUrl(0)、ByteRangeTemplateOptional(1)、またはByteRangeTemplateMandatory(2)、のうちの1つをとり得る。いくつかの例では、サーバデバイス60が値をゼロに設定した場合、フェッチされたURLはバイト範囲を含んではならず、ByteRangeTemplateを使用してはならない。いくつかの例では、サーバデバイス60はそれ自体の選択で値を1に設定し、DASHプレーヤ(たとえば、ウェブアプリケーション52)は、通常のバイト範囲リクエストを出すことができ、またはバイト範囲をURL自体に埋め込むことができる。いくつかの例では、サーバデバイス60が値を2に設定した場合、DASHプレーヤはURL内でバイト範囲リクエストを出さなければならない。
[0096]本開示によって提供される別のフィールドは列挙属性、「AllowedByteRanges」であり、これも3つの値のうちの1つをとることができる。第1の値は、RangesOnlyFromMPD(0)である。サーバデバイス60がこの値を指定したとき、DASHプレーヤ(たとえば、ウェブアプリケーション52)が(表現68の各々のデータ内に含まれ得る)SIDXからのバイト範囲を使用することは許容されない。したがって、DASHプレーヤは、DASH MPD、たとえばマニフェストファイル66からのバイト範囲を使用することのみに制約され得る。第2の値は、RangesFromSIDX(1)である。サーバデバイス60がこの値を指定したとき、DASHプレーヤは、フラグメントまたはセグメントリクエストを生成するために(同じく、表現68の各々のセグメント内にデータとして含まれ得る)SIDXからのバイト範囲のみを使用することができる。第3の値、RangesFromAnywhere(3)は、SIDXまたはMPDを使用する能力、および2つ以上のフラグメントを1つのセグメントリクエストに結合する能力、2つ以上のセグメントを一度にリクエストする能力、またはバイト範囲リクエストにおける1つもしくは複数のセグメントもしくはセグメントの部分についてのリクエストの他の混合を含む、任意のバイト範囲リクエストを許容する。
[0097]本開示によって提供されるさらに別のフィールドは、ByteRangeTemplateフィールドである。サーバデバイス60は、このフィールドにデータを提供することができる。本開示の技法によれば、ByteRangeTemplateは、フィールド$Url$、$StartByte$、および$EndByte$を含む文字列パターンを指定することができる。さらに、ByteRangeTemplateは、URLベースのバイト範囲リクエストを出すために追加される追加のASCII文字を含むことができ、またはURLTemplate要素の場合のように単一のドル記号を意味するシンボル「$$」を含むことができる。クライアントデバイス40は、ByteRangeTemplateの3つのフィールドの各々にデータを代入することができる。具体的には、クライアントデバイス40は、URL Templateフィールドの値に対応する値を$Url$フィールドに代入することができる。クライアントデバイス40はまた、$StartByte$フィールドおよび$EndByte$フィールドに、結果として生じるURLにリクエストされるバイト範囲の開始バイトおよび終了バイトを代入することができる。このようにして、クライアントデバイス40は、バイト範囲リクエストについての情報を含むURLを生成することができる。クライアントデバイス40は、「Range:」フィールドを内包していないGETリクエストを介して、この構成されたURLからデータをフェッチすることができる。すなわち、クライアントデバイス40は、生成されたURLを含め、GETリクエストをサーバデバイス60にサブミットすることができる。
[0098]バイト範囲テンプレートの文字列パターンがByteRangeTemplate属性に記憶されるかどうか、または代わりにそれらがURLTemplateに記憶されるかどうかは重要ではないことを、当業者は理解されたい。ByteRangeTemplateおよびURLTemplate属性におけるテンプレートの文字列パターンの記憶は、例として提示されるにすぎない。概して、これらの文字列パターンは、ロケーションまたはマニフェストファイル中の他の場所のいずれかに記憶され得る。
[0099]これらのフィールドのデータを指定するリクエストの一例は下記のとおりである。この例では、(サーバデバイス60などの)ウェブサーバが、バイト範囲を使用して、または範囲リクエストに対応することによって(この場合、範囲がURLに埋め込まれている)、マルチメディアコンテンツ(たとえば、ムービー「トロン」)を分配する。ウェブサーバは、たとえばwww.mp4player.comであり得る。以下に提示するのは、この第1の例の値である。
Figure 0006316781
[0100]この例では、「www.mp4player.com」のウェブサーバは、要素「MustUseRangeURL」に「1」の値を割り当てることによって、バイト範囲テンプレートがクライアントデバイスにとってオプションであることを示している。すなわち、クライアントデバイス40は、URLテンプレートに従って形成されるURLの一部としてバイト範囲を指定してよく、またはクライアントデバイス40は、従来型の部分GETリクエストを利用してもよい。クライアントデバイス40がテンプレートを使用することを選択した場合、クライアントデバイスはURL(「http://www.mp4player.com/TRON/segment.$Bandwidth$.$Index$」)、その後にスラッシュ「/」、$StartByte$の値、別のスラッシュ「/」、そして$EndByte$の値についてのリクエストを出す。したがって、クライアントデバイス40は2つの部分、すなわち、特定の表現およびそのセグメントに対応する基本部分と、リクエストされるバイト範囲の開始バイトおよび終了バイトを指定するバイト範囲部分とを有するURLを構成することができる。バイト範囲部分は、部分GETリクエストにおける「Range:」ヘッダの機能を基本的に実行し得るが、「Range:」ヘッダとしてではなく、URLパス自体に指定される。当業者にとっては、バイト範囲がURLパスに指定されるので、GETリクエストの結果が、透過的な(または明示的な)ウェブプロキシデバイスのような何らかの中間デバイスによって潜在的にキャッシュ可能であることが明らかであろう。当業者にとっては、キャッシュ可能なリクエストにより、数千さらには数百万のクライアントが同時に同じコンテンツをリクエストできるようにビデオ再生をスケールできることが明白なはずである。当業者にとっては、コンテンツ配信ネットワークが異なる場合には異なり得るテンプレートに従ってバイト範囲が指定されるので、URLパス内でのバイト範囲リクエスト(byte-range-within-url-path request)のために、1つの唯一のフォーマットを様々なコンテンツ配信ネットワークに採用させる負担が軽減されることが明らかなはずである。
[0101]その上、この例では、ウェブサーバは、要素「AllowedByteRanges」に「0」の値を割り当てることによって、MPDに指定されたバイト範囲のみが指定可能であることを示している。したがって、クライアントデバイスがバイト範囲テンプレートを使用してバイト範囲を指定することを選択しても、部分GETリクエストとしてバイト範囲を指定することを選択しても、クライアントデバイスは、MPDファイルに特定されるバイト範囲を指定することを許容されるにすぎない。
[0102]クライアントデバイスによって実行されるウェブブラウザ(たとえば、クライアントデバイス40のウェブアプリケーション52)がバイト範囲リクエストをサポートし、プラグイン用にバイト範囲リクエストをサポートすると仮定すると、DASHプラグインはHTTP1.1のRange:ヘッダを使用してByteRangeリクエストを出すことができる。セグメントID=27を有する1000Kbpsビットレートのビデオを仮定すると、バイト範囲を指定する従来型の部分GETリクエストは次のようになり得る。
Figure 0006316781
[0103]ウェブブラウザにより、そのプラグインがバイト範囲リクエストを出すことができない場合、リクエストは、上記の例によれば、次のようになり得る。
Figure 0006316781
[0104]このようにして、本開示の技法により、(クライアントデバイス40などの)クライアントデバイスによって実行される(ウェブアプリケーション52などの)ウェブブラウザプラグインは、関わるブラウザにより、正式なHTTP1.0「Range:」ヘッダをリクエストヘッダにおいて出すことができないときでも、バイト範囲リクエストを出すことができる。同様に、ウェブブラウザプラグインは、たとえば、(中間ネットワークデバイス、たとえばルータなどの)他のネットワークデバイスが部分GETリクエストをサポートしないか、または適切に処理しない状況に対処するために、ウェブブラウザがバイト範囲リクエストをサポートしない場合でも、このようにしてバイト範囲リクエストを出すためにこれらの技法を使用することができる。
[0105]ウェブアプリケーション52によってサーバデバイス60にサブミットされたリクエストに応答して、ネットワークインターフェース54は、選択された表現の受信されたセグメントのデータを受信し、ウェブアプリケーション52に提供することができる。そして、ウェブアプリケーション52は、セグメントをカプセル化解除ユニット50に提供することができる。カプセル化解除ユニット50は、ビデオファイルの要素を構成PESストリームにカプセル化解除し、PESストリームをパケット化解除して符号化データを取り出し、たとえば、ストリームのPESパケットヘッダによって示される、符号化データがオーディオストリームの一部であるかビデオストリームの一部であるかに応じて、符号化データをオーディオデコーダ46またはビデオデコーダ48のいずれかに送り得る。オーディオデコーダ46は、符号化オーディオデータを復号し、復号されたオーディオデータをオーディオ出力42に送り、ビデオデコーダ48は、符号化ビデオデータを復号し、ストリームの複数のビューを含み得る復号されたビデオデータをビデオ出力44に送る。
[0106]ビデオエンコーダ28、ビデオデコーダ48、オーディオエンコーダ26、オーディオデコーダ46、カプセル化ユニット30、ウェブアプリケーション52、およびカプセル化解除ユニット50はそれぞれ、適用可能なとき、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適な処理回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。ビデオエンコーダ28およびビデオデコーダ48の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。同様に、オーディオエンコーダ26およびオーディオデコーダ46の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合コーデックの一部として統合され得る。ビデオエンコーダ28、ビデオデコーダ48、オーディオエンコーダオーディオエンコーダ26、オーディオデコーダ46、カプセル化ユニット30、ウェブアプリケーション52、および/またはカプセル化解除ユニット50を含む装置は、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0107]このようにして、クライアントデバイス40は、ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定することと、ソースデバイスの要求に従ってファイルとバイト範囲とをユニフォームリソースロケータ(URL)のファイルパス部分に指定するURLを形成することと、ソースデバイスに対して形成されたURLを指定するGETリクエストを出すこととを行うように構成された1つまたは複数のプロセッサを含み得る、マルチメディアデータについての情報を取り出すためのデバイスの一例を表す。
[0108]その上、サーバデバイス60は、マルチメディアコンテンツのマニフェストファイルを提供することと、マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、URLテンプレートおよびバイト範囲テンプレートは、URL内にバイト範囲リクエストを含むようにURLを形成するためのテンプレートを提供し、URLテンプレートおよびバイト範囲テンプレートに従って構成されたURLを含むリクエストを受信することと、リクエストのURLはマルメディアコンテンツの表現のバイト範囲を指定し、リクエストに応答して、リクエストのバイト範囲に対応する表現のマルチメディアデータを出力することと、を行うように構成された1つまたは複数のプロセッサを含み得る、ビデオデータについての情報を送るためのデバイスの一例を表す。
[0109]図2は、図1のネットワーク74の一部を形成するデバイスの例示的なセットを示すブロック図である。この例では、ネットワーク74は、ルーティングデバイス80A、80B(ルーティングデバイス80)とプロキシキャッシュデバイス82とを含む。ルーティングデバイス80およびプロキシキャッシュデバイス82は、ネットワーク74の一部を形成し得る少数のデバイスを表すことが意図される。スイッチ、ハブ、ゲートウェイ、ファイアウォール、ブリッジ、および他のそのようなデバイスなどの他のネットワークデバイスも、ネットワーク74内に含まれ得る。その上、サーバデバイス60とクライアントデバイス40との間にネットワークパスに沿って追加のネットワークデバイスが提供され得る。
[0110]概して、ルーティングデバイス80は、ネットワーク74を介してネットワークデータを交換するための1つまたは複数のルーティングプロトコルを実装する。いくつかの例では、ルーティングデバイス80は、後述のようにプロキシキャッシュデバイス82による機能など、プロキシまたはキャッシュ動作を実行するように構成され得る。したがって、いくつかの例では、ルーティングデバイス80もプロキシデバイスと呼ばれ得る。概して、ルーティングデバイス80は、ネットワーク74を介したルートを発見するためにルーティングプロトコルを実行する。そのようなルーティングプロトコルを実行することによって、ルーティングデバイス80Bは、それ自体からルーティングデバイス80Aを介してサーバデバイス60へ至るネットワークルートを発見することができる。
[0111]したがって、ルーティングデバイス80Bは、クライアントデバイス40からサーバデバイス60に宛てられた、TCP−IPカプセル化HTTP GETリクエストなどのネットワーク通信を受信することができる。そのような通信に応答して、ルーティングデバイス80Bは、サーバデバイス60へのルートを特定し、さらに、ルートがプロキシキャッシュデバイス82を含むと決定し得る。たとえば、プロキシキャッシュデバイス82は、ルートに沿った「ネクストホップ」を備えることができ、または1つもしくは複数の追加のネットワークデバイスは、ルーティングデバイス80Bをプロキシキャッシュデバイス82に通信可能に結合することができる。プロキシキャッシュデバイス82はまた、通信をルーティングデバイス80Aに向けることができ、ルーティングデバイス80Aは、通信をサーバデバイス60に転送することができる。
[0112]プロキシキャッシュデバイス82は、プロキシキャッシュ機能を実行することができる。HTTPプロキシキャッシングはインターネットが動作するために重要である。プロキシキャッシュデバイス82などのHTTPプロキシキャッシュデバイスは、HTTPプロトコルバージョン(たとえば、HTTP0.9、HTTP1.0、および/またはHTTP1.1)のいずれかまたはすべてを実装することができる。その上、プロキシキャッシュデバイス82などのプロキシキャッシュデバイスは、HTTP GETリクエストに現れる一意の「ユニフォームリソースロケータ」(URL)に基づいてコンテンツをキャッシュすることができる。このURLをキーとして使用して、その後、キャッシュ内でフェッチリクエストを探索することができる。プロキシキャッシュデバイス82は、本開示の技法に従って、変更URLなどのURLに対応し得る、マルチメディアコンテンツの表現のセグメントまたはサブセグメントをキャッシュするように構成され得る。
[0113]いくつかの例では、コンテンツ配信ネットワーク(CDN)がネットワーク74内に提供されること、またはネットワーク74に通信可能に結合されることがある。CDNを提供する会社の例には、Akamai、Level 3 Communications、およびLimelightがある。CDNのデバイスは、プロキシキャッシュデバイス82と同様の機能を実行することができる。CDNは、ISPに、また国内のバックホールプロバイダのポータルに、プロキシキャッシュデバイスとまったく同様のデバイスを配置することができる。有料で、CDNはコンテンツを配信すること、または顧客のコンテンツでプロキシキャッシュデバイスを「事前充填する(pre-fill)」ことができる。次いで顧客は、コンテンツを参照し、DNSスウィズリング(DNS swizzling)として一般に知られている技法を通じて、スマートネームサーバが、コンテンツについてのリクエストを最寄のローカルCDNキャッシュに向けることができ、それによりウェブページがロードしているときの貴重な往復時間を節約することができる。代替的に、顧客は異なる料金を支払い、コンテンツがキャッシュされるのみで、あらかじめ「事前充填」されてはいないことがある。
[0114]上記で説明したように、ストリーミングネットワークプロトコルは、同じマルチメディアコンテンツの複数の表現を提供することができる。それによって、DASHなどの適応ストリーミングプロトコルは適応を可能にするが、その利益は高いコストを伴うことがある。数十、数百、数千、数百万、またはより多くの数のバイトを表し得るマルチメディアコンテンツが、たとえば、8個の異なるビットレートで符号化され、2秒のセグメントに分割されることがあり、さらに1つまたは複数のオーディオストリーム(たとえば、ステレオまたはDolby 5.1)が加わり、これも複数の部分に分割され得る。このようにして、2時間ビデオでは3,600個以上のフラグメントに10個のストリームを掛けた結果が生じることがあり、対応するデータはプロキシキャッシュまたはCDNにおいて大量のディレクトリ記憶を消費することがある。
[0115]大量の記憶を回避するために、サーバデバイス60は、ストリームの各々につき個別のファイル(たとえば、上記の例では10個のファイル)を受信するように構成され得る。クライアントデバイス40は、本開示の技法に従って、HTTP GETリクエストもしくは部分GETリクエスト、またはGETリクエストのURLに指定されたバイト範囲リクエストを使用して、セグメントまたはサブセグメントを取り出すことができる。いくつかの例では、HTTPプロトコルスタックをクライアントデバイス40が使用して、バイト範囲リクエストを出すことができる。このようにして、たとえば、36,000個のフラグメントからなる一般的なムービーは10個のファイル、すなわち8個のオーディオおよび2個のビデオにまとめられ(collapsed)得る。本開示の技法によれば、クライアントデバイス40は、それ自体がバイト範囲を指定するURLを表すデータを含むHTTP GETリクエストを使用して、ファイルの特定のバイト範囲を取り出すことができる。
[0116]場合によっては、プロキシデバイスが、「Range:」ヘッダを適切に処理しないにもかかわらずHTTP1.1「Range:」ヘッダを受信したとき、プロキシデバイスは、ヘッダを無視し、ファイルのリクエストされた部分ではなくファイル全体をフェッチし分配することがある。これは、2時間のMPEGビデオファイルにとって打撃となることがあり、サイズが数ギガバイトに達し得る。そのようなストリームの途中でレートを切り替えることにより、プロキシキャッシュは、新しいレートに合わせてファイル全体をフェッチし始め、その結果、(キャッシュがコンテンツ応答を送り返し得る早い方の時点である、少なくとも半分のデータがキャッシュに到着する時点まで)遅延が生じる可能性がある。これは、ネットワークストリーミングを実現するために順々にファイルの小規模部分を取り出すという、部分GETリクエストの意図した目的を途絶させる。この問題を克服するために、本開示は、バイト範囲リクエストをURLに透過的に埋め込み、それによって「Range:」ヘッダリクエストをファイル全体リクエストに変換するプロキシキャッシュを回避するための技法を提供する。その上、本開示はまた、オリジンサーバにバイト範囲リクエストを探すようにシグナリングするための技法を提供する。
[0117]特に、本開示は、バイト範囲リクエストをサポートしない中間プロキシを通じてバイト範囲をシグナリングするための技法を提供する。すなわち、クライアントデバイス40は、ルーティングデバイス80およびプロキシキャッシュデバイス82などの中間ネットワークデバイスによってバイト範囲リクエストが適切に処理されるように、バイト範囲リクエストをサブミットすることができる。上述のように、クライアントデバイス40によって実行されるウェブアプリケーション52などのウェブブラウザが、ウェブブラウザがHTTP1.1に従ってバイト範囲リクエストを実施しない(またはプラグインが利用するのを許容しない)場合だけではなく、中間デバイスが部分GETリクエストをサポートしないか、または適切に処理しないときに範囲リクエストをサブミットするためにも、バイト範囲テンプレートに従ってURLに範囲リクエストを埋め込むことができる。途中で、バイト範囲がURLに埋め込まれるので、ルーティングデバイス80および/またはプロキシキャッシュデバイス82などのプロキシデバイスは、プロキシデバイスがバイト範囲リクエストを理解しないときでも、部分バイト範囲応答を記憶することができる。したがって、まったく同じバイト範囲を今後フェッチすることにより、プロキシデバイスはデータのバイト範囲をそのキャッシュから正しくフェッチするはずである。
[0118]本開示はまた、HTTP用の新しい「拡張ヘッダ」を提供する。概して、HTTPは、HTTP「GET」リクエストにおける、またHTTP応答におけるユーザ定義拡張ヘッダを許容する。RFC2616のSection7.1において定義されているように、「認識されないヘッダフィールドは、受信者によって無視されるべきであり、透過的プロキシによって転送されなければならない」。これらの拡張ヘッダは、「GET」リクエストにおける拡張ヘッダフィールドに帰着する(reduce to)エンティティヘッダフィールドとして解析される。拡張ヘッダ名は、任意の認識されないHTTPヘッダ(すなわち、任意のアルファベットトークン)である。拡張ヘッダは、通常はSMTPメッセージヘッダにおける、HTTPによってまだ定義されていない任意のアルファベットトークンであり得るが、RFC822に定義されているように、SMTPのいかなる将来バージョンでもプレフィックス「X−」は使用されないことが保証される。HTTPプロトコル自体は、RFC822に定義されているヘッダ機構に基づいており、また「X−」取決めは、一般に転送−変更なし−オリジンサーバへ(forwarded-unchanged-to the origin server)と、返送−クライアントへ−変更なし(forwarded back-to the client-unchanged)である非HTTP拡張ヘッダを識別するために、HTTPプロキシにより使用される。
[0119]本開示は、HTTP GETリクエストに現れるにすぎない「X−Dash−ByteRange−URL」と呼ばれる新しい拡張ヘッダを提供する。プレフィックス「X−」は、HTTPとの将来の衝突を回避するために使用される。プレフィックス「Dash−」は、DASHクライアントがヘッダを生成していることをシグナリングする。当業者には、このヘッダの正確な名前は重要ではないことは理解されるだろうが、これらの技法は、クライアントデバイスおよびサーバデバイスが拡張ヘッダ用の共通の名前に従って構成されていると仮定する。
[0120]このヘッダは、(ヘッダを解釈するように構成された)中間ノードおよびプロキシデバイスに対し、バイト範囲がHTTP GETリクエストに含まれることを示す情報を提供する。これにより、オリジンサーバまたはCDNは、MPEGファイルを単一のファイルとして記憶することができ、それは、このヘッダを理解する場合、「X−Dash−ByteRange−URL」ヘッダを使用して、URLに埋め込まれたバイト範囲があると決定することができる。
[0121]したがって、クライアントデバイス40は、GETリクエストのURL内に埋め込まれた範囲リクエストにおいて拡張ヘッダを提供することができる。その上、ルーティングデバイス80および/またはプロキシキャッシュデバイス82などのプロキシデバイスが、ヘッダを認識するように構成されるとき、プロキシデバイスは、リクエストされたバイト範囲のみを取り出し、クライアントデバイス40に提供することができる。その上、プロキシキャッシュデバイス82および/またはルーティングデバイス80はファイルを、同じファイルについての一連のバイト範囲リクエストから再アセンブルするように構成され得る。一方、ルーティングデバイス80および/またはプロキシキャッシュデバイス82などのプロキシデバイスがヘッダを解釈するように構成されていないとき、プロキシデバイスは、ヘッダを含むGETリクエストをサーバデバイス60に渡すだけでよい。
[0122]「X−Dash−ByteRange−URL」ヘッダはペイロードを有し得る。ペイロードの2つの例について以下で説明する。一例では、ペイロードは空である。バイト範囲の存在がヘッダの存在によってシグナリングされる。バイト範囲は常に、HTTP GET URLリクエストの終わりに付加され得る。次いで、オリジンサーバ(たとえば、サーバデバイス60)またはプロキシデバイス(たとえば、ルーティングデバイス80もしくはプロキシキャッシュデバイス82のうちの1つ)は、最後の文字からURLを検索することができ、(たとえば、RFC2616におけるバイト範囲リクエスト仕様によって定義されている、文字「0〜9」および「−」および「,」の検索を使用して)最大長のバイト範囲リクエストを推定する。
[0123]次いで、オリジンサーバまたはプロキシデバイスは、いくつかの例では、URLからバイト範囲を除去し、(除去されたバイト範囲を有するURLを使用して)ファイルを開き、必要なバイトをフェッチし、その範囲のバイトをクライアントデバイス40にサービスすることができる。この設計は、「X−Dash−ByteRange−URL」ヘッダを実装しない中間プロキシとの間で後方互換性があり、これらの中間プロキシデバイスは、バイト範囲を正しくキャッシュし、後のリクエスト時に、それをクライアントまたはクライアントプロキシにサービスする。たとえば、プロキシキャッシュデバイス82は、X−Dash−ByteRange−URLヘッダを認識し処理するように構成され得る一方、ルーティングデバイス80Bは、X−Dash−ByteRange−URLヘッダを処理するようには構成されないことがある。それでも、ルーティングデバイス80Bは、このヘッダを含むリクエストをプロキシキャッシュデバイス82に渡すことができ、プロキシキャッシュデバイス82は、そのようなリクエストからヘッダを除去し、リクエストされたバイト範囲を取り出し、リクエストされたバイト範囲のデータをキャッシュし、リクエストされたバイト範囲をルーティング80B経由でクライアントデバイス40に提供することができる。プロキシキャッシュデバイス82は、同じファイルの後続のバイト範囲をキャッシュすることができ、いくつかの例では、一連のそのようなバイト範囲リクエストからファイル全体を再アセンブルすることができる。このようにして、プロキシキャッシュデバイス82は、リクエストされたバイト範囲のみをクライアントデバイス40に提供する前にファイル全体をロードすることを回避することができ、そうでなければ、クライアントデバイス40への送信で著しい遅延を引き起こし得る。
[0124]一方、オリジンサーバ、たとえばサーバデバイス60は、単一のMPEGファイルにおいてビデオストリーム全体を維持することができ、より効率的にリクエストに対応し、MPEGビデオをより効率的にディスク上または不揮発性(たとえば、FLASH)記憶装置内に記憶することができる。たとえば、本開示の技法に従って、以下のリクエストを使用してビデオのバイト範囲を取り出すことができる。
Figure 0006316781
[0125]別の例では、X−Dash−ByteRange−URLヘッダのペイロードは、URL自体からの実際のバイト範囲リクエスト仕様を含む。したがって、これはユーザ定義「Range:」ヘッダのような働きをするが、その振る舞いは異なる。サーバデバイス60などのオリジンサーバは、ペイロードにより「X−Dash−ByteRange−URL」ヘッダを解釈し、このヘッダのペイロードをリクエストURLと照合するように構成され得る。パターン照合を計算することによって、オリジンサーバはバイト範囲指定子をURLから除去し、新しいURLを形成することができ、この新しいURLを使用して、MPEGファイル全体をそのディスクまたは不揮発性記憶装置からフェッチする。次いでオリジンサーバは、(やはり、RFC2616によって指定された同じシンタックスを使用する)バイト範囲仕様を使用して、必要なバイトをMPEGファイルから抽出することができる。たとえば、本開示の技法に従って、以下のリクエストを使用してビデオのバイト範囲を取り出すことができる。
Figure 0006316781
[0126]次いで、サーバ、プロキシ、またはCDNデバイス(たとえば、サーバデバイス60、ルーティングデバイス80、またはプロキシキャッシュデバイス82のうちの1つ)はこのリクエストをリライトし、たとえば次のように従来型の部分GETリクエストとしてリクエストが行われていたかのようにコンテンツを分配することができる。
Figure 0006316781
[0127]NFSおよびUNIX(登録商標)ファイルシステム上では、2つ以上の「/」文字の存在は、単一の「/」文字と同じ扱いを受けることに留意されたい。この技法には多くの利点があり得る。HTTPに対するこの改良を実装するように構成されたCDNまたはプロキシデバイスは、単一のMPEGファイルへのバイト範囲リクエストに対応して、ディスク上の記憶スペースを節約することができる。スマートプロキシキャッシュまたはCDNは、一連のこれらの範囲リクエストからMPEGファイルを作り上げ、これらの範囲リクエストすべてを単一のキャッシュされたファイルに結合することもできる。たとえば、プロキシキャッシュデバイス82は、MPEGファイル全体、または他のビデオファイルを、たとえばクライアントデバイス40または他のクライアントデバイスからの複数の連続的なバイト範囲リクエストから構成することができる。
[0128]オリジンサーバによって除去され得るURL内のバイト範囲の存在をシグナリングするために、「X−Dash−ByteRange−URL」ヘッダに、または別の拡張ヘッダにパターンが指定される場合など、他の可能な実装形態がある。そのような他の実装形態もすべて、本開示の技法を実施するために企図される。
[0129]このようにして、プロキシキャッシュデバイス82は、マルチメディアコンテンツのマニフェストファイルを提供することと、マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、URLテンプレートおよびバイト範囲テンプレートは、URL内にバイト範囲リクエストを含むようにURLを形成するためのテンプレートを提供し、URLテンプレートおよびバイト範囲テンプレートに従って構成されたURLを含むリクエストを受信することと、リクエストのURLはマルメディアコンテンツの表現のバイト範囲を指定し、リクエストに応答して、リクエストのバイト範囲に対応する表現のマルチメディアデータを出力することと、を行うように構成された1つまたは複数のプロセッサを含み得る、ビデオデータについての情報を送るためのデバイスの一例を表す。
[0130]図3は、様々なコンテンツ配信ネットワーク92A〜92N(CDN92)を含む例示的なシステム90を示すブロック図である。この例では、コンテンツ作成デバイス20が、様々な表現によるマルチメディアコンテンツを作成し、1つまたは複数の表現をCDN92の各々に提供する。いくつかの例では、CDN92の各々は同じ表現を受信することがあり、他の例では、CDN92は他のCDN92とは異なる表現セットを受信することがある。CDN92の各々に、図1および図2に関して説明したサーバデバイス60と同様のサーバデバイスが提供され得る。代替的に、CDN92の各々に、プロキシまたはキャッシュデバイスが提供され得る。その上、いくつかの例では、CDN92の中には、サーバデバイスを含むものもあれば、プロキシデバイスを含むものもある。「CDN」という用語は概して、コンテンツデリバリネットワーク、コンテンツ配信ネットワーク、コンテンツサーバファーム、または他の同様の機能を指すために本開示において使用される。本開示の技法によれば、CDN92の各々は、それぞれのCDNに固有であるバイト範囲を指定するURLのテンプレートを含むことができる。
[0131]いくつかの例では、CDN92のうちのいくつかは、1日、1週間、1ヵ月、1年のうちのある時間中、または他の時間中のみアクティブである。たとえば、CDN92Aは、午前および午後の時間中アクティブであることがあり、CDN92Bは、夕方および夜の時間中アクティブであることがある。
[0132]本開示は、図3に関して説明するように、たとえば、クライアントデバイス40によってCDNまたはコンテンツサーバファームを選択するための技法を提供する。DASH MPDファイルが、DASHコンテンツについてのリクエストを生成するために使用される一連のBaseURLを示すデータを含むと仮定される。その上、各BaseURLは、一意の(ユニークな)CDN、たとえばCDN92のうちの一意の1つを指すと仮定される。したがって、(クライアントデバイス40によって実行される)DASHプレーヤは、対応するBaseURLを選択することによって適切なCDNを選択するように構成され得る。下記の表1に、選択するために使用され得る一連の5つの選択基準を示す。(追加または代替として)使用され得る他の基準があり、これらの5つは、これらよりもはるかに広範囲の可能な選択基準セットを代表するものである。したがって、表1に示す選択基準に対する追加または代替の選択基準が提供されてよい。
Figure 0006316781
[0133]一例では、クライアントデバイス40は、リダイレクションサービスを指示するリダイレクションURLを指定することによって、CDN92のうちの1つを選択することができる。リダイレクションサーバデバイス94は、リダイレクションサービスを実行する、リダイレクションURLで利用可能なデバイスを表す。この場合、クライアントデバイス40は、POSTメッセージをリダイレクションURLに送って、POSTメッセージをリダイレクションサーバデバイス94に向けることができる。メッセージの本文において、クライアントデバイス40は唯一のBaseURLを指定することができる。次いでダイレクションサーバデバイス94は、BaseURLを調べ、CDN92のうちのどれを使用するかを決定し、クライアントデバイス40に対し、HTTP応答の本文において新しいBaseURLを返すことができる。この決定は、POST元クライアントデバイスのロケーション(ロケーションプロトコルはクライアントIPアドレスをロケーションにマップし得る)、ブラウザタイプ(POSTリクエストに示される)、ネットワーク配置、および/または表1に記載の選択基準のうちのいずれか、あるいは同様の基準などの考えに基づき得る。クライアントデバイス40は、POST方法を使用するのではなく、代わりにGET方法(GET方法の本文でコンテンツを送る)を使用することができ、リダイレクションサーバは、HTTP301(Content Moved)または307(Temporary Redirect)応答を使用して、直接的にCDN上でコンテンツの第1の部分に直接的にクライアントデバイス40をリダイレクトすることができることに留意されたい。
[0134]場合によっては、クライアントは、MPD内のCDN選択情報に基づいて行動するように構成されないことがあり、そのため、クライアントは、BaseURLをリダイレクションサーバにポスティングし得るだけではなく、選択基準をサーバにポスティングすることもあり、第3に、(ジオロケーション、ホップカウント、ローカル時刻などの)そのローカル情報のすべてまたは一部をリダイレクションサーバデバイス94にポスティングすることがある。この場合、リダイレクションサーバ94は、決定プロセス全体を実行し、クライアントデバイス40によって使用されるべきBaseURLを返すことができる。
[0135]さらに、リダイレクションサーバデバイス94は、クライアントデバイス40が視聴を希望する特定のマルチメディアコンテンツに依拠し得る情報を分析するように構成され得る。いくつかのビデオタイトルは、必ずしもCDN92の各々で入手可能であるとは限らない。たとえば、あるコンテンツは、輸出または著作権の制約により、ある国ではCDNで入手可能ではないこともある。そのようなコンテンツ選択決定は、この例の実施を通じて下され得る。DASHの文脈では、「BaseURL@redirectionUrl」と命名されたオプションの属性が、HTTPを介したそのようなPOSTリクエストに使用されるURLを含み得る。
[0136]他の例では、たとえばBaseURL@selectionAttributeと呼ばれる新しいDASH属性が、1つまたは複数の選択属性を示すために使用され得る。すなわち、クライアントデバイス40は、サーバまたは他のデバイス、たとえばCDN92のうちの1つのデバイスまたは別のデバイスから、この属性についてのデータを受信することができる。この属性の内容は、0またはそれよりも大きい数字のリストであり、これは1つまたは複数の選択基準を指定し得る。さらに、いくつかの数字は一連の引数を有し、BaseURLごとに1つの引数を有することがある。これらの例では、リダイレクションURLは存在する必要がない。その上、selectionAttributeを指定する必要がない。すなわち、デフォルトでは、selectionAttribute行動が必要とされる。この場合、クライアントデバイス40上で実行されているDASHプレーヤは、選択基準が、すべてのあり得るBaseURLに対して等しく重み付けする「重み付けランダム」であるかのように行動する。DASHプレーヤは、すべてのBaseURLの間でランダムかつ均等な選択を行い、そして選択されたBaseURLを使用して、すべての将来のリクエストを行うことができる。
[0137]さらに別の例では、ただ1つの選択基準がselectionAttributeに現れる。この例では、DASHプレーヤは、単純な選択基準を使用して、たとえば、サーバの負荷を分散するランダム選択によって、時刻によって、最小往復遅延によって、最小ホップカウントによって、かつ/またはロケーション基準を使用して、CDN92のうちの適切な1つを決定する。そしてDASHクライアントは、選択されたBaseURLを使用して、すべての将来のリクエストを行う。たとえば、<selectionAttribute=“1(0.2,0.2,0.3,0.3)”>の値により、クライアントデバイスによって実行される負荷分散機構は、すべてのあり得るBaseURLの中からランダムに選択することができる。ただし、最初の2つのBaseURLを選ぶ可能性が20%、最後の2つのBaseURLを選ぶ可能性が30%ある。BaseURLが選択されると、DASHクライアントは将来のリクエストの際に、選択されたBaseURLを再利用し続けることになる。
[0138]さらに別の例では、2つ以上のselectionAttributeが指定され得る。たとえば、<selectionAttribute=“3,4,2(0〜359,359〜1439,0〜1439,1080〜1439),1(0.2,0.2,0.2,0.4)”>などの値があり得る。この例では、追加のselectionAttributeの存在は、DASHプレーヤが最初に基準3を使用し、次いで基準4を使用し、次いで基準2を使用し、次いで所与の重み付け、すなわち0.2、0.2、0.2および0.4に従って基準1とのつながりを断つべきであることを示している。いくつかのBaseURLがすでに除去されている場合、残りの重みは、合計が1.0になるように大きくなり得ることに留意されたい。
[0139]この例について説明するために、4つの潜在的なBaseURL、A、B、C、およびDがあり、これらのBaseURLがそれぞれのCDNに対応すると仮定する。たとえば、AはCDN92Aに対応することができ、BはCDN92Bに対応することができ、CはCDN92Cに対応することができ、DはCDN92Dに対応することができる。第1に、たとえばpingメッセージを使用して、A、B、C、およびDの各々につき往復遅延(RTD)が計算され得る。これは、RTDが次のようになることを示し得る。A− 20ms、B− 20ms、C− 33ms、D− 40ms。次いで、選好度の高いものから順に並べた選択リストは、A、B、C、Dとなり、AおよびBはともに第1位である。したがって、たとえばインターネット制御メッセージプロトコル(ICMP)pingメッセージを使用して、A、B、C、およびDの各々につきホップカウントが測定され得る。すなわち、クライアントデバイス40は、各々につきホップカウントを計算するために、CDN92の各々にICMP pingメッセージをサブミットすることができる。例として、次のホップカウント値が特定されると仮定する。A− 5ホップ、B− 3ホップ、C− 12ホップ、D− 20ホップ。次いで、選好度の高いものから順に並べた選択リストは、BがAよりもホップが少ないと決定されるので、Bがより望ましく、B、A、C、Dとなる。
[0140]この例を続けると、時刻がたとえば3:00pmと決定され得る。BaseURL向けにシグナリングされる時刻値は次のようになる。A− 6pm〜真夜中、B− 真夜中〜6am、C− 6am〜真夜中、D− 終日。この場合、現在時刻が3:00pmであると仮定すると、この例では3:00pmはAおよびBの時刻範囲から外れるので、クライアントデバイスはAとBとを除去し得る。それによって、最終的選択はCまたはD(たとえば、CDN92Cまたは92D)となり得る。最小辞書式選択(minimum lexicographic choice)が行われ得、33ms<40msであるので、Cに対応する
[0141]さらに別の例では、少数のCDNがあり得るが、多数の時刻上の制約、負荷分散重み付け、またはCDNに対する同様の制約があり得る。この例では、N個のBaseURLがある場合、selectionAttributeは数個の制約を含み得るが、各制約はN個よりも多くの引数を有し得る。(N+1)番目の引数はURL#1を指すことがあり、(N+2)番目の引数はURL#2を指すことがある、といった具合である。このようにして、N個よりも多くの引数があるときに、BaseURLは繰り返し得る。この例は、BaseURLの繰り返しを不要にすることによって、記憶スペースを節約することができる。この場合、制約ごとの引数の数が合致するはずである。これは特に、時刻などの制約にとって有用である。
[0142]この例について説明すると、4個のCDN A、B、C、Dがあり、時刻に応じて異なる負荷分散制約があり得る。午前には、CDN92Aおよび92Bが負荷の80%を、均等に分散された形で受け取ることができるが、夕方には、CDN92Cおよび92Dが負荷の70%を、均等に分散された形で受け取ることができる。制約は次のように記述され得る。<selectionAttribute=“2(0〜719,0〜719,0〜719,0〜719,720〜1439,720〜1439,720〜1440,720〜1439)1(0.4,0.4,0.1,0.1,0.1,0.2,0.35,0.35)”>。
[0143]図4は、例示的なマルチメディアコンテンツ100の要素を示す概念図である。マルチメディアコンテンツ100は、マルチメディアコンテンツ64(図1)、またはメモリ62に記憶された別のマルチメディアコンテンツに対応し得る。図4の例では、マルチメディアコンテンツ100は、メディアプレゼンテーション記述(MPD)102と、複数の表現110〜120とを含む。表現110は、オプションのヘッダデータ112とセグメント114A〜114N(セグメント114)とを含み、表現120は、オプションのヘッダデータ122とセグメント124A〜124N(セグメント124)とを含む。文字Nは、便宜上、表現110、120の各々中の最後のムービーフラグメントを指定するために使用する。いくつかの例では、表現110と表現120との間で異なる数のムービーフラグメントが存在し得る。
[0144]MPD102は、表現110〜120とは別のデータ構造を備え得る。MPD102は図1のマニフェストファイル66に対応し得る。同様に、表現110〜120は図1の表現68に対応し得る。概して、MPD102は、コーディング特性およびレンダリング特性、適応セット、MPD102が対応するプロファイル、テキストタイプ情報、カメラアングル情報、レーティング情報、トリックモード情報(たとえば、時間サブシーケンスを含む表現を示す情報)、および/または(たとえば、再生中のメディアコンテンツ中へのターゲット広告挿入のための)リモート期間を取り出すための情報など、表現110〜120の特性を全体的に記述するデータを含み得る。リモート期間は外部期間と呼ばれることもある。以下でさらに詳細に説明する図4〜図7に、様々な要素がMPDおよび/または(表現のセグメントもしくは表現のヘッダデータ内などの)表現の一方または両方中に含まれるマルチメディアコンテンツの様々な例を示す。図4〜図7のMPDのいずれかまたはすべては、実質的に図4のMPD102に対応し得る。
[0145]本開示の技法によれば、図4のMPD102は、たとえば、バイト範囲についてのURLテンプレート、テンプレートが必須であるか、それともオプションであるか、およびCDN選択基準などの情報を指定することができる。本開示の技法によるMPDタイプ仕様の例示的な要素が、以下のようにXML擬似コードで提供される。
Figure 0006316781
[0146]このようにして、MPD102は、マルチメディアコンテンツ100についてのリダイレクションURLを示すデータを含むことができる。図3に関して上記で説明したように、BaseURLがCDN92のうちの1つにリダイレクトされ得る。すなわち、クライアントデバイス40は、リダイレクションサーバデバイス94に対応し得るリダイレクションURLにHTTP POSTをサブミットすることができる。クライアントデバイス40は応答を、BaseURLに基づいて、マルチメディアコンテンツ100の表現110〜120のうちの1つからデータを受信するための新しいURLを示す情報を応答が含むように、リダイレクションサーバデバイス94から受信することができる。具体的には、BaseURLは、CDN92のうちの適切な1つを選択するために使用され得る。
[0147]その上、上記の例示的な擬似コードによれば、MPD102は選択属性を示すデータを含むことができる。上記で説明したように、選択属性は選択基準を表す数字データを含むことができ、これはBaseURLについての引数を伴うことも伴わないこともある。したがって、クライアントデバイス40またはプロキシキャッシュデバイス82(図2)などのプロキシデバイスは、選択属性のデータを使用して、クライアントデバイス40がマルチメディアコンテンツ100についてのデータを取り出す際の元となるCDN92(図3)のうちの適切な1つを選択することができる。
[0148]以下のXML擬似コードは、MPD102で提供され得る、デフォルトセグメントアクセス情報についての要素の例示的なセットを提供する。
Figure 0006316781
[0149]以下のXML擬似コードは、MPD102によって提供され得る、セグメントアクセス情報についての要素の例示的なセットを提供する。
Figure 0006316781
[0150]このようにして、MPD102は、URLテンプレートを表すデータを含むことができ、これは、クライアントデバイス40などのクライアントデバイスが、「Range:」ヘッダによるのではなくURL自体の中でバイト範囲をリクエストするようにHTTP GETリクエストにURLを構成し得る方法を指定することができる。したがって、クライアントデバイス40はMPD102のデータを使用して、「Range:」ヘッダを使用するのではなくURL内にバイト範囲を指定するHTTP GETリクエストを構成することができる。したがって、リクエストはHTTP GETリクエストとして構成されるが、このリクエストにより、サーバデバイス60などのサーバデバイスは、URL自体によって指定されるリクエストされたバイト範囲のみを提供することができる。すなわち、URLのすべてのデータを提供するのではなく、サーバデバイス60は代わりに、URL自体の中でリクエストされたバイト範囲を提供することができる。それにより、サーバデバイス60は、「Range:」ヘッダに続くデータを評価する必要はないが、代わりに、リクエストされたバイト範囲をURL自体から決定することができる。同様に、プロキシキャッシュデバイス82は、HTTP GETリクエストのURLを分析し、URL内のリクエストされたバイト範囲をキャッシュしてクライアントデバイス40に提供する一方で、リクエストされたバイト範囲を同じファイルの先行バイト範囲および/または後続バイト範囲に結び付けるように構成され得る。
[0151]以下のXML擬似コードは、MPD102によって提供され得る、SegmentInfoおよびSegmentInfoDefaultに共通するグルーピング属性についての要素の例示的なセットを提供する。SegmentInfoおよびSegmentInfoDefaultの例には以下がある。
Figure 0006316781
[0152]以下のXML擬似コードは、MPD102によって提供され得る、セグメントURLについての要素の例示的なセットを提供する。
Figure 0006316781
[0153]以下のXML擬似コードは、MPD102によって提供され得る、URLテンプレートについての要素の例示的なセットを提供する。
Figure 0006316781
[0154]このようにして、MPD102は、URLテンプレートを示す情報を含むことができる。すなわち、要素byteRangeTemplateは、リクエストされるバイト範囲を指定するためのURLテンプレートのデータを表す。その上、このようにして、MPD102は、テンプレートの使用が必須であるか、それともオプションであるかを示す情報を含むことができる。すなわち、mustUseRangeURLについてのデータは、クライアントデバイス40が従来型のHTTP部分GETリクエストもしくはテンプレートを使用してバイト範囲をリクエストすることを許容されているのかどうか、またはクライアントデバイス40がテンプレートを使用することを求められているのかどうかを示すことができる。さらに、allowedByteRangesのデータは、リクエストされ得る特定のバイト範囲、またはバイト範囲に対する制約があるかどうかを示すことができる。
[0155]以下のXML擬似コードは、MPD102によって提供され得る、セグメントリストについての要素の例示的なセットを提供する。
Figure 0006316781
[0156]ヘッダデータ112は、存在するとき、セグメント114の特性、たとえば、ランダムアクセスポイントの時間ロケーション、どのセグメント114がランダムアクセスポイントを含むか、セグメント114内のランダムアクセスポイントへのバイトオフセット、セグメント114のユニフォームリソースロケータ(URL)、またはセグメント114の他の態様、を記述し得る。ヘッダデータ122は、存在するとき、セグメント124についての同様の特性を記述し得る。追加または代替として、そのような特性はMPD102内に完全に含まれ得る。
[0157]セグメント114は1つまたは複数のコード化ビデオサンプルを含み、コード化ビデオサンプルの各々はビデオデータのフレームまたはスライスを含み得る。セグメント114のコード化ビデオサンプルの各々は、同様の特性、たとえば、高さ、幅、および帯域幅要件を有し得る。そのような特性はMPD102のデータによって記述され得るが、そのようなデータは図4の例に示していない。MPD102は、本開示において説明するシグナリング情報のいずれかまたはすべてに加えて、3GPP仕様に記載されている特性を含み得る。
[0158]セグメント114、124の各々は、一意のユニフォームリソース識別子(URI)、たとえば、ユニフォームリソースロケータ(URL)に関連し得る。したがって、セグメント114、124の各々は、DASHなどのストリーミングネットワークプロトコルを使用して独立に取出し可能であり得る。このようにして、クライアントデバイス40などの宛先デバイスは、セグメント114または124を取り出すためにHTTP Getリクエストを使用し得る。いくつかの例では、クライアントデバイス40は、セグメント114または124の特定のバイト範囲を取り出すためにHTTP部分GETリクエストを使用し得る。
[0159]上記のように、MPD102は特定のMPDプロファイルに準拠し得る。MPD102は、MPD102および/またはマルチメディアコンテンツ100の多目的インターネットメール拡張(MIME)タイプを示す情報を含み得る。しかしながら、MIMEタイプは、概して、マルチメディアコンテンツを提示するためにどんなコーデックが必要とされるかを示さない。概して、デバイスが、MPD102など、マルチメディアコンテンツのMPDを取り出すことができる場合、そのデバイスは、MPDに対応するマルチメディアコンテンツのデータを再生することができると想定される。ただし、この想定は常に安全であるとは限らない。したがって、いくつかの例では、MPD102は、MPD102が対応するプロファイルを示す情報を含み得る。
[0160]MPDが対応し得るプロファイルの数が比較的小さいことがある。プロファイルは、H.264/AVCがビデオコーディングのためのプロファイルおよびレベルを含む様式と同様に、機能に対処するためのレベルによってサポートされ得る。MPDプロファイルは、上位プロファイルがすべての下位プロファイルのすべての特徴を含み得るという点で、オニオンシェル化(onion-shelled)され得る。登録機関が様々なプロファイルを登録するための登録プロセスがあり得る。いくつかの例では、クライアントデバイス40などのクライアントデバイスは、MPD102によってシグナリングされる表現110〜120の特性など、MPDの他のデータを取り出す前に、MPD102などのMPDのプロファイルを示す情報を取り出すように構成され得る。このようにして、MPD102へのアクセスが与えられる前にMPD102のプロファイルがシグナリングされ得る。
[0161]プロファイル識別子は、プレーンテキストで(たとえば、プレーンネームとして)、または逆引き(reversed)ドメインネームで与えられ得る。プレーンネームは、3GPPまたは別の登録機関など、登録機関によって予約され得る。対応するマルチメディアコンテンツが、プロファイルに準拠することと、プロファイルを実装するリーダー(たとえば、クライアントデバイス)に対し、MPDを読み取り、それが認識したものを解釈し、それが理解しないマテリアルを無視する認可を与えることと、をプロファイルが請求し得るという点で、プロファイルは請求(claim)および認可(permission)と見なされ得る。
[0162]プロファイルは、たとえば、MPD102の特徴、ネットワークの使用、(1つまたは複数の)メディアフォーマット、使用される(1つまたは複数の)コーデック、保護フォーマット、および/またはビットレート、スクリーンサイズなどの定量的測度などの特性を記述し得る。このようにして、MPD102のプロファイルは、MPD102および/またはマルチメディアコンテンツ100のデータを取り出すためにどのコーデックがサポートされる必要があるかを示す情報を提供し得る。プロファイルは「準拠(conformance)ポイント」と表されることもある。MPDが準拠するプロファイルはMPDの「Profiles」属性中に示され得る。したがって、クライアントデバイスは、MPD102の追加のデータを取り出す前に、この「Profiles」属性に関係する情報を含むMPD102の部分を取り出すように構成され得る。代替的に、プロファイルは、MPDのMIMEタイプ中のパラメータとして示され得る。たとえば、プロファイル「X、Y、およびZ」は以下の様式で、たとえばコンテンツ作成デバイス20によってシグナリングされ得る。
video/vnd.mpeg.mod;profiles=“X,Y,Z”
[0163]図5は、図4のセグメント114、124のうちの1つなど、表現のセグメントに対応し得る、例示的なビデオファイル150の要素を示すブロック図である。セグメント114、124の各々は、図5の例に示すデータの構成に実質的に準拠するデータを含み得る。上記で説明したように、ISOベースメディアファイルフォーマットおよびそれの拡張によるビデオファイルは、データを「ボックス」と呼ばれる一連のオブジェクトに記憶する。図5の例では、ビデオファイル150は、ファイルタイプ(FTYP)ボックス152と、ムービー(MOOV)ボックス154と、ムービーフラグメント162(ムービーフラグメントボックスとも呼ばれる(MOOF))と、ムービーフラグメントランダムアクセス(MFRA)ボックス164とを含む。
[0164]ビデオファイル150は全般的に、表現110〜120(図4)のうちの1つに含まれ得る、マルチメディアコンテンツのセグメントの一例を表す。このようにして、ビデオファイル150は、セグメント114のうちの1つ、セグメント124のうちの1つ、または別の表現のセグメントに対応し得る。本開示の技法によれば、クライアントデバイス40などのクライアントデバイスは、バイト範囲を指定するURLを使用して、ムービーフラグメント162のサブセットを取り出すようリクエストすることができる。バイト範囲は、ムービーフラグメント162のサブシーケンスに対応し得る。同様に、プロキシキャッシュデバイス82などのプロキシキャッシュデバイスは、特定のバイト範囲を取り出すよう求めるリクエストに応答して、ビデオファイル150のデータのすべてを取り出すことができる。他の例では、プロキシキャッシュデバイス82は、ビデオファイル150のバイト範囲についてのリクエストのセットがビデオファイル150の全データ量に対応するとの仮定の下で、リクエストのセットを受けて、ビデオファイル150をアセンブルすることができる。
[0165]図5の例において、ビデオファイル150は1つのセグメントインデックス(SIDX)ボックス161を含む。いくつかの例では、ビデオファイル150は追加のSIDXボックスを、たとえばムービーフラグメント162の間に含み得る。概して、SIDXボックス161などのSIDXボックスは、ムービーフラグメント162のうちの1つまたは複数についてのバイト範囲を記述した情報を含む。他の例では、SIDXボックス161および/または他のSIDXボックスがMOOVボックス154内に、MOOVボックス154の後に、MFRAボックス164の前もしくは後に、またはビデオファイル150内の他の場所に提供され得る。
[0166]ファイルタイプ(FTYP)ボックス152は、概して、ビデオファイル150のファイルタイプを記述する。ファイルタイプボックス152は、ビデオファイル150の最良の使用を記述する仕様を識別するデータを含み得る。ファイルタイプボックス152は、MOOVボックス154、ムービーフラグメントボックス162、およびMFRAボックス164の前に配置され得る。
[0167]MOOVボックス154は、図5の例では、ムービーヘッダ(MVHD)ボックス156と、トラック(TRAK)ボックス158と、1つまたは複数のムービー拡張(MVEX)ボックス160とを含む。概して、MVHDボックス156はビデオファイル150の一般的特性を記述し得る。たとえば、MVHDボックス156は、ビデオファイル150が最初に生成されたとき、ビデオファイル150が最後に変更されたときを記述するデータ、ビデオファイル150の時間スケール、ビデオファイル150の再生の持続時間、またはビデオファイル150について一般に記述する他のデータを含み得る。
[0168]TRAKボックス158は、ビデオファイル150のトラックについてのデータを含み得る。TRAKボックス158は、TRAKボックス158に対応するトラックの特性を記述するトラックヘッダ(TKHD)ボックスを含み得る。いくつかの例では、TRAKボックス158はコード化ビデオピクチャを含み得、他の例では、トラックのコード化ビデオピクチャは、TRAKボックス158のデータによって参照され得るムービーフラグメント162中に含まれ得る。
[0169]いくつかの例では、ビデオファイル150は2つ以上のトラックを含み得るが、これはDASHプロトコルが機能するのに必要ではない。したがって、MOOVボックス154は、ビデオファイル150中のトラックの数に等しい数のTRAKボックスを含み得る。TRAKボックス158は、ビデオファイル150の対応するトラックの特性を記述し得る。たとえば、TRAKボックス158は、対応するトラックについての時間および/または空間情報を記述し得る。カプセル化ユニット30(図1)が、ビデオファイル150などのビデオファイル中にパラメータセットトラックを含むとき、MOOVボックス154のTRAKボックス158と同様のTRAKボックスはパラメータセットトラックの特性を記述し得る。カプセル化ユニット30は、パラメータセットトラックを記述するTRAKボックス内のパラメータセットトラック中でシーケンスレベルSEIメッセージの存在をシグナリングし得る。
[0170]MVEXボックス160は、たとえば、もしあれば、MOOVボックス154内に含まれるビデオデータに加えて、ムービーフラグメント162をビデオファイル150が含むことをシグナリングするように、対応するムービーフラグメント162の特性を記述し得る。ビデオデータをストリーミングするコンテキストでは、コード化ビデオピクチャは、MOOVボックス154ではなくムービーフラグメント162中に含まれ得る。したがって、すべてのコード化ビデオサンプルは、MOOVボックス154ではなくムービーフラグメント162中に含まれ得る。
[0171]MOOVボックス154は、ビデオファイル150中のムービーフラグメント162の数に等しい数のMVEXボックス160を含み得る。MVEXボックス160の各々は、ムービーフラグメント162のうちの対応する1つの特性を記述し得る。たとえば、各MVEXボックスは、ムービーフラグメント162のうちの対応する1つについての持続時間を記述するムービー拡張ヘッダボックス(MEHD)ボックスを含み得る。
[0172]上記のように、カプセル化ユニット30は、シーケンスデータセットを、実際のコード化ビデオデータを含まないビデオサンプルに記憶し得る。ビデオサンプルは、概して、特定の時間インスタンスにおけるコード化ピクチャの表現である、アクセスユニットに対応し得る。AVCのコンテキストでは、コード化ピクチャは、アクセスユニットのすべてのピクセルを構築するための情報を含んでいる1つまたは複数のVCL NALユニットと、SEIメッセージなど、他の関連する非VCL NALユニットとを含む。したがって、カプセル化ユニット30は、ムービーフラグメント162のうちの1つ中に、シーケンスレベルSEIメッセージを含み得る、シーケンスデータセットを含み得る。カプセル化ユニット30はさらに、シーケンスデータセットおよび/またはシーケンスレベルSEIメッセージの存在を、ムービーフラグメント162のうちの1つに対応するMVEXボックス160のうちの1つ内のムービーフラグメント162のうちの1つ中に存在するものとしてシグナリングし得る。
[0173]ムービーフラグメント162は1つまたは複数のコード化ビデオピクチャを含み得る。いくつかの例では、ムービーフラグメント162は1つまたは複数のピクチャグループ(GOP)を含み得、ピクチャグループの各々は、いくつかのコード化ビデオピクチャ、たとえば、フレームまたはピクチャを含み得る。さらに、上記で説明したように、ムービーフラグメント162は、いくつかの例では、シーケンスデータセットを含み得る。ムービーフラグメント162の各々は、ムービーフラグメントヘッダボックス(MFHD、図5に図示せず)を含み得る。MFHDボックスは、ムービーフラグメントのシーケンス数など、対応するムービーフラグメントの特性を記述し得る。ムービーフラグメント162はビデオファイル150中のシーケンスナンバの順に含まれ得る。
[0174]MFRAボックス164は、ビデオファイル150のムービーフラグメント162内のランダムアクセスポイントを記述し得る。これは、ビデオファイル150内の特定の時間ロケーションへのシークを実行することなど、トリックモードを実行することを支援し得る。MFRAボックス164は、概してオプションであり、いくつかの例では、ビデオファイル中に含まれる必要がない。同様に、クライアントデバイス40などのクライアントデバイスは、ビデオファイル150のビデオデータを正しく復号し、表示するために、必ずしもMFRAボックス164を参照する必要がない。MFRAボックス164は、ビデオファイル150のトラックの数に等しいか、またはいくつかの例ではビデオファイル150のメディアトラック(たとえば、非ヒントトラック)の数に等しい数のトラックフラグメントランダムアクセス(TFRA)ボックス(図示せず)を含み得る。
[0175]図6は、URLテンプレートデータの指示を提供するための、またクライアントデバイスによってURLテンプレートデータを使用してバイト範囲リクエストを生成するための例示的な方法を示すフローチャートである。図6の方法についてサーバデバイス60およびクライアントデバイス40に関して説明するが、他のデバイスが図6の方法の技法と類似の技法を実装し得ることを理解されたい。たとえば、コンテンツ作成デバイス20、あるいはプロキシキャッシュデバイス82またはルーティングデバイス80などのコンテンツ配信ネットワークの1つまたは複数のネットワークデバイスが、サーバデバイス60による機能の一部または全部を実行し得る。
[0176]図6には示されていないが、いくつかの例では、クライアントデバイス40は最初に、マルチメディアコンテンツのリクエスト先となるCDNを特定することができる。いくつかの例では、クライアントデバイス40が、複数のCDNからCDNを選択することができ、他の例では、リダイレクションサーバデバイス94などのリダイレクションサーバが、CDNを選択し、選択されたCDNを示す情報をクライアントデバイス40に提供することができる。したがって、クライアントデバイス40は、CDNを選択し、またはCDNの指示を受信して、マルチメディアコンテンツのデータのリクエスト先となるCDNを特定することができる。CDNを選択するための1つの例示的なプロセスについて、図9に関して以下でさらに詳細に説明する。
[0177]サーバデバイス60は、適応セットおよびURLテンプレートデータの指示をクライアントデバイス40に与え得る(200)。たとえば、サーバデバイス60は、MPD102(図4)をクライアントデバイス40に与え得る。上記で説明したように、MPD102は、URLテンプレートを表す情報のほか、テンプレートがバイト範囲リクエストにとって必須であるか、それともオプションであるかを表す情報を含み得る。クライアントデバイス40は、たとえばサーバデバイス60から受信されたMPDファイルから、適応セット特性を記述した情報を受信することができる(202)。同様に、クライアントデバイス40は、たとえば受信されたMPDファイルから、URLテンプレートを記述した情報と、テンプレートの使用がバイト範囲をリクエストする上で必須であるか、それともオプションであるかを記述した情報とを受信することができる。
[0178]クライアントデバイス40は、次いで、クライアントデバイス40が、取出し、復号、またはレンダリングを行うことを選択することができないかまたは選択しないであろう適応セットを除去するために、適応セット特性を分析し得る。たとえば、クライアントデバイス40は、不適切な適応セットを決定するために、復号およびレンダリング能力を適応セットの特性と比較し得る。別の例として、クライアントデバイス40は、望ましくない適応セットを除去するために、言語、レーティング、および(たとえば、3次元ビデオ再生用に特定のカメラアングルを有する2つ以上のビューによって与えられるような)奥行きの量についてのユーザ選好を比較し得る。クライアントデバイス40は、次いで、クライアントデバイス40の復号およびレンダリング能力に少なくとも部分的に基づいて、適切な適応セットを選択し得る(204)。
[0179]適応セットを選択した後に、クライアントデバイス40は、特に適応セットの表現を記述するMPD部分についてのデータをリクエストし得る。それに応答して、サーバデバイス60は、選択された適応セットにおいて、個々の表現特性のうち表現ビットレートの指示をクライアントデバイス40に与え得る(206)。たとえば、サーバデバイス60は、適応セット260(図6)のMPD部分のうちの特定の1つについてのデータをクライアントデバイス40に送り得る。他の例では、クライアントデバイス40は、マルチメディアコンテンツについての全MPD(たとえば、図5のMPD202)をすでに受信していることがあるが、特に選択された適応セットに対応するMPDの部分を特に分析し得る。このようにして、いくつかの例において、図6のステップ206は、ステップ202および/またはステップ204より前に行われ得る。
[0180]いずれの場合も、表現のビットレートを含む、選択された適応セットの表現に固有の特性を受信した(208)後に、クライアントデバイス40は、ネットワーク帯域幅の現在利用可能な量を決定することができる(210)。クライアントデバイス40は、次いで、選択された表現が、ネットワーク帯域幅の決定された現在利用可能な量によって対応され得るビットレートを有するように、選択された適応セットから表現を選択し得る(212)。表現のビットレートは、適応セット中の個々の表現のコーディング特性の例を表す。クライアントデバイス40は、次いで、URLテンプレートを使用して、選択された表現のデータをリクエストし得る(214)。
[0181]たとえば、クライアントデバイス40は、選択された表現のセグメントをリクエストするようにHTTP GETリクエストを構成することができ、この場合、HTTP
GETリクエストにおけるURLが、リクエストされるデータのバイト範囲を指定する。代替的に、部分GETリクエストが許容される(すなわち、URLテンプレートの使用がオプションである)と仮定すると、クライアントデバイス40は、選択された表現のセグメントのバイト範囲を指定するHTTP部分GETを構成することができる。いくつかの例では、URLテンプレートデータは、許容できる特定のバイト範囲をさらに指定することができる。そのような場合、クライアントデバイス40は、利用可能なバイト範囲のうちの1つを選択することができる。いずれの場合も、クライアントデバイス40はリクエストをサーバデバイス60にサブミットし得る。上記のように、他の例では、クライアントデバイス40は、BaseURLへのリクエストをサブミットすることができ、それにより、リクエストが、サーバデバイスの代わりにリクエストをサービスするプロキシデバイスまたはキャッシュデバイスにより受信され得る。
[0182]図6の例では、サーバデバイス60は、リクエストを受信し、それに応答して、リクエストされたデータをクライアントデバイス40に送ることができる(216)。たとえば、リクエスト処理ユニット70は、受信されたリクエストのデータから、クライアントデバイス40のネットワークアドレス、たとえば、受信されたリクエストのソースインターネットプロトコル(IP)アドレスおよびソースポート、を決定し得る。リクエスト処理ユニット70は、リクエストされたデータを含むネットワークパケットを形成し、当該リクエストされたデータを、クライアントデバイス40へ、たとえば、クライアントデバイス40の決定されたIPアドレスに宛てに送り得る。
[0183]リクエストされたデータを受信した後、クライアントデバイス40は、受信されたデータを復号し、表示することを開始し得る(218)。リクエストされたデータを受信している間、クライアントデバイス40は、現在利用可能なネットワーク帯域幅を分析することと、ネットワーク帯域幅の現在利用可能な量によって収容され得るビットレートを有する表現からのリクエストをサブミットすることとを続け得る(210〜214)。ネットワーク帯域幅の量が変化した場合、クライアントデバイス40は、選択された適応セット中の異なる表現に適応的に切り替わり得る。たとえば、クライアントデバイス40は、適応セット中の前の表現からリクエストされた最後のセグメントの時間ロケーションに対応する新しい表現中のセグメントを決定し、次いで、新しい表現中のその決定されたセグメント(またはそれの部分)をリクエストし得る。
[0184]このようにして、図6は、ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定することと、ソースデバイスの要求に従ってファイルとバイト範囲とをユニフォームリソースロケータ(URL)のファイルパス部分に指定するURLを形成することと、ソースデバイスに対して形成されたURLを指定するGETリクエストを出すこととを含む、マルチメディアデータを取り出す方法の一例を表す。
[0185]図6はまた、マルチメディアコンテンツのマニフェストファイルを提供することと、マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、URLテンプレートおよびバイト範囲テンプレートは、URL内にバイト範囲リクエストを含むようにURLを形成するためのテンプレートを提供し、URLテンプレートおよびバイト範囲テンプレートに従って構成されたURLを含むリクエストを受信することと、リクエストのURLはマルメディアコンテンツの表現のバイト範囲を指定し、リクエストに応答して、リクエストのバイト範囲に対応する表現のマルチメディアデータを出力することと、を含む、ビデオデータについての情報を送る方法の一例を表す。
[0186]図7は、URLにバイト範囲を指定するGETリクエストを生成するための例示的な方法を示すフローチャートである。図7の方法は、クライアントデバイス40などのクライアントデバイスによって実行され得る。破線によるボックスは、オプションのステップを表す。プロキシキャッシュデバイス82などの中間ネットワークデバイスによって、同様の方法が実行され得る。以下で説明するように、中間ネットワークデバイスによって実行されるときに、本方法に対するいくつかの若干の変更が行われ得る。例として、図7の方法について、クライアントデバイス40に関して説明する。いくつかの例では、ステップ230〜234は、図6のステップ202および204と実質的に同時に実行されることがあり、ステップ236〜244は、図6のステップ214に対応し得る。図6および図7のステップは、必ずしも図示される順番で実行される必要はなく、追加のステップが実行されることがあり、またはいくつかのステップが省略されること、もしくは連続的にではなく並行して実行されることがある。
[0187]最初に、クライアントデバイス40は、マルチメディアコンテンツについてのMPDファイルに対応する情報を受信し得る(230)。MPDファイルは、HTTP GETリクエストのURLにバイト範囲を埋め込むためのURLテンプレートを指定する情報を含み得る。たとえば、URLテンプレートは、URLテンプレートとバイト範囲テンプレートの両方について、次のように指定することができる。
Figure 0006316781
[0188]MPDファイルは、URLテンプレートが必須であるか、それともオプションであるかを示す情報をさらに含むことができる。したがって、クライアントデバイス40は、いくつかの例では、MPDファイルのデータの分析に基づいて、URLテンプレートが必須であるか、それともオプションであるかを決定することができる(232)。同様に、いくつかの例では、MPDファイルは、リクエストされ得る許容バイト範囲の指示を提供することができ、またはバイト範囲が制約されないことを示すことができる。したがって、いくつかの例では、クライアントデバイス40はMPDファイルを使用して、許容バイト範囲を決定することができる(234)。
[0189]次いでクライアントデバイス40は、リクエストされるセグメントのバイト範囲を決定することができる(236)。たとえば、クライアントデバイス40が、選択されたマルチメディアコンテンツのデータのストリーミングを始めたばかりである場合、クライアントデバイス40は、セグメントの順序の第1のバイト範囲をリクエストすることを決定し得る。別の例として、クライアントデバイス40が前に、セグメントのN番目のバイト範囲をリクエストしていた場合、クライアントデバイス40は、セグメントのN+1番目のバイト範囲をリクエストすることを決定し得る。クライアントデバイス40はまた、選択された表現についてのベースURLとセグメント識別子とを特定し得る(238)。たとえば、上記で説明したように、ベースURLは、「http://www.mp4player.com/TRON/」に対応し、セグメント識別子は、数字、アルファベット、英数字、または現在のセグメントを表す他の値を備え得る。セグメント識別子は、セグメントと、セグメントが内包される選択された表現とを識別することができる。たとえば、セグメント識別子は、選択された表現の帯域幅および/またはインデックスを指定する値のほか、選択された表現のセグメントを指定する値を含む。
[0190]このようにして、ベースURLおよびセグメント識別子はともに、次のバイト範囲を取り出すためにクライアントデバイス40が最終的にHTTP GETリクエストに含めることになる、URLの第1の部分を形成し得る。クライアントデバイス40は、セグメントIDと、リクエストされるバイト範囲の識別子とをベースURLに付加して(240)、HTTP GETリクエストに含まれるURLを形成し得る。たとえば、セグメントが「segment.1000.27」を使用して識別されると仮定し、リクエストされるバイト範囲がバイト435291〜560829であると仮定すると、クライアントデバイス40は、「segment.1000.27/435291/560829」をベースURLに付加し、この例では次のURL、すなわち、「http://www.mp4player.com/TRON/segment.1000.27/435291/560829」を形成する。このURLは、URLのファイルパス部分に対応する。URLの別の部分は、プロトコル、たとえば「HTTP/1.1」、または対応するファイルパスにおいてファイルを取り出すための他のデータを指定することができる。
[0191]次いでクライアントデバイス40は、構成されたURLを含むHTTP GETリクエストを形成し得る(242)。たとえば、クライアントデバイス40は、コマンド「GET」をURLの前に付加し、「HTTP/1.1」をURLの後に付加すること、およびマルチメディアコンテンツのホスト、たとえば「www.mp4player.com」を指定することによって、リクエストがGETリクエストであることを指定する。いくつかの例では、クライアントデバイス40は、たとえば本開示の拡張ヘッダ「X−Dash−Byte−Range−URL」を使用することによって、バイト範囲がURLに含まれることを示す指示を含むようにリクエストを形成する。このようにして、バイト範囲を指定するURLを有する構成されたGETリクエストは、以下に対応し得る。
Figure 0006316781
[0192]次いでクライアントデバイス40は、形成されたHTTP GETリクエストをサーバ、たとえばwww.mp4player.comに送り得る(244)。上述のように、中間ネットワークデバイスは、図7の方法と同様の方法を実行して、ファイルパス部分にバイト範囲を指定するURLを含むHTTP GETリクエストを形成し得る。概して、中間ネットワークデバイスは、サーバデバイスからマルチメディアコンテンツについてのURLテンプレートを特定するためのMPDファイルを受信し、クライアントデバイスから従来型のHTTP部分GETリクエストを受信し得る。次いで中間ネットワークデバイスは(バイト範囲テンプレートを含む)URLテンプレートを使用して、部分GETリクエストによって示されるバイト範囲を指定するURLをHTTP GETリクエストが含むように、部分GETリクエストからHTTP GETリクエストを形成し得る。
[0193]このようにして、図7の方法は、マルチメディアデータを取り出すための方法の一例を表す。図7の例示的な方法は、ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定することと、ソースデバイスの要求に従ってファイルとバイト範囲とをユニフォームリソースロケータ(URL)のファイルパス部分に指定するURLを形成することと、ソースデバイスに対して、形成されたURLを指定するGETリクエストを出すことと、を含む。
[0194]図8は、中間ネットワークデバイスを介してクライアントデバイスとサーバデバイスとの間でHTTP GETリクエストが交換される例示的な方法を示すフローチャートである。この例示的な方法は、クライアントデバイス40、プロキシキャッシュデバイス82、およびサーバデバイス60に関して説明されるが、他のデバイスが同様の方法を実行するように構成され得ることを理解されたい。
[0195]図8の例では、クライアントデバイス40が、マルチメディアコンテンツの表現を選択する(250)。次いでクライアントデバイス40は、HTTP GETリクエストがリクエストのURLにバイト範囲を指定するように、URLテンプレートに従ってHTTP GETリクエストを形成する(252)。URLテンプレートは、URLのバイト範囲テンプレートについてのデータを含み得る。いくつかの例では、クライアントデバイス40は、たとえば本開示の拡張ヘッダ「X−Dash−Byte−Range−URL」を使用することによって、バイト範囲がURLに含まれることを示す指示を含むようにリクエストを形成し得る。リクエストを形成した後に、クライアントデバイス40は、HTTP GETリクエストをサーバデバイス60にサブミットし得る(254)。
[0196]図2に示すように、この例では、クライアントデバイス40とサーバデバイス60との間のネットワークルート上にプロキシキャッシュデバイス82がある。したがって、プロキシキャッシュデバイス82は、クライアントデバイス40によって出されたリクエストを受信し得る(256)。プロキシキャッシュデバイス82は、リクエストのURLを分析することによって、リクエストがバイト範囲についてのリクエストであると決定し、サーバデバイス60にリクエストを転送し得る(258)。代替的に、プロキシキャッシュデバイス82は、拡張ヘッダ「X−Dash−Byte−Range−URL」を検出すると、リクエストがバイト範囲についてのリクエストであると決定し得る。サーバデバイス60は最終的にリクエストを受信し(260)、リクエストされたバイト範囲を送り得る(262)。すなわち、サーバデバイス60は、クライアントデバイス40に対し、マルチメディアコンテンツの表現のそれぞれのセグメントから、リクエストされたバイト範囲に対応するデータを提供する。
[0197]ここでも、クライアントデバイス40とサーバデバイス60との間のルート上にプロキシキャッシュデバイス82が位置することから、プロキシキャッシュデバイス82は、リクエストされたバイト範囲のデータを受信し得る(264)。次いでプロキシキャッシュデバイス82は受信されたデータを、対応するマルチメディアコンテンツの任意の以前キャッシュされたデータに追加し得る(266)。データがまだ受信されていなかった場合、プロキシキャッシュデバイス82は、マルチメディアコンテンツについての新しい局所的にキャッシュされたデータセットを形成し得る。プロキシキャッシュデバイス82はまた、マルチメディアコンテンツについての後に受信されたデータを、マルチメディアコンテンツについての現在キャッシュされたデータと結び付けることができる。プロキシキャッシュデバイス82はまた、クライアントデバイス40に対しバイト範囲の受信されたデータを送り得る(268)。そして、クライアントデバイス40は、受信されたデータをバッファリングし、復号し、表示し得る(270)。
[0198]図7に関して述べたように、いくつかの例では、中間ネットワークデバイスは、部分GETリクエストを、バイト範囲を指定するURLを含むHTTP GETリクエストに変換するように構成され得る。そうするために、クライアントデバイス40は、ステップ252のHTTP GETリクエストの代わりに部分GETリクエストを作成する。次いでプロキシキャッシュデバイス82は、たとえばURL Templateおよびバイト範囲テンプレートに従って、ステップ256とステップ258との間で、部分GETリクエストを変換し得る。代替的に、プロキシキャッシュデバイス82は、本開示の技法に従って、検出された「Range:」ヘッダを新しい拡張ヘッダ「X−Dash−ByteRange−URL」に変換し、部分GETリクエストの当初指定されたバイト範囲がこれに続き得る。
[0200]図9は、マルチメディアコンテンツのデータの取出し元となるCDNを特定するための例示的な方法を示すフローチャートである。図9は、1つの例示的な方法を表すにすぎない。上述のように、たとえば、リダイレクションサーバデバイスを使用せずにCDNを選択するための他の方法も可能である。たとえば、クライアントデバイス40は、リダイレクションサーバデバイスの代わりに選択基準を受信し評価するように構成され得る。例として、図9の方法について、クライアントデバイス40およびリダイレクションサーバデバイス94に関して説明する。
[0201]この例では、クライアントデバイス40がすでにMPDファイルを受信していると仮定すると、クライアントデバイス40は、POSTメッセージをリダイレクションサーバデバイス94に送る(300)。マルチメディアコンテンツについてのMPDファイルは、リダイレクションURLにリダイレクションサーバデバイス94のアドレスを指定し得る。したがって、クライアントデバイス40は、POSTメッセージをリダイレクションURLに送って、POSTメッセージを最終的にリダイレクションサーバデバイス94に到達させることができる。
[0202]リダイレクションサーバデバイス94は、ポストメッセージを受信し得る(302)。応答して、リダイレクションサーバデバイス94は、CDNを選択するための選択基準を評価すし得る(304)。選択基準は、重み付けランダム基準、時刻、クライアントデバイス40とCDNとの間の往復遅延、クライアントデバイス40とCDNとの間のホップカウント、クライアントデバイス40およびCDNのロケーション、または他の基準のいずれかまたはすべてを含み得る。選択基準を評価することによって、リダイレクションサーバデバイス94は、選択基準からCDNを決定し得る(306)。その上、リダイレクションサーバデバイス94は、CDNの各々におけるマルチメディアコンテンツについてのベースURLを表すデータで構成され得る。したがって、リダイレクションサーバデバイス94は、決定されたCDNについてのベースULRを決定し得る(308)。
[0203]次いでリダイレクションサーバデバイス94は、決定されたベースURLをクライアントデバイス40に送ることができる(310)。したがって、クライアントデバイス40は、受信されたベースURLを指定し得る、特定のバイト範囲を指定するHTTP
GETリクエストを形成することができる(312)。さらに、クライアントデバイス40は、新しいベースURL(314)へのHTTP GETリクエストを送り、決定されたCDNにHTTP GETリクエストを送る。すなわち、クライアントデバイス40は、ベースURLに対してドメインネームサービス(DNS)探索を実行して、GETリクエストを出す際の宛先となるCDNのデバイスのIPアドレスを決定し、次いで、決定されたIPアドレスにGETリクエストを送り得る。その後、CDNは、選択されたバイト範囲をもつGETリクエストに応答し、クライアントデバイス40は、一連のバイト範囲リクエストを同じCDNにサブミットし続けることができる。
[0204]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0205]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
[0206]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指す。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
[0207]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0208]様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
マルチメディアデータを取り出す方法であって、
ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定することと、
前記ソースデバイスの要求に従って前記ファイルと前記バイト範囲とを、テンプレートに従ってユニフォームリソースロケータ(URL)のファイルパス部分に指定する前記URLを形成することと、
前記ソースデバイスに対して前記形成されたURLを指定するGETリクエストを出すことと、
を備える方法。
[C2]
前記マルチメディアコンテンツのマニフェストファイルを受信することをさらに備え、
前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定することは、前記複数のバイト範囲から前記表現の前記バイト範囲を選択することを備える、C1に記載の方法。
[C3]
セグメントインデックスデータ構造を備える前記表現のデータを受信することをさらに備え、前記セグメントインデックスデータ構造は、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定することは、前記複数のバイト範囲から前記表現の前記バイト範囲を選択することを備える、C1に記載の方法。
[C4]
前記GETリクエストは「Range:」ヘッダを含まない、C1に記載の方法。
[C5]
前記GETリクエストの前記URLに前記バイト範囲のロケーションを示す拡張ヘッダを含めるように前記GETリクエストを形成することをさらに備える、C1に記載の方法。
[C6]
複数のコンテンツ配信ネットワーク(CDN)のうちの1つを選択するための1つまたは複数の選択基準を受信することと、
前記選択基準に基づいて前記複数のCDNから1つのCDNを選択することと、
をさらに備え、
前記GETリクエストを出すことは、前記選択されたCDNに対して前記GETリクエストを出すことを備え、
前記テンプレートに従って前記URLを形成することは、前記選択されたCDNに固有のバイト範囲テンプレートに従って前記URLを形成することを備える、C1に記載の方法。
[C7]
前記データの取出し元となる複数のコンテンツ配信ネットワーク(CDN)のうちの1つを決定するために、リダイレクションURLにPOSTメッセージをサブミットすることと、
前記POSTメッセージに応答して、前記複数のCDNのうちの1つについてのベースURLの指示を受信することと、
をさらに備え、
前記URLを形成することは、前記複数のCDNのうちの前記1つについての前記受信されたベースURLを指定するように前記URLを形成することを備え、
前記テンプレートに従って前記URLを形成することは、前記選択されたCDNに固有のバイト範囲テンプレートに従って前記URLを形成することを備え、
前記GETリクエストを出すことは、前記複数のCDNのうちの前記1つに対して前記GETリクエストを出すことを備える、C1に記載の方法。
[C8]
前記POSTメッセージをサブミットすることは、ジオロケーション情報、ホップカウント、およびローカル時刻のうちの1つまたは複数を含むローカル情報と、BaseURL、および選択基準のうちの1つまたは複数を示す1つまたは複数のPOSTメッセージを前記リダイレクションURLにサブミットすることを備える、C7に記載の方法。
[C9]
前記ソースデバイスから前記テンプレートを示す情報を受信することをさらに備える、C1に記載の方法。
[C10]
決定することは、クライアントデバイスによって決定することを備え、
形成することは、前記クライアントデバイスによって形成することを備え、
出すことは、前記クライアントデバイスによって出すことを備える、C1に記載の方法。
[C11]
マルチメディアデータについての情報を受信するためのデバイスであって、
ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定することと、前記ソースデバイスの要求に従って前記ファイルと前記バイト範囲とを、テンプレートに従ってユニフォームリソースロケータ(URL)のファイルパス部分に指定する前記URLを形成することと、前記ソースデバイスに対して前記形成されたURLを指定するGETリクエストを出すことと、を行うように構成された1つまたは複数のプロセッサを備えるデバイス。
[C12]
前記1つまたは複数のプロセッサは、前記マルチメディアコンテンツのマニフェストファイルを受信するようにさらに構成され、前記マニフェストファイルは、前記表現にリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定するために、前記1つまたは複数のプロセッサは、前記複数のバイト範囲から前記表現の前記バイト範囲を選択するように構成される、C11に記載のデバイス。
[C13]
前記1つまたは複数のプロセッサは、セグメントインデックスデータ構造を備える前記表現のデータを受信するようにさらに構成され、前記セグメントインデックスデータ構造は、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定するために、前記1つまたは複数のプロセッサは、前記複数のバイト範囲から前記表現の前記バイト範囲を選択するように構成される、C11に記載のデバイス。
[C14]
前記GETリクエストは「Range:」ヘッダを含まない、C11に記載のデバイス。
[C15]
前記1つまたは複数のプロセッサは、前記GETリクエストの前記URLに前記バイト範囲のロケーションを示す拡張ヘッダを含めるように前記GETリクエストを形成するようにさらに構成される、C11に記載のデバイス。
[C16]
前記1つまたは複数のプロセッサは、複数のコンテンツ配信ネットワーク(CDN)のうちの1つを選択するための1つまたは複数の選択基準を受信することと、前記選択基準に基づいて前記複数のCDNから1つのCDNを選択することと、前記選択されたCDNに対して前記GETリクエストを出すこととを行うようにさらに構成され、前記テンプレートは、前記選択されたCDNに固有のバイト範囲テンプレートを備える、C11に記載のデバイス。
[C17]
前記デバイスは、
集積回路、
マイクロプロセッサ、および
前記1つまたは複数のプロセッサを含むワイヤレス通信デバイスのうちの少なくとも1つを備える、C11に記載のデバイス。
[C18]
マルチメディアデータを取り出すためのデバイスであって、
ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定する手段と、
前記ソースデバイスの要求に従って前記ファイルと前記バイト範囲とを、テンプレートに従ってユニフォームリソースロケータ(URL)のファイルパス部分に指定する前記URLを形成する手段と、
前記ソースデバイスに対して前記形成されたURLを指定するGETリクエストを出す手段と、
を備えるデバイス。
[C19]
前記マルチメディアコンテンツのマニフェストファイルを受信する手段をさらに備え、
前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定する前記手段は、前記複数のバイト範囲から前記表現の前記バイト範囲を選択する手段を備える、C18に記載のデバイス。
[C20]
セグメントインデックスデータ構造を備える前記表現のデータを受信する手段をさらに備え、前記セグメントインデックスデータ構造は、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定する前記手段は、前記複数のバイト範囲から前記表現の前記バイト範囲を選択する手段を備える、C18に記載のデバイス。
[C21]
前記GETリクエストは「Range:」ヘッダを含まない、C18に記載のデバイス。
[C22]
前記GETリクエストの前記URLに前記バイト範囲のロケーションを示す拡張ヘッダを含めるように前記GETリクエストを形成する手段をさらに備える、C18に記載のデバイス。
[C23]
複数のコンテンツ配信ネットワーク(CDN)のうちの1つを選択するための1つまたは複数の選択基準を受信する手段と、
前記選択基準に基づいて前記複数のCDNから1つのCDNを選択する手段と、をさらに備え、
前記GETリクエストを出す前記手段は、前記選択されたCDNに対して前記GETリクエストを出す手段を備え、
前記テンプレートに従って前記URLを形成する前記手段は、前記選択されたCDNに固有のバイト範囲テンプレートに従って前記URLを形成する手段を備える、C18に記載のデバイス。
[C24]
実行されたときに、マルチメディアデータを取り出すためのデバイスの1つまたは複数のプロセッサに、
ソースデバイスに対してリクエストするマルチメディアコンテンツの表現のファイルのバイト範囲を決定させ、
前記ソースデバイスの要求に従って前記ファイルと前記バイト範囲とを、テンプレートに従ってユニフォームリソースロケータ(URL)のファイルパス部分に指定する前記URLを形成させ、
前記ソースデバイスに対して前記形成されたURLを指定するGETリクエストを出させる命令を記憶したコンピュータ可読媒体を備えるコンピュータプログラム製品。
[C25]
前記プロセッサに、前記マルチメディアコンテンツのマニフェストファイルを受信させる命令をさらに備え、前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、
前記プロセッサに、前記バイト範囲を決定させる前記命令は、前記プロセッサに、前記複数のバイト範囲から前記表現の前記バイト範囲を選択させる命令を備える、C24に記載のコンピュータプログラム製品。
[C26]
前記プロセッサに、セグメントインデックスデータ構造を備える前記表現のデータを受信させる命令をさらに備え、前記セグメントインデックスデータ構造は、前記表現にリクエストされ得る複数のバイト範囲を指定し、
前記プロセッサに、前記バイト範囲を決定させる前記命令は、前記プロセッサに、前記複数のバイト範囲から前記表現の前記バイト範囲を選択させる命令を備える、C24に記載のコンピュータプログラム製品。
[C27]
前記GETリクエストは「Range:」ヘッダを含まない、C24に記載のコンピュータプログラム製品。
[C28]
前記プロセッサに、前記GETリクエストの前記URLに前記バイト範囲のロケーションを示す拡張ヘッダを含めるように前記GETリクエストを形成させる命令をさらに備える、C24に記載のコンピュータプログラム製品。
[C29]
前記プロセッサに、
複数のコンテンツ配信ネットワーク(CDN)のうちの1つを選択するための1つまたは複数の選択基準を受信させ、
前記選択基準に基づいて前記複数のCDNから1つのCDNを選択させる命令をさらに備え、
前記プロセッサに、前記GETリクエストを出させる前記命令は、前記プロセッサに、前記選択されたCDNに対して前記GETリクエストを出させる命令を備え、
前記プロセッサに、前記テンプレートに従って前記URLを形成させる前記命令は、前記プロセッサに、前記選択されたCDNに固有のバイト範囲テンプレートに従って前記URLを形成させる命令を備える、C24に記載のコンピュータプログラム製品。
[C30]
マルチメディアデータについての情報を送る方法であって、
マルチメディアコンテンツのマニフェストファイルを提供することと、前記マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、前記URLテンプレートおよび前記バイト範囲テンプレートは、URL内にバイト範囲リクエストを含めるように前記URLを形成するためのテンプレートを提供し、
前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成されたURLを含むリクエストを受信することと、前記リクエストの前記URLは前記マルメディアコンテンツの表現のバイト範囲を指定し、
前記リクエストに応答して、前記リクエストの前記バイト範囲に対応する前記表現のマルチメディアデータを出力することと、
を備える方法。
[C31]
前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定する情報をさらに備え、前記リクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、C30に記載の方法。
[C32]
前記表現に対しリクエストされ得る複数のバイト範囲を指定するセグメントインデックスデータ構造を提供することをさらに備え、前記リクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、C30に記載の方法。
[C33]
前記リクエスト内で拡張ヘッダを受信することをさらに備え、前記拡張ヘッダは、前記GETリクエストの前記URL内の前記バイト範囲のロケーションを示す、C30に記載の方法。
[C34]
提供することは、サーバデバイスによって提供することを備え、受信することは、前記サーバデバイスによって受信することを備え、出力することは、前記サーバデバイスによって出力することを備える、C30に記載の方法。
[C35]
提供することは、プロキシキャッシュデバイスによって提供することを備え、受信することは、前記プロキシキャッシュデバイスによって受信することを備え、出力することは、前記プロキシキャッシュデバイスによって出力することを備える、C30に記載の方法。
[C36]
前記リクエストは、前記マルチメディアコンテンツの前記表現の前記バイト範囲についての第1のリクエストを備え、前記方法は、
サーバデバイスに対して前記表現の前記バイト範囲をリクエストすることと、
前記サーバデバイスから受信された前記バイト範囲についてのデータをキャッシュすることと、
前記表現の前記バイト範囲についての第2の異なるリクエストを受信することと、
前記第2のリクエストに応答して、前記表現の前記バイト範囲についての前記キャッシュされたデータを出力することと、
をさらに備える、C30に記載の方法。
[C37]
前記リクエストは第1のリクエストを備え、前記バイト範囲は第1のバイト範囲を備え、前記方法は、
サーバデバイスに対して前記表現の前記第1のバイト範囲をリクエストすることと、
前記サーバデバイスから受信された前記第1のバイト範囲についてのデータをキャッシュすることと、
前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成された第2のURLを含む第2のリクエストを受信することと、前記第2のリクエストの前記第2のURLが前記マルチメディアコンテンツの前記表現の第2のバイト範囲を指定し、前記第2のバイト範囲は前記第1のバイト範囲の後に続き、
前記サーバデバイスに対して前記表現の前記第2のバイト範囲をリクエストすることと、
前記第1のバイト範囲についての前記キャッシュされたデータと、前記サーバデバイスから受信された前記第2のバイト範囲についてのデータとを使用して、前記表現のローカルコピーをアセンブルすることと、
をさらに備える、C30に記載の方法。
[C38]
前記マニフェストファイルは、前記バイト範囲テンプレートがすべてのコンテンツ配信ネットワークにグローバルに適用されることを示す、C30に記載の方法。
[C39]
前記バイト範囲テンプレートは、複数のバイト範囲テンプレートのうちの1つを備え、前記マニフェストファイルは、前記複数のバイト範囲テンプレートのそれぞれが、複数のコンテンツ配信ネットワークのそれぞれの1つの適用されることを示す、C30に記載の方法。
[C40]
マルチメディアデータについての情報を送るためのデバイスであって、
マルチメディアコンテンツのマニフェストファイルを提供することと、前記マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、前記URLテンプレートおよび前記バイト範囲テンプレートは、URL内にバイト範囲リクエストを含めるように前記URLを形成するためのテンプレートを提供し、
前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成されたURLを含むリクエストを受信することと、前記リクエストの前記URLは前記マルメディアコンテンツの表現のバイト範囲を指定し、
前記リクエストに応答して、前記リクエストの前記バイト範囲に対応する前記表現のマルチメディアデータを出力することと、
を行うように構成された1つまたは複数のプロセッサを備えるデバイス。
[C41]
前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定する情報をさらに備え、前記リクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、C40に記載のデバイス。
[C42]
前記1つまたは複数のプロセッサは、前記表現に対しリクエストされ得る複数のバイト範囲を指定するセグメントインデックスデータ構造を提供するように構成され、前記リクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、C40に記載のデバイス。
[C43]
前記1つまたは複数のプロセッサは、前記リクエスト内で拡張ヘッダを受信するように構成され、前記拡張ヘッダは、前記GETリクエストの前記URL内の前記バイト範囲のロケーションを示す、C40に記載のデバイス。
[C44]
前記デバイスは、サーバデバイスおよびプロキシキャッシュデバイスのうちの少なくとも1つを備える、C40に記載のデバイス。
[C45]
前記リクエストは、前記マルチメディアコンテンツの前記表現の前記バイト範囲についての第1のリクエストを備え、前記1つまたは複数のプロセッサは、
サーバデバイスに対して前記表現の前記バイト範囲をリクエストすることと、
前記サーバデバイスから受信された前記バイト範囲についてのデータをキャッシュすることと、
前記表現の前記バイト範囲についての第2の異なるリクエストを受信することと、
前記第2のリクエストに応答して、前記表現の前記バイト範囲についての前記キャッシュされたデータを出力することと、
を行うようにさらに構成される、C40に記載のデバイス。
[C46]
前記デバイスは、
集積回路、
マイクロプロセッサ、および
前記1つまたは複数のプロセッサを含むワイヤレス通信デバイスのうちの少なくとも1つを備える、C40に記載のデバイス。
[C47]
マルチメディアデータについての情報を送るためのデバイスであって、
マルチメディアコンテンツのマニフェストファイルを提供する手段と、前記マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、前記URLテンプレートおよび前記バイト範囲テンプレートは、URL内にバイト範囲リクエストを含めるように前記URLを形成するためのテンプレートを提供し、
前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成されたURLを含むリクエストを受信する手段と、前記リクエストの前記URLは前記マルメディアコンテンツの表現のバイト範囲を指定し、
前記リクエストに応答して、前記リクエストの前記バイト範囲に対応する前記表現のマルチメディアデータを出力する手段と、
を備えるデバイス。
[C48]
前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定する情報をさらに備え、前記リクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、C47に記載のデバイス。
[C49]
前記表現にリクエストされ得る複数のバイト範囲を指定するセグメントインデックスデータ構造を提供する手段をさらに備え、前記リクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、C47に記載のデバイス。
[C50]
前記リクエスト内で拡張ヘッダを受信する手段をさらに備え、前記拡張ヘッダは、前記GETリクエストの前記URL内の前記バイト範囲のロケーションを示す、C47に記載のデバイス。
[C51]
前記リクエストは、前記マルチメディアコンテンツの前記表現の前記バイト範囲についての第1のリクエストを備え、前記デバイスは、
サーバデバイスに対して前記表現の前記バイト範囲をリクエストする手段と、
前記サーバデバイスから受信された前記バイト範囲についてのデータをキャッシュする手段と、
前記表現の前記バイト範囲についての第2の異なるリクエストを受信する手段と、
前記第2のリクエストに応答して、前記表現の前記バイト範囲についての前記キャッシュされたデータを出力する手段と、
をさらに備える、C47に記載のデバイス。
[C52]
実行されたときに、マルチメディアデータを提供するためのデバイスの1つまたは複数のプロセッサに、
マルチメディアコンテンツのマニフェストファイルを提供することと、前記マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、前記URLテンプレートおよび前記バイト範囲テンプレートは、URL内にバイト範囲リクエストを含めるように前記URLを形成するためのテンプレートを提供し、
前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成されたURLを含むリクエストを受信することと、前記リクエストの前記URLは前記マルメディアコンテンツの表現のバイト範囲を指定し、
前記リクエストに応答して、前記リクエストの前記バイト範囲に対応する前記表現のマルチメディアデータを出力することと、
を行わせる命令を記憶したコンピュータ可読記憶媒体を備えるコンピュータプログラム製品。
[C53]
前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定する情報をさらに備え、前記リクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、C52に記載のコンピュータプログラム製品。
[C54]
前記プロセッサに、前記表現に対しリクエストされ得る複数のバイト範囲を指定するセグメントインデックスデータ構造を提供させる命令をさらに備え、前記リクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、C52に記載のコンピュータプログラム製品。
[C55]
前記プロセッサに、前記リクエスト内で拡張ヘッダを受信させる命令をさらに備え、前記拡張ヘッダは、前記GETリクエストの前記URL内の前記バイト範囲のロケーションを示す、C52に記載のコンピュータプログラム製品。
[C56]
前記リクエストは、前記マルチメディアコンテンツの前記表現の前記バイト範囲についての第1のリクエストを備え、前記コンピュータプログラム製品は、前記プロセッサに、
サーバデバイスに対して前記表現の前記バイト範囲をリクエストすることと、
前記サーバデバイスから受信された前記バイト範囲についてのデータをキャッシュすることと、
前記表現の前記バイト範囲についての第2の異なるリクエストを受信することと、
前記第2のリクエストに応答して、前記表現の前記バイト範囲についての前記キャッシュされたデータを出力することと、
を行わせる命令をさらに備える、C52に記載のコンピュータプログラム製品。

Claims (51)

  1. マルチメディアデータを取り出す方法であって、前記方法はクライアントデバイスが実行し、
    マルチメディアコンテンツのマニフェストファイルを受信することと、前記マニフェストファイルは、前記マルチメディアコンテンツの特性の異なる複数の表現についての記述を含み、
    前記複数の表現から、前記クライアントデバイスのコーディングおよびレンダリング能力と、ネットワーク帯域幅の現在利用可能な量とによって満たされ得る特性を有する表現を選択することと、
    ソースデバイスに対してリクエストする前記マルチメディアコンテンツの前記選択された表現のファイルのバイト範囲を決定することと、
    前記ソースデバイスの要求に従って前記ファイルと前記バイト範囲とを、テンプレートに従ってユニフォームリソースロケータ(URL)のファイルパス部分に指定する前記URLを形成することと、
    前記ソースデバイスに対して前記形成されたURLを指定するGETリクエストを出すことと、前記GETリクエストは「Range:」ヘッダを含まない、
    を備え、
    前記テンプレートに従って前記URLを形成することは、複数のコンテンツ配信ネットワーク(CDN)のうちの選択された1つのCDNに固有のバイト範囲テンプレートに従って前記URLを形成することを備える、方法。
  2. 前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定することは、前記複数のバイト範囲から前記表現の前記バイト範囲を選択することを備える、請求項1に記載の方法。
  3. セグメントインデックスデータ構造を備える前記表現のデータを受信することをさらに備え、前記セグメントインデックスデータ構造は、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定することは、前記複数のバイト範囲から前記表現の前記バイト範囲を選択することを備える、請求項1に記載の方法。
  4. 前記GETリクエストの前記URLに前記バイト範囲が埋め込まれていることを示す拡張ヘッダを含めるように前記GETリクエストを形成することをさらに備える、請求項1に記載の方法。
  5. 前記複数のコンテンツ配信ネットワーク(CDN)のうちの1つを選択するための1つまたは複数の選択基準を受信することと、
    前記選択基準に基づいて前記複数のCDNから1つのCDNを選択することと、
    をさらに備え、
    前記GETリクエストを出すことは、前記選択されたCDNに対して前記GETリクエストを出すことを備える、請求項1に記載の方法。
  6. 前記データの取出し元となる前記複数のコンテンツ配信ネットワーク(CDN)のうちの1つを決定するために、リダイレクションURLにPOSTメッセージをサブミットすることと、
    前記POSTメッセージに応答して、前記複数のCDNのうちの1つについてのベースURLの指示を受信することと、
    をさらに備え、
    前記URLを形成することは、前記複数のCDNのうちの前記1つについての前記受信されたベースURLを指定するように前記URLを形成することを備え、
    前記GETリクエストを出すことは、前記複数のCDNのうちの前記1つに対して前記GETリクエストを出すことを備える、請求項1に記載の方法。
  7. 前記POSTメッセージをサブミットすることは、ジオロケーション情報、ホップカウント、およびローカル時刻のうちの1つまたは複数を含むローカル情報と、BaseURL、および選択基準のうちの1つまたは複数を示す1つまたは複数のPOSTメッセージを前記リダイレクションURLにサブミットすることを備える、請求項6に記載の方法。
  8. 前記ソースデバイスから前記テンプレートを示す情報を受信することをさらに備える、請求項1に記載の方法。
  9. マルチメディアデータについての情報を受信するためのデバイスであって、
    マルチメディアコンテンツのマニフェストファイルを受信することと、前記マニフェストファイルは、前記マルチメディアコンテンツの特性の異なる複数の表現についての記述を含み、
    前記複数の表現から、前記デバイスのコーディングおよびレンダリング能力と、ネットワーク帯域幅の現在利用可能な量とによって満たされ得る特性を有する表現を選択することと、
    ソースデバイスに対してリクエストする前記マルチメディアコンテンツの前記選択された表現のファイルのバイト範囲を決定することと、
    前記ソースデバイスの要求に従って前記ファイルと前記バイト範囲とを、テンプレートに従ってユニフォームリソースロケータ(URL)のファイルパス部分に指定する前記URLを形成することと、
    前記ソースデバイスに対して前記形成されたURLを指定するGETリクエストを出すことと、
    を行うように構成された1つまたは複数のプロセッサを備え、
    前記GETリクエストは「Range:」ヘッダを含まず、
    前記テンプレートに従って前記URLを形成することは、複数のコンテンツ配信ネットワーク(CDN)のうちの選択された1つのCDNに固有のバイト範囲テンプレートに従って前記URLを形成することを備える、デバイス。
  10. 前記マニフェストファイルは、前記表現にリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定するために、前記1つまたは複数のプロセッサは、前記複数のバイト範囲から前記表現の前記バイト範囲を選択するように構成される、請求項9に記載のデバイス。
  11. 前記1つまたは複数のプロセッサは、セグメントインデックスデータ構造を備える前記表現のデータを受信するようにさらに構成され、前記セグメントインデックスデータ構造は、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定するために、前記1つまたは複数のプロセッサは、前記複数のバイト範囲から前記表現の前記バイト範囲を選択するように構成される、請求項9に記載のデバイス。
  12. 前記1つまたは複数のプロセッサは、前記GETリクエストの前記URLに前記バイト範囲が埋め込まれていることを示す拡張ヘッダを含めるように前記GETリクエストを形成するようにさらに構成される、請求項9に記載のデバイス。
  13. 前記1つまたは複数のプロセッサは、前記複数のコンテンツ配信ネットワーク(CDN)のうちの1つを選択するための1つまたは複数の選択基準を受信することと、前記選択基準に基づいて前記複数のCDNから1つのCDNを選択することと、前記選択されたCDNに対して前記GETリクエストを出すこととを行うようにさらに構成され、前記テンプレートは、前記選択されたCDNに固有のバイト範囲テンプレートを備える、請求項9に記載のデバイス。
  14. 前記デバイスは、
    集積回路、
    マイクロプロセッサ、および
    前記1つまたは複数のプロセッサを含むワイヤレス通信デバイス
    のうちの少なくとも1つを備える、請求項9に記載のデバイス。
  15. マルチメディアデータを取り出すためのデバイスであって、
    マルチメディアコンテンツのマニフェストファイルを受信する手段と、前記マニフェストファイルは、前記マルチメディアコンテンツの特性の異なる複数の表現についての記述を含み、
    前記複数の表現から、前記デバイスのコーディングおよびレンダリング能力と、ネットワーク帯域幅の現在利用可能な量とによって満たされ得る特性を有する表現を選択する手段と、
    ソースデバイスに対してリクエストする前記マルチメディアコンテンツの前記選択された表現のファイルのバイト範囲を決定する手段と、
    前記ソースデバイスの要求に従って前記ファイルと前記バイト範囲とを、テンプレートに従ってユニフォームリソースロケータ(URL)のファイルパス部分に指定する前記URLを形成する手段と、
    前記ソースデバイスに対して前記形成されたURLを指定するGETリクエストを出す手段と、
    を備え、
    前記GETリクエストは「Range:」ヘッダを含まず、
    前記テンプレートに従って前記URLを形成する手段は、複数のコンテンツ配信ネットワーク(CDN)のうちの選択された1つのCDNに固有のバイト範囲テンプレートに従って前記URLを形成する手段を備える、
    デバイス。
  16. 前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定する前記手段は、前記複数のバイト範囲から前記表現の前記バイト範囲を選択する手段を備える、請求項15に記載のデバイス。
  17. セグメントインデックスデータ構造を備える前記表現のデータを受信する手段をさらに備え、前記セグメントインデックスデータ構造は、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、前記バイト範囲を決定する前記手段は、前記複数のバイト範囲から前記表現の前記バイト範囲を選択する手段を備える、請求項15に記載のデバイス。
  18. 前記GETリクエストの前記URLに前記バイト範囲のロケーションを示す拡張ヘッダを含めるように前記GETリクエストを形成する手段をさらに備える、請求項15に記載のデバイス。
  19. 前記複数のコンテンツ配信ネットワーク(CDN)のうちの1つを選択するための1つまたは複数の選択基準を受信する手段と、
    前記選択基準に基づいて前記複数のCDNから1つのCDNを選択する手段と、
    をさらに備え、
    前記GETリクエストを出す前記手段は、前記選択されたCDNに対して前記GETリクエストを出す手段を備える、請求項15に記載のデバイス。
  20. 実行されたときに、マルチメディアデータを取り出すためのデバイスの1つまたは複数のプロセッサに、
    マルチメディアコンテンツのマニフェストファイルを受信させ、前記マニフェストファイルは、前記マルチメディアコンテンツの特性の異なる複数の表現についての記述を含み、
    前記複数の表現から、前記デバイスのコーディングおよびレンダリング能力と、ネットワーク帯域幅の現在利用可能な量とによって満たされ得る特性を有する表現を選択させ、
    ソースデバイスに対してリクエストする前記マルチメディアコンテンツの前記選択された表現のファイルのバイト範囲を決定させ、
    前記ソースデバイスの要求に従って前記ファイルと前記バイト範囲とを、テンプレートに従ってユニフォームリソースロケータ(URL)のファイルパス部分に指定する前記URLを形成させ、
    前記ソースデバイスに対して前記形成されたURLを指定するGETリクエストを出させる命令を記憶し、
    前記GETリクエストは「Range:」ヘッダを含まず、
    前記プロセッサに、前記テンプレートに従って前記URLを形成させる前記命令は、前記プロセッサに、複数のコンテンツ配信ネットワーク(CDN)のうちの選択された1つのCDNに固有のバイト範囲テンプレートに従って前記URLを形成させる命令を備える、コンピュータ可読記憶媒体。
  21. 前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定し、
    前記プロセッサに、前記バイト範囲を決定させる前記命令は、前記プロセッサに、前記複数のバイト範囲から前記表現の前記バイト範囲を選択させる命令を備える、請求項20に記載のコンピュータ可読記憶媒体。
  22. 前記プロセッサに、セグメントインデックスデータ構造を備える前記表現のデータを受信させる命令をさらに備え、前記セグメントインデックスデータ構造は、前記表現にリクエストされ得る複数のバイト範囲を指定し、
    前記プロセッサに、前記バイト範囲を決定させる前記命令は、前記プロセッサに、前記複数のバイト範囲から前記表現の前記バイト範囲を選択させる命令を備える、請求項20に記載のコンピュータ可読記憶媒体。
  23. 前記プロセッサに、前記GETリクエストの前記URLに前記バイト範囲が埋め込まれていることを示す拡張ヘッダを含めるように前記GETリクエストを形成させる命令をさらに備える、請求項20に記載のコンピュータ可読記憶媒体。
  24. 前記プロセッサに、
    前記複数のコンテンツ配信ネットワーク(CDN)のうちの1つを選択するための1つまたは複数の選択基準を受信させ、
    前記選択基準に基づいて前記複数のCDNから1つのCDNを選択させる
    命令をさらに備え、
    前記プロセッサに、前記GETリクエストを出させる前記命令は、前記プロセッサに、前記選択されたCDNに対して前記GETリクエストを出させる命令を備える、請求項20に記載のコンピュータ可読記憶媒体。
  25. マルチメディアデータについての情報を送る方法であって、
    マルチメディアコンテンツのマニフェストファイルを提供することと、前記マニフェストファイルは、前記マルチメディアコンテンツの特性の異なる複数の表現についての記述を含み、前記マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、前記URLテンプレートおよび前記バイト範囲テンプレートは、URL内に前記複数の表現から選択された1つの表現のファイルについてのバイト範囲リクエストを含めるように前記URLを形成するためのテンプレートを提供し、
    前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成されたURLを含むGETリクエストを受信することと、前記GETリクエストの前記URLは前記マルチメディアコンテンツの前記表現の前記ファイルのバイト範囲を指定し、前記GETリクエストは「Range:」ヘッダを含まない、
    前記GETリクエストに応答して、前記GETリクエストの前記バイト範囲に対応する前記表現のマルチメディアデータを出力することと、
    を備え、
    前記バイト範囲テンプレートは、複数のコンテンツ配信ネットワークのそれぞれに対応する複数のバイト範囲テンプレートのうちの1つを備える、方法。
  26. 前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定する情報をさらに備え、前記GETリクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、請求項25に記載の方法。
  27. 前記表現に対しリクエストされ得る複数のバイト範囲を指定するセグメントインデックスデータ構造を提供することをさらに備え、前記GETリクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、請求項25に記載の方法。
  28. 前記GETリクエスト内で拡張ヘッダを受信することをさらに備え、前記拡張ヘッダは、前記GETリクエストの前記URLに前記バイト範囲が埋め込まれていることを示す、請求項25に記載の方法。
  29. 提供することは、サーバデバイスによって提供することを備え、受信することは、前記サーバデバイスによって受信することを備え、出力することは、前記サーバデバイスによって出力することを備える、請求項25に記載の方法。
  30. 提供することは、プロキシキャッシュデバイスによって提供することを備え、受信することは、前記プロキシキャッシュデバイスによって受信することを備え、出力することは、前記プロキシキャッシュデバイスによって出力することを備える、請求項25に記載の方法。
  31. 前記GETリクエストは、前記マルチメディアコンテンツの前記表現の前記バイト範囲についての第1のリクエストを備え、前記方法は、
    サーバデバイスに対して前記表現の前記バイト範囲をリクエストすることと、
    前記サーバデバイスから受信された前記バイト範囲についてのデータをキャッシュすることと、
    前記表現の前記バイト範囲についての第2の異なるリクエストを受信することと、
    前記第2のリクエストに応答して、前記表現の前記バイト範囲についての前記キャッシュされたデータを出力することと、
    をさらに備える、請求項25に記載の方法。
  32. マルチメディアデータについての情報を送る方法であって、
    マルチメディアコンテンツのマニフェストファイルを提供することと、前記マニフェストファイルは、前記マルチメディアコンテンツの特性の異なる複数の表現についての記述を含み、前記マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、前記URLテンプレートおよび前記バイト範囲テンプレートは、URL内に前記複数の表現から選択された1つの表現のファイルについてのバイト範囲リクエストを含めるように前記URLを形成するためのテンプレートを提供し、
    前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成されたURLを含むGETリクエストを受信することと、前記GETリクエストの前記URLは前記マルチメディアコンテンツの前記表現の前記ファイルのバイト範囲を指定し、前記GETリクエストは「Range:」ヘッダを含まない、
    前記GETリクエストに応答して、前記GETリクエストの前記バイト範囲に対応する前記表現のマルチメディアデータを出力することと、
    を備え、
    前記GETリクエストは第1のリクエストを備え、前記バイト範囲は第1のバイト範囲を備え、前記方法は、
    サーバデバイスに対して前記表現の前記第1のバイト範囲をリクエストすることと、
    前記サーバデバイスから受信された前記第1のバイト範囲についてのデータをキャッシュすることと、
    前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成された第2のURLを含む第2のリクエストを受信することと、前記第2のリクエストの前記第2のURLは前記マルチメディアコンテンツの前記表現の第2のバイト範囲を指定し、前記第2のバイト範囲は前記第1のバイト範囲の後に続き、
    前記サーバデバイスに対して前記表現の前記第2のバイト範囲をリクエストすることと、
    前記第1のバイト範囲についての前記キャッシュされたデータと、前記サーバデバイスから受信された前記第2のバイト範囲についてのデータとを使用して、前記表現のローカルコピーをアセンブルすることと、
    をさらに備える、方法。
  33. 前記マニフェストファイルは、前記バイト範囲テンプレートがすべてのコンテンツ配信ネットワークにグローバルに適用されることを示す、請求項26に記載の方法。
  34. 前記バイト範囲テンプレートは、複数のバイト範囲テンプレートのうちの1つを備え、前記マニフェストファイルは、前記複数のバイト範囲テンプレートのそれぞれが、複数のコンテンツ配信ネットワークのそれぞれの1つに適用されることを示す、請求項25に記載の方法。
  35. マルチメディアデータについての情報を送るためのデバイスであって、
    マルチメディアコンテンツのマニフェストファイルを提供することと、前記マニフェストファイルは、前記マルチメディアコンテンツの特性の異なる複数の表現についての記述を含み、前記マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、前記URLテンプレートおよび前記バイト範囲テンプレートは、URL内に前記複数の表現から選択された1つの表現のファイルについてのバイト範囲リクエストを含めるように前記URLを形成するためのテンプレートを提供し、
    前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成されたURLを含むGETリクエストを受信することと、前記GETリクエストの前記URLは前記マルチメディアコンテンツの前記表現の前記ファイルのバイト範囲を指定し、前記GETリクエストは「Range:」ヘッダを含まない、
    前記GETリクエストに応答して、前記GETリクエストの前記バイト範囲に対応する前記表現のマルチメディアデータを出力することと、
    を行うように構成された1つまたは複数のプロセッサを備え、
    前記バイト範囲テンプレートは、複数のコンテンツ配信ネットワークのそれぞれに対応する複数のバイト範囲テンプレートのうちの1つを備える、デバイス。
  36. 前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定する情報をさらに備え、前記GETリクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、請求項35に記載のデバイス。
  37. 前記1つまたは複数のプロセッサは、前記表現に対しリクエストされ得る複数のバイト範囲を指定するセグメントインデックスデータ構造を提供するように構成され、前記GETリクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、請求項35に記載のデバイス。
  38. 前記1つまたは複数のプロセッサは、前記GETリクエスト内で拡張ヘッダを受信するように構成され、前記拡張ヘッダは、前記GETリクエストの前記URLに前記バイト範囲が埋め込まれていることを示す、請求項35に記載のデバイス。
  39. 前記デバイスは、サーバデバイスおよびプロキシキャッシュデバイスのうちの少なくとも1つを備える、請求項35に記載のデバイス。
  40. 前記GETリクエストは、前記マルチメディアコンテンツの前記表現の前記バイト範囲についての第1のリクエストを備え、前記1つまたは複数のプロセッサは、
    サーバデバイスに対して前記表現の前記バイト範囲をリクエストすることと、
    前記サーバデバイスから受信された前記バイト範囲についてのデータをキャッシュすることと、
    前記表現の前記バイト範囲についての第2の異なるリクエストを受信することと、
    前記第2のリクエストに応答して、前記表現の前記バイト範囲についての前記キャッシュされたデータを出力することと、
    を行うようにさらに構成される、請求項35に記載のデバイス。
  41. 前記デバイスは、
    集積回路、
    マイクロプロセッサ、および
    前記1つまたは複数のプロセッサを含むワイヤレス通信デバイス
    のうちの少なくとも1つを備える、請求項35に記載のデバイス。
  42. マルチメディアデータについての情報を送るためのデバイスであって、
    マルチメディアコンテンツのマニフェストファイルを提供する手段と、前記マニフェストファイルは、前記マルチメディアコンテンツの特性の異なる複数の表現についての記述を含み、前記マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、前記URLテンプレートおよび前記バイト範囲テンプレートは、URL内に前記複数の表現から選択された1つの表現のファイルについてのバイト範囲リクエストを含めるように前記URLを形成するためのテンプレートを提供し、
    前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成されたURLを含むGETリクエストを受信する手段と、前記GETリクエストの前記URLは前記マルチメディアコンテンツの前記表現の前記ファイルのバイト範囲を指定し、前記GETリクエストは「Range:」ヘッダを含まない、
    前記GETリクエストに応答して、前記GETリクエストの前記バイト範囲に対応する前記表現のマルチメディアデータを出力する手段と、
    を備え、
    前記バイト範囲テンプレートは、複数のコンテンツ配信ネットワークのそれぞれに対応する複数のバイト範囲テンプレートのうちの1つを備える、デバイス。
  43. 前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定する情報をさらに備え、前記GETリクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、請求項42に記載のデバイス。
  44. 前記表現にリクエストされ得る複数のバイト範囲を指定するセグメントインデックスデータ構造を提供する手段をさらに備え、前記GETリクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、請求項42に記載のデバイス。
  45. 前記GETリクエスト内で拡張ヘッダを受信する手段をさらに備え、前記拡張ヘッダは、前記GETリクエストの前記URLに前記バイト範囲が埋め込まれていることを示す、請求項42に記載のデバイス。
  46. 前記GETリクエストは、前記マルチメディアコンテンツの前記表現の前記バイト範囲についての第1のリクエストを備え、前記デバイスは、
    サーバデバイスに対して前記表現の前記バイト範囲をリクエストする手段と、
    前記サーバデバイスから受信された前記バイト範囲についてのデータをキャッシュする手段と、
    前記表現の前記バイト範囲についての第2の異なるリクエストを受信する手段と、
    前記第2のリクエストに応答して、前記表現の前記バイト範囲についての前記キャッシュされたデータを出力する手段と、
    をさらに備える、請求項42に記載のデバイス。
  47. 実行されたときに、マルチメディアデータを提供するためのデバイスの1つまたは複数のプロセッサに、
    マルチメディアコンテンツのマニフェストファイルを提供することと、前記マニフェストファイルは、前記マルチメディアコンテンツの特性の異なる複数の表現についての記述を含み、前記マニフェストファイルは、ユニフォームリソースロケータ(URL)テンプレートとバイト範囲テンプレートとを指定し、前記URLテンプレートおよび前記バイト範囲テンプレートは、URL内に前記複数の表現から選択された1つの表現のファイルのバイト範囲リクエストを含めるように前記URLを形成するためのテンプレートを提供し、
    前記URLテンプレートおよび前記バイト範囲テンプレートに従って構成されたURLを含むGETリクエストを受信することと、前記GETリクエストの前記URLは前記マルチメディアコンテンツの前記表現の前記ファイルのバイト範囲を指定し、前記GETリクエストは「Range:」ヘッダを含まない、
    前記GETリクエストに応答して、前記GETリクエストの前記バイト範囲に対応する前記表現のマルチメディアデータを出力することと、
    を行わせる命令を記憶し、
    前記バイト範囲テンプレートは、複数のコンテンツ配信ネットワークのそれぞれに対応する複数のバイト範囲テンプレートのうちの1つを備える、コンピュータ可読記憶媒体。
  48. 前記マニフェストファイルは、前記表現に対しリクエストされ得る複数のバイト範囲を指定する情報をさらに備え、前記GETリクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、請求項47に記載のコンピュータ可読記憶媒体。
  49. 前記プロセッサに、前記表現に対しリクエストされ得る複数のバイト範囲を指定するセグメントインデックスデータ構造を提供させる命令をさらに備え、前記GETリクエストの前記URLによって指定された前記バイト範囲は、前記複数のバイト範囲のうちの1つを備える、請求項47に記載のコンピュータ可読記憶媒体。
  50. 前記プロセッサに、前記GETリクエスト内で拡張ヘッダを受信させる命令をさらに備え、前記拡張ヘッダは、前記GETリクエストの前記URLに前記バイト範囲が埋め込まれていることを示す、請求項47に記載のコンピュータ可読記憶媒体。
  51. 前記GETリクエストは、前記マルチメディアコンテンツの前記表現の前記バイト範囲についての第1のリクエストを備え、前記コンピュータ可読記憶媒体は、前記プロセッサに、
    サーバデバイスに対して前記表現の前記バイト範囲をリクエストすることと、
    前記サーバデバイスから受信された前記バイト範囲についてのデータをキャッシュすることと、
    前記表現の前記バイト範囲についての第2の異なるリクエストを受信することと、
    前記第2のリクエストに応答して、前記表現の前記バイト範囲についての前記キャッシュされたデータを出力することと、
    を行わせる命令をさらに備える、請求項47に記載のコンピュータ可読記憶媒体。
JP2015160180A 2011-04-07 2015-08-14 バイト範囲リクエストを使用したビデオデータのネットワークストリーミング Active JP6316781B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161473105P 2011-04-07 2011-04-07
US61/473,105 2011-04-07
US13/439,556 US8849950B2 (en) 2011-04-07 2012-04-04 Network streaming of video data using byte range requests
US13/439,556 2012-04-04

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014503995A Division JP2014515144A (ja) 2011-04-07 2012-04-05 バイト範囲リクエストを使用したビデオデータのネットワークストリーミング

Publications (2)

Publication Number Publication Date
JP2016028474A JP2016028474A (ja) 2016-02-25
JP6316781B2 true JP6316781B2 (ja) 2018-04-25

Family

ID=46966958

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014503995A Withdrawn JP2014515144A (ja) 2011-04-07 2012-04-05 バイト範囲リクエストを使用したビデオデータのネットワークストリーミング
JP2015160180A Active JP6316781B2 (ja) 2011-04-07 2015-08-14 バイト範囲リクエストを使用したビデオデータのネットワークストリーミング

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014503995A Withdrawn JP2014515144A (ja) 2011-04-07 2012-04-05 バイト範囲リクエストを使用したビデオデータのネットワークストリーミング

Country Status (14)

Country Link
US (1) US8849950B2 (ja)
EP (1) EP2695355B1 (ja)
JP (2) JP2014515144A (ja)
KR (1) KR101548444B1 (ja)
CN (1) CN103460667B (ja)
BR (1) BR112013025351B1 (ja)
DK (1) DK2695355T3 (ja)
ES (1) ES2716274T3 (ja)
HU (1) HUE042019T2 (ja)
PL (1) PL2695355T3 (ja)
PT (1) PT2695355T (ja)
SI (1) SI2695355T1 (ja)
TW (1) TWI465088B (ja)
WO (1) WO2012138895A1 (ja)

Families Citing this family (139)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8472792B2 (en) 2003-12-08 2013-06-25 Divx, Llc Multimedia distribution system
US7519274B2 (en) 2003-12-08 2009-04-14 Divx, Inc. File format for multiple track digital data
EP1999883A4 (en) 2006-03-14 2013-03-06 Divx Llc FEDERATED DIGITAL RIGHTS MANAGEMENT SYSTEM COMPRISING CONFIDENCE SYSTEMS
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
EP4213033A1 (en) 2007-01-05 2023-07-19 DivX, LLC Video distribution system including progressive playback
US8233768B2 (en) 2007-11-16 2012-07-31 Divx, Llc Hierarchical and reduced index structures for multimedia files
US8156089B2 (en) 2008-12-31 2012-04-10 Apple, Inc. Real-time or near real-time streaming with compressed playlists
US8099473B2 (en) 2008-12-31 2012-01-17 Apple Inc. Variant streams for real-time or near real-time streaming
US8260877B2 (en) 2008-12-31 2012-09-04 Apple Inc. Variant streams for real-time or near real-time streaming to provide failover protection
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US8930991B2 (en) * 2009-11-19 2015-01-06 Gregory Philpott System and method for delivering content to mobile devices
WO2011068668A1 (en) 2009-12-04 2011-06-09 Divx, Llc Elementary bitstream cryptographic material transport systems and methods
CN104394487B (zh) * 2010-03-05 2018-02-06 三星电子株式会社 基于文件格式生成和再现自适应流的方法和装置
US8805963B2 (en) 2010-04-01 2014-08-12 Apple Inc. Real-time or near real-time streaming
GB201105502D0 (en) 2010-04-01 2011-05-18 Apple Inc Real time or near real time streaming
CN102882845B (zh) 2010-04-07 2016-07-13 苹果公司 实时或准实时流传输
US8880633B2 (en) * 2010-12-17 2014-11-04 Akamai Technologies, Inc. Proxy server with byte-based include interpreter
US8914534B2 (en) 2011-01-05 2014-12-16 Sonic Ip, Inc. Systems and methods for adaptive bitrate streaming of media stored in matroska container files using hypertext transfer protocol
US8856283B2 (en) 2011-06-03 2014-10-07 Apple Inc. Playlists for real-time or near real-time streaming
US8843586B2 (en) * 2011-06-03 2014-09-23 Apple Inc. Playlists for real-time or near real-time streaming
US8812662B2 (en) 2011-06-29 2014-08-19 Sonic Ip, Inc. Systems and methods for estimating available bandwidth and performing initial stream selection when streaming content
US9117221B2 (en) * 2011-06-30 2015-08-25 Flite, Inc. System and method for the transmission of live updates of embeddable units
KR101928910B1 (ko) 2011-08-30 2018-12-14 쏘닉 아이피, 아이엔씨. 복수의 최대 비트레이트 레벨들을 사용하여 인코딩된 비디오를 인코딩하고 스트리밍하기 위한 시스템들 및 방법들
US9467708B2 (en) 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
US8806188B2 (en) 2011-08-31 2014-08-12 Sonic Ip, Inc. Systems and methods for performing adaptive bitrate streaming using automatically generated top level index files
US8799647B2 (en) 2011-08-31 2014-08-05 Sonic Ip, Inc. Systems and methods for application identification
US8909922B2 (en) 2011-09-01 2014-12-09 Sonic Ip, Inc. Systems and methods for playing back alternative streams of protected content protected using common cryptographic information
US8964977B2 (en) 2011-09-01 2015-02-24 Sonic Ip, Inc. Systems and methods for saving encoded media streamed using adaptive bitrate streaming
KR102002165B1 (ko) 2011-09-28 2019-07-25 포토내이션 리미티드 라이트 필드 이미지 파일의 인코딩 및 디코딩을 위한 시스템 및 방법
EP2764432B1 (en) * 2011-10-03 2018-08-01 Affirmed Networks, Inc. Mobile content delivery
US9521439B1 (en) * 2011-10-04 2016-12-13 Cisco Technology, Inc. Systems and methods for correlating multiple TCP sessions for a video transfer
US9832095B2 (en) * 2011-12-14 2017-11-28 Seven Networks, Llc Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic
US8977704B2 (en) 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
US20130179199A1 (en) 2012-01-06 2013-07-11 Rovi Corp. Systems and methods for granting access to digital content using electronic tickets and ticket tokens
US20130195204A1 (en) * 2012-01-19 2013-08-01 Vid Scale Inc. Methods and Systems for Video Delivery Supporting Adaptation to Viewing Conditions
US9401968B2 (en) * 2012-01-20 2016-07-26 Nokia Techologies Oy Method and apparatus for enabling pre-fetching of media
US9438883B2 (en) 2012-04-09 2016-09-06 Intel Corporation Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content
CA2870801A1 (en) 2012-04-18 2013-10-24 Mdialog Corporation Method and system for inserting content into streaming media at arbitrary time points
EP2834984B1 (en) * 2012-04-27 2016-03-30 Huawei Technologies Co., Ltd. Support for short cryptoperiods in template mode
BR122015005194A2 (pt) 2012-06-28 2019-08-20 Ericsson Ab Método e sistema para inserção de anúncio em entrega de mídia ao vivo over the top
JP6102108B2 (ja) * 2012-07-24 2017-03-29 富士通株式会社 情報処理装置、データ提供方法、及びデータ提供プログラム
EP2859742B1 (en) * 2012-08-06 2020-04-29 Huawei Technologies Co., Ltd. Method for providing a multimedia message service
US9584573B2 (en) 2012-08-29 2017-02-28 Ericsson Ab Streaming policy management system and method
US9936267B2 (en) 2012-08-31 2018-04-03 Divx Cf Holdings Llc System and method for decreasing an initial buffering period of an adaptive streaming system
US9191457B2 (en) 2012-12-31 2015-11-17 Sonic Ip, Inc. Systems, methods, and media for controlling delivery of content
US9313510B2 (en) 2012-12-31 2016-04-12 Sonic Ip, Inc. Use of objective quality measures of streamed content to reduce streaming bandwidth
EP3073712B1 (en) * 2013-01-16 2019-06-19 Huawei Technologies Co., Ltd. Url parameter insertion and addition in adaptive streaming
US9801054B2 (en) 2013-01-17 2017-10-24 Intel IP Corporation Presence service using IMS based dash service
ES2645101T3 (es) * 2013-01-17 2017-12-04 Intel IP Corporation Autentificación de URL de contenidos para dash
CN108683485B (zh) * 2013-01-17 2021-03-12 苹果公司 Tdd传输的ul/dl帧资源动态配置的方法和装置
EP2932397B1 (en) * 2013-01-18 2017-08-09 Huawei Technologies Co., Ltd. Method and apparatus for performing adaptive streaming on media contents
US9961415B2 (en) 2013-01-24 2018-05-01 Google Llc Method and system for identifying events in a streaming media program
US9420019B2 (en) * 2013-01-28 2016-08-16 The Directv Group, Inc. Method and system for securing content communication in chunks from a content delivery network to a user receiving device
US9832492B2 (en) * 2013-01-29 2017-11-28 Espial Group Inc. Distribution of adaptive bit rate video streaming via hyper-text transfer protocol
US9432426B2 (en) 2013-02-04 2016-08-30 Qualcomm Incorporated Determining available media data for network streaming
EP2765781A1 (en) * 2013-02-07 2014-08-13 Thomson Licensing Method for providing targetable content in images of a video sequence and corresponding device
JP6205765B2 (ja) * 2013-03-12 2017-10-04 沖電気工業株式会社 映像配信装置、映像配信プログラム、映像配信方法及び映像配信システム
US9743326B2 (en) 2013-03-14 2017-08-22 Interdigital Patent Holdings, Inc. Anchor node selection in a distributed mobility management environment
US8984569B2 (en) 2013-03-15 2015-03-17 Echostar Technologies L.L.C. Chunking of multiple track audio for adaptive bit rate streaming
US9906785B2 (en) 2013-03-15 2018-02-27 Sonic Ip, Inc. Systems, methods, and media for transcoding video data according to encoding parameters indicated by received metadata
US9854017B2 (en) * 2013-03-15 2017-12-26 Qualcomm Incorporated Resilience in the presence of missing media segments in dynamic adaptive streaming over HTTP
US10397292B2 (en) 2013-03-15 2019-08-27 Divx, Llc Systems, methods, and media for delivery of content
US9438652B2 (en) 2013-04-15 2016-09-06 Opentv, Inc. Tiered content streaming
SG11201508375VA (en) * 2013-04-19 2015-11-27 Sony Corp Information processing apparatus, content requesting method, and computer program
MX353122B (es) * 2013-04-19 2017-12-20 Sony Corp Dispositivo servidor, dispositivo del cliente, método de distribución de contenidos, y programa de computadora.
US9094737B2 (en) 2013-05-30 2015-07-28 Sonic Ip, Inc. Network video streaming with trick play based on separate trick play files
US9100687B2 (en) 2013-05-31 2015-08-04 Sonic Ip, Inc. Playback synchronization across playback devices
US9380099B2 (en) 2013-05-31 2016-06-28 Sonic Ip, Inc. Synchronizing multiple over the top streaming clients
US20140372569A1 (en) * 2013-06-14 2014-12-18 Samsung Electronics Co., Ltd. Controlling dash client rate adaptation
US9419845B2 (en) * 2013-06-27 2016-08-16 Cisco Technology, Inc. Dynamic content distribution network selection based on context from transient criteria
JP6444398B2 (ja) 2013-07-03 2018-12-26 コニンクリーケ・ケイピーエヌ・ナムローゼ・フェンノートシャップ セグメント化コンテンツのストリーミング
US8762564B1 (en) * 2013-07-10 2014-06-24 Mdialog Corporation Method and system for dynamically selecting, assembling and inserting content into stream media
CN104427005B (zh) * 2013-08-20 2018-01-02 阿里巴巴集团控股有限公司 在cdn上实现请求精确调度的方法及系统
JP2015043486A (ja) * 2013-08-26 2015-03-05 ソニー株式会社 プロキシサーバ装置、情報処理方法、プログラム、端末装置、およびコンテンツ供給システム
JP2015049650A (ja) * 2013-08-30 2015-03-16 ソニー株式会社 サーバ装置、情報処理方法、プログラム、端末装置、およびコンテンツ供給システム
US10108692B1 (en) * 2013-10-15 2018-10-23 Amazon Technologies, Inc. Data set distribution
US9401944B2 (en) 2013-10-22 2016-07-26 Qualcomm Incorporated Layered adaptive HTTP streaming
US10841353B2 (en) 2013-11-01 2020-11-17 Ericsson Ab System and method for optimizing defragmentation of content in a content delivery network
US20150172347A1 (en) * 2013-12-18 2015-06-18 Johannes P. Schmidt Presentation of content based on playlists
US9386067B2 (en) 2013-12-30 2016-07-05 Sonic Ip, Inc. Systems and methods for playing adaptive bitrate streaming content by multicast
US20160330500A1 (en) * 2014-01-10 2016-11-10 Thomson Licensing Method for obtaining network information by a client terminal configured for receiving a multimedia content divided into segments
US10165029B2 (en) * 2014-01-31 2018-12-25 Fastly Inc. Caching and streaming of digital media content subsets
US11477262B2 (en) 2014-02-13 2022-10-18 Koninklijke Kpn N.V. Requesting multiple chunks from a network node on the basis of a single request message
US10902474B2 (en) 2014-03-24 2021-01-26 Qualcomm Incorporated Targeted advertisement insertion for streaming media data
US9866878B2 (en) 2014-04-05 2018-01-09 Sonic Ip, Inc. Systems and methods for encoding and playing back video at different frame rates using enhancement layers
US9860612B2 (en) * 2014-04-10 2018-01-02 Wowza Media Systems, LLC Manifest generation and segment packetization
US10523723B2 (en) 2014-06-06 2019-12-31 Koninklijke Kpn N.V. Method, system and various components of such a system for selecting a chunk identifier
US10033824B2 (en) * 2014-06-30 2018-07-24 Samsung Electronics Co., Ltd. Cache manifest for efficient peer assisted streaming
US9762937B2 (en) 2014-08-07 2017-09-12 Sonic Ip, Inc. Systems and methods for protecting elementary bitstreams incorporating independently encoded tiles
CA2953031C (en) * 2014-08-26 2023-08-08 Ctera Networks, Ltd. A method and computing device for allowing synchronized access to cloud storage systems based on stub tracking
CN104270646A (zh) * 2014-09-22 2015-01-07 何震宇 一种基于移动流媒体的自适应传输方法和系统
US10084838B2 (en) 2014-10-29 2018-09-25 DLVR, Inc. Generating and using manifest files including content delivery network authentication data
US10142386B2 (en) 2014-10-29 2018-11-27 DLVR, Inc. Determining manifest file data used in adaptive streaming video delivery
US9509742B2 (en) 2014-10-29 2016-11-29 DLVR, Inc. Configuring manifest files referencing infrastructure service providers for adaptive streaming video
US9813465B2 (en) * 2014-12-19 2017-11-07 Intel Corporation Network proxy for energy efficient video streaming on mobile devices
CN107111477B (zh) 2015-01-06 2021-05-14 帝威视有限公司 用于编码内容和在设备之间共享内容的系统和方法
US10218981B2 (en) * 2015-02-11 2019-02-26 Wowza Media Systems, LLC Clip generation based on multiple encodings of a media stream
US10375444B2 (en) * 2015-02-13 2019-08-06 Performance and Privacy Ireland Limited Partial video pre-fetch
US10298647B2 (en) * 2015-02-26 2019-05-21 Qualcomm Incorporated Delay compensation for broadcast adaptive bitrate streaming
EP3262523B1 (en) 2015-02-27 2019-12-04 DivX, LLC System and method for frame duplication and frame extension in live video encoding and streaming
US10528345B2 (en) * 2015-03-27 2020-01-07 Intel Corporation Instructions and logic to provide atomic range modification operations
US10291681B2 (en) * 2015-06-18 2019-05-14 Ericsson Ab Directory limit based system and method for storing media segments
KR102425517B1 (ko) * 2015-09-04 2022-07-27 삼성전자주식회사 다수 개의 무선 억세스 인터페이스들을 지원하는 이동 통신 시스템에서 데이터 업로드 장치 및 방법
US10257284B2 (en) * 2015-12-30 2019-04-09 Samsung Electronics Co., Ltd. Broadcasting local function templates to proximate mobile computing devices
CN107040505B (zh) * 2016-02-04 2021-01-26 中兴通讯股份有限公司 媒体数据传输方法及装置
US10075292B2 (en) 2016-03-30 2018-09-11 Divx, Llc Systems and methods for quick start-up of playback
CN105959362A (zh) * 2016-04-25 2016-09-21 乐视控股(北京)有限公司 Cdn服务器及其缓存数据的方法
US10231001B2 (en) 2016-05-24 2019-03-12 Divx, Llc Systems and methods for providing audio content during trick-play playback
US10129574B2 (en) 2016-05-24 2018-11-13 Divx, Llc Systems and methods for providing variable speeds in a trick-play mode
US10432690B1 (en) * 2016-06-03 2019-10-01 Amazon Technologies, Inc. Manifest partitioning
US10116719B1 (en) 2016-06-03 2018-10-30 Amazon Technologies, Inc. Customized dash manifest
US10104143B1 (en) * 2016-06-03 2018-10-16 Amazon Technologies, Inc. Manifest segmentation
US10148989B2 (en) 2016-06-15 2018-12-04 Divx, Llc Systems and methods for encoding video content
WO2018005666A1 (en) * 2016-06-29 2018-01-04 Amazon Technologies, Inc. Network-accessible data volume modification
US11617019B2 (en) * 2016-07-28 2023-03-28 Qualcomm Incorporated Retrieving and accessing segment chunks for media streaming
KR101863598B1 (ko) * 2016-07-29 2018-06-01 주식회사 에어브로드 스트리밍 서비스를 위한 클라이언트의 동작 방법
TWI599218B (zh) * 2016-07-29 2017-09-11 元智大學 即時影音傳輸系統
US20180062935A1 (en) * 2016-08-25 2018-03-01 Futurewei Technologies, Inc. Hybrid approach with classification for name resolution and producer selection in icn
KR102381335B1 (ko) * 2016-10-18 2022-03-31 이엑스피웨이 모바일 사용자 장치들에 컨텐츠를 전송하는 방법
US10440085B2 (en) * 2016-12-30 2019-10-08 Facebook, Inc. Effectively fetch media content for enhancing media streaming
US10476943B2 (en) 2016-12-30 2019-11-12 Facebook, Inc. Customizing manifest file for enhancing media streaming
US10498795B2 (en) 2017-02-17 2019-12-03 Divx, Llc Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming
US10536275B2 (en) * 2017-05-10 2020-01-14 Microsoft Technology Licensing, Llc Verification of downloaded subsets of content
CN107308645B (zh) * 2017-06-07 2018-07-03 浙江无端科技股份有限公司 一种游戏透视外挂检测的方法及游戏客户端
US11252454B2 (en) 2017-06-28 2022-02-15 Telefonaktiebolaget L M Ericsson (Publ) System, devices and methods for providing stream privacy in an ABR OTT media network
CN108234638A (zh) * 2017-12-29 2018-06-29 北京奇虎科技有限公司 一种基于内容分发网络cdn的数据处理方法和装置
CN108449308B (zh) * 2018-01-18 2020-11-27 北京奇艺世纪科技有限公司 识别恶意资源访问的方法及装置
EP3750303B1 (en) * 2018-02-05 2024-04-03 Telefonaktiebolaget LM Ericsson (publ) A method, a user equipment and a computer program product for enabling a dynamic adaptive streaming over http, dash, player to fetch media segments from a network
CN110166502B (zh) * 2018-02-11 2021-06-01 中国移动通信有限公司研究院 数据获取方法、服务提供端、服务使用端及网络功能实体
US10645186B2 (en) * 2018-04-23 2020-05-05 Level 3 Communications, Llc Speculative caching in a content delivery network
CN109194966B (zh) * 2018-08-03 2021-04-27 广州酷狗计算机科技有限公司 Sei消息的有效载荷获取方法、装置和存储介质
US10863211B1 (en) * 2018-11-12 2020-12-08 Amazon Technologies, Inc. Manifest data for server-side media fragment insertion
EP3942437B1 (en) 2019-03-21 2024-01-10 DivX, LLC Systems and methods for multimedia swarms
US11789771B2 (en) 2019-09-28 2023-10-17 Tencent America LLC Method and apparatus for a step-enabled workflow
US11516152B2 (en) * 2019-09-28 2022-11-29 Tencent America LLC First-in first-out function for segmented data stream processing
US11442766B1 (en) * 2020-02-03 2022-09-13 Architecture Technology Corporation Systems and methods for open threat hunt
US11553017B1 (en) 2021-03-09 2023-01-10 Nokia Technologies Oy Timed media HTTP request aggregation
US20220360990A1 (en) * 2021-05-05 2022-11-10 Rohde & Schwarz Gmbh & Co. Kg 4g / 5g core network deep packet inspection system
US20230224523A1 (en) * 2022-01-13 2023-07-13 Mux, Inc. Method for dynamic selection of a content delivery network

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU8903498A (en) * 1997-08-11 1999-03-01 Thomas C. Amon Provider-selected message in response to user request
US6889256B1 (en) * 1999-06-11 2005-05-03 Microsoft Corporation System and method for converting and reconverting between file system requests and access requests of a remote transfer protocol
FI115418B (fi) * 2001-09-20 2005-04-29 Oplayo Oy Adaptiivinen mediavirta
JP4452032B2 (ja) * 2003-04-14 2010-04-21 日本放送協会 コンテンツ提示装置及びコンテンツ提示プログラム
US6728729B1 (en) * 2003-04-25 2004-04-27 Apple Computer, Inc. Accessing media across networks
US20050102371A1 (en) 2003-11-07 2005-05-12 Emre Aksu Streaming from a server to a client
US20050254575A1 (en) * 2004-05-12 2005-11-17 Nokia Corporation Multiple interoperability points for scalable media coding and transmission
US20070204115A1 (en) 2006-02-28 2007-08-30 Maven Networks, Inc. Systems and methods for storage shuffling techniques to download content to a file
US9209934B2 (en) * 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US7783773B2 (en) * 2006-07-24 2010-08-24 Microsoft Corporation Glitch-free media streaming
US20100011091A1 (en) * 2008-07-10 2010-01-14 Blackwave Inc. Network Storage
US8621044B2 (en) * 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
EP2417743B1 (en) * 2009-04-09 2019-06-05 Telefonaktiebolaget LM Ericsson (publ) Methods and arrangements for creating and handling media files
US8392598B2 (en) 2009-06-15 2013-03-05 Research In Motion Limited Methods and apparatus to facilitate client controlled sessionless adaptation
US8433814B2 (en) * 2009-07-16 2013-04-30 Netflix, Inc. Digital content distribution system and method
US20110096828A1 (en) * 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding

Also Published As

Publication number Publication date
TWI465088B (zh) 2014-12-11
US8849950B2 (en) 2014-09-30
DK2695355T3 (en) 2019-04-01
SI2695355T1 (sl) 2019-05-31
EP2695355B1 (en) 2018-12-19
JP2014515144A (ja) 2014-06-26
JP2016028474A (ja) 2016-02-25
TW201251406A (en) 2012-12-16
US20120259946A1 (en) 2012-10-11
CN103460667A (zh) 2013-12-18
PT2695355T (pt) 2019-04-01
KR20140004218A (ko) 2014-01-10
HUE042019T2 (hu) 2019-06-28
WO2012138895A1 (en) 2012-10-11
ES2716274T3 (es) 2019-06-11
KR101548444B1 (ko) 2015-08-28
PL2695355T3 (pl) 2019-06-28
BR112013025351B1 (pt) 2022-05-17
CN103460667B (zh) 2017-05-31
EP2695355A1 (en) 2014-02-12
BR112013025351A2 (pt) 2016-12-13

Similar Documents

Publication Publication Date Title
JP6316781B2 (ja) バイト範囲リクエストを使用したビデオデータのネットワークストリーミング
JP7142626B2 (ja) メディアストリーミングのためのセグメントチャンクの検索およびアクセス
JP5932070B2 (ja) コード化ビデオデータのネットワークストリーミングのためのメディア表現グループ
JP6612249B2 (ja) メディアデータをストリーミングするためのターゲット広告挿入
CN110089122B (zh) 用于检索媒体数据的方法、媒体装置及计算机可读存储媒体
TWI714602B (zh) 超級本文傳輸協定(http)上動態自適應串流(dash)客戶經驗品質度量之中間軟體傳遞
CN107810624A (zh) 用信号发送用于广播的高速缓存的段
CN110832872B (zh) 使用用于文件格式方框的通用描述符处理媒体数据
JP2016154348A (ja) コーディングされたマルチメディアデータのネットワークストリーミング中の表現の切り替え
CN112154672B (zh) 一种检索媒体数据的方法、设备及可读存储介质
US11321516B2 (en) Processing dynamic web content of an ISO BMFF web resource track
US20170041422A1 (en) Method and system for retrieving a content manifest in a network
CN110870282A (zh) 使用网络内容的文件轨处理媒体数据
JP2019525677A (ja) メディアデータストリーミングのためのseiトラックのシステムレベルシグナリング
van Brandenburg et al. Models for HTTP-adaptive-streaming-aware content distribution network interconnection (CDNI)
KR20160138044A (ko) 미디어 데이터를 스트리밍하기 위한 목표된 광고 삽입
Anadiotis et al. Information‐centric networking for multimedia, social and peer‐to‐peer communications
Ciubotaru et al. Network communications protocols and services

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170927

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180328

R150 Certificate of patent or registration of utility model

Ref document number: 6316781

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250