JP5652971B2 - デジタルコンテンツの配布のための適応型ストリーミング - Google Patents

デジタルコンテンツの配布のための適応型ストリーミング Download PDF

Info

Publication number
JP5652971B2
JP5652971B2 JP2013128908A JP2013128908A JP5652971B2 JP 5652971 B2 JP5652971 B2 JP 5652971B2 JP 2013128908 A JP2013128908 A JP 2013128908A JP 2013128908 A JP2013128908 A JP 2013128908A JP 5652971 B2 JP5652971 B2 JP 5652971B2
Authority
JP
Japan
Prior art keywords
buffer
time
content
digital content
playback
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
JP2013128908A
Other languages
English (en)
Other versions
JP2013219819A (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.)
Netflix Inc
Original Assignee
Netflix 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 Netflix Inc filed Critical Netflix Inc
Publication of JP2013219819A publication Critical patent/JP2013219819A/ja
Application granted granted Critical
Publication of JP5652971B2 publication Critical patent/JP5652971B2/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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44209Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
    • 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/61Network physical structure; Signal processing
    • H04N21/6156Network physical structure; Signal processing specially adapted to the upstream path of the transmission network
    • H04N21/6175Network physical structure; Signal processing specially adapted to the upstream path of the transmission network involving transmission via Internet
    • 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/637Control signals issued by the client directed to the server or network components
    • H04N21/6373Control signals issued by the client directed to the server or network components for rate control, e.g. request to the server to modify its transmission rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

関連出願の相互参照
[0001]本出願は、参照により本明細書に組み込まれている2009年7月24日出願の米国特許出願第12/509,365号の利益を主張する。
発明の背景
発明の分野
[0002]本発明の実施形態は、一般にデジタルメディアに関し、より詳細には、デジタルコンテンツの配布のための適応型ストリーミング(adaptive streaming)に関する。
関連技術の説明
[0003]デジタルコンテンツ配布システムは、従来、コンテンツサーバ、コンテンツプレーヤ、及びコンテンツサーバをコンテンツプレーヤに接続する通信ネットワークを含む。コンテンツサーバは、コンテンツサーバからコンテンツプレーヤにダウンロードすることができるデジタルコンテンツファイルを格納するように構成される。各デジタルコンテンツファイルは、例えば、ユーザに親しまれている「風と共に去りぬ」など、特定の識別タイトルに対応する。デジタルコンテンツファイルは、通常、再生年代順に従って編成された一連のコンテンツデータを含んでおり、音声データ、ビデオデータ、又はその組み合わせを備え得る。
[0004]コンテンツプレーヤは、再生するためのタイトルを選択するユーザ要求に応答して、デジタルコンテンツファイルをダウンロードし、再生するように構成される。デジタルコンテンツファイルを再生するプロセスは、音声データ及びビデオデータを、スピーカサブシステム及びビデオサブシステムを有するディスプレイシステムを駆動することができる音声信号及びビデオ信号にデコードし、レンダリングすることを含む。再生は通常、当分野で「ストリーミング」として知られている技術を伴い、それによって、コンテンツサーバは、デジタルコンテンツファイルをコンテンツプレーヤに順次送信し、デジタルコンテンツファイルを備えるコンテンツデータが受信される間に、コンテンツプレーヤがデジタルコンテンツファイルを再生する。通信ネットワーク内での可変の待ち時間及び帯域幅を考慮に入れるために、コンテンツバッファは、コンテンツデータが実際に再生される前に、入って来るコンテンツデータを待ち行列に入れる。使用可能な帯域幅をより低減させるネットワーク輻輳の間、コンテンツデータはコンテンツバッファにあまり追加されず、ある再生ビットレートでの再生をサポートするために、コンテンツデータが待ち行列から取り出されるにつれて、コンテンツバッファは空になり得る。しかし、ネットワーク帯域幅が高い間、コンテンツバッファが再度概ねいっぱいになるまで、コンテンツバッファは補充され、追加のバッファ時間が追加される。実用的なシステムにおいて、コンテンツバッファは、数秒から1分以上にわたるタイムスパンに対応するコンテンツデータを待ち行列に入れることができる。
[0005]コンテンツサーバに格納された各デジタルコンテンツファイルは、通常、特定の再生ビットレートのためにコード化されている。再生を開始する前に、コンテンツプレーヤは、コンテンツサーバから使用可能な帯域幅を測定することができ、測定された使用可能な帯域幅によってサポートすることができるビットレートを有するデジタルコンテンツファイルを選択することができる。再生品質を最大にするために、従来、最高ビットレートが測定された帯域幅を超えないデジタルコンテンツファイルが選択される。通信ネットワークがビットレート要件を満たしながら選択されたデジタルコンテンツファイルをダウンロードするのに十分な帯域幅を提供することができる範囲で、再生は申し分なく進行する。しかし、実際には、通信ネットワークにおいて使用可能な帯域幅は、通信ネットワークに接続された異なるデバイスが独立したタスクを実行するにつれて絶えず変化している。通信ネットワークにおいて使用可能な帯域幅がかなり長い期間の間再生ビットレート要件を満たすのに必要なレベルを下回る場合、コンテンツバッファは、完全に空になり、その結果、当分野でバッファアンダーランとして知られている状態になる。バッファアンダーランが生じる場合、再生は、きわめて信頼できなくなり、又はまったく停止し、全体的な再生品質をかなり低減させる可能性がある。従来の通信ネットワーク上でのトラフィックが予測不可能な傾向にあるので、輻輳及び帯域幅の低減がよく起こり、従来のストリーミング再生システムに負の影響を与える。
[0006]ストリーミング再生システムにおけるバッファアンダーランの可能性を低減するための1つの技術は、再生のために控えめに低いビットレートを選択することである。しかし、この際、より高品質の経験が可能であった場合でも、ユーザは、結局低品質の再生経験で終わる。バッファアンダーランの可能性を低減するための別の技術は、再生を開始する前に全体的なデジタルコンテンツファイルの比較的大きい部分をプリバッファリングすることである。しかし、この技術は必然的に、再生が始まり得る前に、ユーザが比較的長い時間待つ必要があり、したがって、全体的な再生経験を低下させる。
[0007]上記が示すように、当分野では、従来の手法より高品質の再生経験を提供するコンテンツプレーヤにデジタルコンテンツファイルをダウンロードするための手法が必要である。
[0008]本発明の一実施形態は、コンテンツサーバからコンテンツプレーヤにデジタルコンテンツのファイルを適応的にダウンロードするための方法を記載する。この方法は、コンテンツプレーヤ内のコンテンツバッファに、ファイル内に含まれる第1のコード化済みシーケンスから少なくとも1単位のデジタルコンテンツをダウンロードするステップであり、ファイルが複数のコード化済みシーケンスを含み、各コード化済みシーケンスが、再生のためにコンテンツバッファに格納されたデジタルコンテンツにアクセスすることができる異なるビットレートに対応し、第1のコード化済みシーケンスが、再生のためにコンテンツバッファに格納されたデジタルコンテンツにアクセスすることができる最低のビットレートに対応する、ステップと、デジタルコンテンツのファイルの中の1単位又は複数単位のデジタルコンテンツを、依然として再生のためにダウンロードし、バッファに入れなければならないことを決定するステップと、次の単位のデジタルコンテンツをダウンロードするための複数のコード化済みシーケンスに含まれる次のコード化済みシーケンスを決定するステップと、次の単位のデジタルコンテンツを、再生のために、次のコード化済みシーケンスからコンテンツバッファにダウンロードするステップとを含む。
[0009]開示された方法の1つの利点は、再生ビットレート及び使用可能なダウンロード帯域幅に基づく可能なバッファアンダーランが追跡され、バッファアンダーラン状態を回避しながら、複数単位のデジタルコンテンツが可能な限り最高の画質でダウンロードされることである。
[0010]他の実施形態は、それだけには限定されないが、処理ユニットが開示された方法の1つ又は複数の態様を実施することができる命令を含むコンピュータ可読媒体、及び開示された方法の1つ又は複数の態様を実施するように構成されたシステムを含む。
[0011]本発明の上記の特徴を詳しく理解することができるように、実施形態を参照して上記で簡単に要約した本発明のより特定の説明を行い、その一部が添付の図面に図示される。しかし、添付の図面は本発明の代表的な実施形態のみを示しており、したがって、本発明は、他の等しく有効な実施形態を認めることができるため、その範囲を制限するものと見なされないことに留意されたい。
[0012] 本発明の1つ又は複数の態様を実施するように構成されたコンテンツ配布システムを示す図である。 [0013] 本発明の一実施形態による図1のコンテンツプレーヤのより詳細な図である。 [0014] 本発明の一実施形態による図1のコンテンツサーバのより詳細な図である。 [0015] 本発明の一実施形態による図1のシーケンスヘッダインデックスのより詳細な図である。 [0016] 本発明の一実施形態による、ある評価ポイントで、2つの異なるビットレートにおいて実行されるバッファ予測アルゴリズムの結果を示すグラフである。 [0017] 本発明の一実施形態による、デジタルコンテンツファイルと関連したデジタルコンテンツのバッファリング及び再生のデータフローを示す図である。 [0018] 本発明の一実施形態による、再生のためにコンテンツデータをコンテンツバッファに適応的にバッファリングするための方法ステップのフロー図である。 [0019] 本発明の一実施形態による、再生のためにバッファリングすべきコード化済みシーケンスを変更するための方法ステップのフロー図である。 [0020] 本発明の一実施形態による、現在のビットレートで再生を完了する実行可能性を予測するための方法ステップのフロー図である。 [0021] 本発明の一実施形態による、図7Aにおける変数を初期化するステップを実行するための方法ステップのフロー図である。 [0022] 本発明の一実施形態による、図7Aにおけるコンテンツバッファ状態を推定するステップを実行するための方法ステップのフロー図である。 [0023] 本発明の一実施形態による、図7Aにおけるコンテンツバッファ状態を推定するステップを実行するための方法ステップのフロー図である。
詳細な説明
[0024]以下の説明では、本発明をより完全に理解できるように、多数の特定の詳細について記載する。しかし、本発明をこれらの特定の詳細のうちの1つ又は複数なしに実施することができることは、当業者にとって明らかである。他の例では、本発明をわかりにくくすることを避けるために、周知の特徴については記載していない。
[0025]図1は、本発明の1つ又は複数の態様を実施するように構成されたコンテンツ配布システム100を示す。示すように、コンテンツ配布システム100は、それだけには限定されないが、コンテンツプレーヤ110、1つ又は複数のコンテンツサーバ130、及び通信ネットワーク150を含む。コンテンツ配布システム100は、コンテンツディレクトリサーバ120も含み得る。一実施形態において、1つ又は複数のコンテンツサーバ130は、コンテンツ配布ネットワーク(CDN)140を備える。
[0026]通信ネットワーク150は、コンテンツプレーヤ110と1つ又は複数のコンテンツサーバ130との間のデータ通信を容易にするように構成された、ルータやスイッチなど複数のネットワーク通信システムを含む。周知のインターネット通信ネットワークを配置する際に実施される技術を含めて、通信システム150を構築するための技術的に実行可能な多くの技術があることを当業者であれば認識されよう。
[0027]コンテンツディレクトリサーバ120は、タイトルルックアップ要求152を受信し、ファイル位置データ154を生成するように構成されたコンピュータシステムを備える。タイトルルックアップ要求152は、それだけには限定されないが、ユーザによって要求される動画又は歌の名前を含む。コンテンツディレクトリサーバ120は、特定の再生ビットレートでコード化される所与のタイトルのビデオストリームを、関連するコンテンツサーバ130内にあるデジタルコンテンツファイル132にマップするデータベース(図示せず)に対する問い合わせを行う。ファイル位置データ154は、それだけには限定されないが、デジタルコンテンツファイル132をコンテンツプレーヤ110に提供するように構成されたコンテンツサーバ130への参照を含む。
[0028]コンテンツサーバ130は、コンテンツプレーヤ110からのデジタルコンテンツファイル132についてのダウンロード要求に応えるように構成されたコンピュータシステムである。デジタルコンテンツファイルは、コンピュータシステムからアクセス可能な大容量記憶システムに存在し得る。大容量記憶システムは、それだけには限定されないが、直接接続されたストレージ、ネットワーク接続されたファイルストレージ、又はネットワーク接続されたブロックレベルストレージを含み得る。デジタルコンテンツファイル132は、任意の技術的に実行可能な技術を使用して、フォーマットされ、大容量記憶システムに格納され得る。デジタルコンテンツファイル132をコンテンツサーバ130からコンテンツプレーヤ110にダウンロードするために、データ転送プロトコル、例えば周知のハイパーテキストトランスファプロトコル(HTTP)を使用することができる。
[0029]各タイトル(動画、歌、又は他の形のデジタルメディア)は、1つ又は複数のデジタルコンテンツファイル132に関連付けられる。各デジタルコンテンツファイル132は、それだけには限定されないが、シーケンスヘッダインデックス114、音声データ、及びコード化済みシーケンスを備える。コード化済みシーケンスは、特定の再生ビットレートにコード化された完全なバージョンのビデオデータ対応のタイトルを備える。例えば、所与のタイトルは、デジタルコンテンツファイル132−1、デジタルコンテンツファイル132−2、及びデジタルコンテンツファイル132−3と関連付けられ得る。デジタルコンテンツファイル132−1は、シーケンスヘッダインデックス114−1、及び約250キロビット/秒(Kbps)の平均再生ビットレートにコード化されたコード化済みシーケンスを備え得る。デジタルコンテンツファイル132−2は、シーケンスヘッダインデックス114−2、及び約1000Kbpsの平均再生ビットレートにコード化されたコード化済みシーケンスを備え得る。同様に、デジタルコンテンツファイル132−3は、シーケンスヘッダインデックス114−3、及び約1500Kbpsの平均再生ビットレートにコード化されたコード化済みシーケンスを備え得る。1500Kbpsのコード化済みシーケンスは、より高品質の再生を可能にし、したがって、250Kbpsのコード化済みシーケンスに対して、再生にはより望ましい。
[0030]デジタルコンテンツファイル132内のコード化済みシーケンスは、固定スパンの再生時間を表す複数単位のビデオデータとして編成される。全再生時間は、それぞれ1つの再生時間の固定スパンに対応する一連のタイムスロットに編成される。所与のタイムスロットの間に、1単位のビデオデータが、デジタルコンテンツファイル132と関連した再生ビットレートについて、デジタルコンテンツファイル132内で表される。可変ビットレートのコード化が使用され得るため、再生時間の固定スパンに直接対応するにもかかわらず、各単位のビデオデータはサイズが可変とすることができる。上記の例について、1500Kbpsの再生ビットレートにコード化されるコード化済みシーケンスを備えるデジタルコンテンツファイル132−1内の各タイムスロットは、1500Kbpsでコード化される1単位のビデオデータを含む。一実施形態において、複数単位の音声データは、タイムスロットごとに固定ビットレートでコード化され、デジタルコンテンツファイル132に格納される。
[0031]複数単位のビデオデータ及び複数単位の音声データは、各タイムスロットの最初に開始する、時間同期の再生を提供するように構成される。音声再生又はビデオ再生のいずれかが不足することを回避するために、音声バッファ244及びビデオバッファ246が相当する期間の再生時間をそれぞれ格納することを保証するために、複数単位の音声データ及び複数単位のビデオデータは、一般に交互のパターンでダウンロードされる。
[0032]各コード化済みシーケンスは、上記に定義した通り、デジタルコンテンツ「ストリーム」を備えることを当業者であれば容易に理解されよう。さらに、特定のコード化済みシーケンスをコンテンツサーバ130からコンテンツプレーヤ110にダウンロードするプロセスは、特定の再生ビットレートで再生のためにコンテンツプレーヤ110にデジタルコンテンツを「ストリームすること」を備える。
[0033]コンテンツプレーヤ110は、コンピュータシステム、セットトップボックス、携帯電話などのモバイルデバイス、又はネットワーク接続を有し、それぞれビデオフレームを提示し、音響出力を生成するための表示装置及びスピーカ装置に結合される、又は表示装置及びスピーカ装置を含む他の任意の技術的に実行可能なコンピューティングプラットフォームを備え得る。後でより詳細に説明するように、コンテンツプレーヤ110は、選択されたビットレートについて、1単位のビデオデータをダウンロードし、通信ネットワーク150内の主だった帯域幅状態に基づいて、選択されたビットレートを、その後ダウンロードされる複数単位のビデオデータに適応させるように構成される。
[0034]通信ネットワーク150内で使用可能な帯域幅が制限されるようになるにつれて、コンテンツプレーヤは、その後のタイムスロットに対応してまだダウンロードされていない複数単位のビデオデータのために、より低いビットレートのコード化を選択することができる。使用可能な帯域幅が増加するにつれて、より高いビットレートのコード化を選択することができる。
[0035]上記の説明において、1つのコンテンツプレーヤ110及び1つのCDN140を含むコンテンツ配布システム100が示されているが、図1のアーキテクチャは単に本発明の実施形態例を企図するにすぎないことを当業者であれば理解されよう。他の実施形態は、任意の数のコンテンツプレーヤ110及び/又はCDN140を含むことができる。したがって、図1は、決して本発明の範囲を制限するものではない。
[0036]図2は、本発明の一実施形態による図1のコンテンツプレーヤ110のより詳細な図である。示すように、コンテンツプレーヤ110は、それだけには限定されないが、中央演算処理装置(CPU)210と、グラフィックサブシステム212と、入出力(I/O)デバイスインターフェース214と、ネットワークインターフェース218と、相互接続220と、メモリサブシステム230とを含む。コンテンツプレーヤ110は、大容量記憶装置216も含み得る。
[0037]CPU210は、メモリサブシステム230に格納されたプログラミング命令を取り出し、実行するように構成される。同様に、CPU210は、メモリサブシステム230にアプリケーションデータを格納し、メモリサブシステム230にあるアプリケーションデータを取り出すように構成される。相互接続220は、CPU210、グラフィックサブシステム212、I/Oデバイスインターフェース214、大容量記憶装置216、ネットワークインターフェース218、及びメモリサブシステム230の間の例えばプログラミング命令及びアプリケーションデータなどデータの送信を容易にするように構成される。
[0038]グラフィックサブシステム212は、ビデオデータの複数のフレームを生成し、ビデオデータの複数のフレームを表示装置250に送信するように構成される。一実施形態において、グラフィックサブシステム212は、CPU210とともに、集積回路に統合される。表示装置250は、表示する画像を生成するための任意の技術的に実行可能な手段を備え得る。例えば、表示装置250は、液晶式ディスプレイ(LCD)技術、陰極線技術、及び発光ダイオード(LED)ディスプレイ技術(有機又は無機)を使用して製造することができる。入出力(I/O)デバイスインターフェース214は、相互接続220を介してユーザI/O装置252から入力データを受信し、入力データをCPU210に送信するように構成される。例えば、ユーザI/O装置252は、1つ又は複数のボタン、キーボード、及びマウス又は他のポインティングデバイスを備え得る。I/Oデバイスインターフェース214は、電気音声出力信号を生成するように構成された音声出力ユニットも含む。ユーザI/O装置252は、電気音声出力信号に応答して音響出力を生成するように構成されたスピーカを含む。代替の実施形態では、表示装置250は、スピーカを含み得る。テレビは、ビデオフレームを表示し、音響出力を生成することができる、当分野で知られているデバイスの一例である。例えばハードディスクドライブ又はフラッシュメモリ記憶ドライブなど、大容量記憶装置216は、不揮発性データを格納するように構成される。ネットワークインターフェース218は、通信ネットワーク150を介してデータのパケットを送信及び受信するように構成される。一実施形態において、ネットワークインターフェース218は、周知のイーサネット標準を使用して通信するように構成される。ネットワークインターフェース218は、相互接続220を介してCPU210に結合される。
[0039]メモリサブシステム230は、オペレーティングシステム232、ユーザインターフェース234、及び再生アプリケーション236を備えるデータ及びプログラミング命令を含む。オペレーティングシステム232は、例えばネットワークインターフェース218、大容量記憶装置216、I/Oデバイスインターフェース214、及びグラフィックサブシステム212を含むハードウェアデバイスの管理など、システム管理機能を実行する。また、オペレーティングシステム232は、ユーザインターフェース234及び再生アプリケーション236のプロセス及びメモリ管理モデルを提供する。ユーザインターフェース234は、コンテンツプレーヤ110とのユーザ対話のために、例えばウィンドウ及びオブジェクトメタファなど、特定の構造を提供する。当業者であれば、当分野で周知の、及びコンテンツプレーヤ110への組み込みに適している様々なオペレーティングシステム及びユーザインターフェースを認識されよう。
[0040]再生アプリケーション236は、ネットワークインターフェース218を介してコンテンツサーバ130からデジタルコンテンツファイル132を取り出し、グラフィックサブシステム212を介してデジタルコンテンツファイル132を再生するように構成される。グラフィックサブシステム212は、レンダリングされたビデオ信号を表示装置250に送信するように構成される。通常の動作において、再生アプリケーション236は、特定のタイトルを再生する旨のユーザからの要求を受信する。次いで、再生アプリケーション236は、要求されたタイトルと関連したデジタルコンテンツファイル132の位置を突き止め、要求されたタイトルと関連した各デジタルコンテンツファイル132は、異なる再生ビットレートにコード化されたコード化済みシーケンスを含む。一実施形態において、再生アプリケーション236は、タイトルルックアップ要求152をコンテンツディレクトリサーバ120に対して掲示することによって、デジタルコンテンツファイル132の位置を突き止める。コンテンツディレクトリサーバ120は、タイトルルックアップ要求152に、要求されたタイトルと関連した各デジタルコンテンツファイル132のファイル位置データ154で答える。各ファイル位置データ154は、要求されたデジタルコンテンツファイル132が存在する、関連するコンテンツサーバ130への参照を含む。タイトルルックアップ要求152は、要求されたタイトルの名前、又はタイトルに関する他の識別情報を含み得る。再生アプリケーション236が要求されたタイトルと関連したデジタルコンテンツファイル132の位置を突き止めた後、再生アプリケーション236は、コンテンツサーバ130から要求されたタイトルと関連した各デジタルコンテンツファイル132と関連したシーケンスヘッダインデックス114をダウンロードする。図4Aでより詳細に記載する、デジタルコンテンツファイル132と関連したシーケンスヘッダインデックス114は、デジタルコンテンツファイル132に含まれるコード化済みシーケンスに関連した情報を含む。
[0041]一実施形態において、再生アプリケーション236は、再生のための起動時間を最小化するために最低の再生ビットレートにコード化されたコード化済みシーケンスを備える要求されたタイトルと関連したデジタルコンテンツファイル132をダウンロードし始める。単に説明上、デジタルコンテンツファイル132−1は、要求されたタイトルと関連付けられ、最低の再生ビットレートにコード化されたコード化済みシーケンスを備える。要求されたデジタルコンテンツファイル132−1は、先入れ先出しキューとして働くように構成されるコンテンツバッファ112にダウンロードされる。一実施形態において、ダウンロードされたデータの各単位は、1単位のビデオデータ、又は1単位の音声データを備える。要求されたデジタルコンテンツファイル132−1と関連した複数単位のビデオデータがコンテンツプレーヤ110にダウンロードされるにつれて、複数単位のビデオデータはコンテンツバッファ112に押し込まれる。同様に、要求されたデジタルコンテンツファイル132−1と関連した複数単位の音声データがコンテンツプレーヤ110にダウンロードされるにつれて、複数単位の音声データはコンテンツバッファ112に押し込まれる。一実施形態において、複数単位のビデオデータは、コンテンツバッファ112内のビデオバッファ246に格納され、複数単位の音声データは、この場合もコンテンツバッファ112内の音声バッファ224に格納される。
[0042]ビデオデコーダ248は、複数単位のビデオデータをビデオバッファ246から読み出し、期間において再生時間の固定スパンに対応する一連のビデオフレームにレンダリングする。ビデオバッファ246から1単位のビデオデータを読み出すことは、ビデオバッファ246(及びコンテンツバッファ112から)の待ち行列から1単位のビデオデータを効果的に取り出す。ビデオフレームのシーケンスは、グラフィックサブシステム212によって処理され、表示装置250に送信される。
[0043]オーディオデコーダ242は、複数単位の音声データを音声バッファ244から読み出し、通常、ビデオフレームのシーケンスに時間的に同期して、一連の音声サンプルにレンダリングする。一実施形態において、音声サンプルのシーケンスはI/Oデバイスインターフェース214に送信され、I/Oデバイスインターフェース214は音声サンプルのシーケンスを電気音声信号に変換する。電気音声信号は、ユーザI/O装置252内のスピーカに送信され、ユーザI/O装置252は、その送信に応答して、音響出力を生成する。
[0044]再生が開始されると、再生アプリケーション236は、最低の使用可能なビットレートにコード化される複数単位のビデオデータを要求し、それによって、ユーザによって認められる開始時刻が最小化される。しかし、通信ネットワーク150内の帯域幅状態が許容するなら、再生アプリケーション236は、より高いビットレートにコード化される複数単位のビデオデータを要求することができ、それによって、再生アプリケーション236によって最終的に達成される最高レベルの再生品質に相応した起動の遅延をもたらすことなく、時間にわたって再生品質を向上させる。通信ネットワーク150内の帯域幅状態が再生中に悪化する場合、再生アプリケーション236は、より低いビットレートにコード化される次の複数単位のビデオデータを要求することができる。一実施形態において、再生アプリケーション236は、最近ダウンロードされた1単位又は複数単位のビデオデータにわたって計算される帯域幅の評価に基づいて、どのコード化されたビットレートが1単位のビデオデータの順次の各ダウンロードに使用されるべきかを決定する。
[0045]図3は、本発明の一実施形態による図1のコンテンツサーバ130のより詳細な図である。コンテンツサーバ130は、それだけには限定されないが、中央演算処理装置(CPU)310と、ネットワークインターフェース318と、相互接続320と、メモリサブシステム330と、大容量記憶装置316とを含む。コンテンツサーバ130は、I/Oデバイスインターフェース314も含み得る。
[0046]CPU310は、メモリサブシステム330に格納されたプログラミング命令を取り出し、実行するように構成される。同様に、CPU310は、メモリサブシステム330にあるアプリケーションデータを格納し、取り出すように構成される。相互接続320は、CPU310、I/Oデバイスインターフェース314、大容量記憶装置316、ネットワークインターフェース318、及びメモリサブシステム330の間の例えばプログラミング命令及びアプリケーションデータなどデータの送信を容易にするように構成される。
[0047]大容量記憶装置316は、デジタルコンテンツファイル132−1〜132−Nを格納する。デジタルコンテンツファイル132は、任意の技術的に実行可能なファイルシステムを使用して任意の技術的に実行可能なメディアに格納され得る。例えば、大容量記憶装置316は、従来のファイルシステムを組み込む独立ディスク冗長アレイ(RAID)システムを備え得る。
[0048]メモリサブシステム330は、オペレーティングシステム332、ユーザインターフェース334、及びファイルダウンロードアプリケーション336を備えるデータ及びプログラミング命令を含む。オペレーティングシステム332は、例えばネットワークインターフェース318、大容量記憶装置316、及びI/Oデバイスインターフェース314を含むハードウェアデバイスの管理など、システム管理機能を実行する。また、オペレーティングシステム332は、ユーザインターフェース334及びファイルダウンロードアプリケーション336のプロセス及びメモリ管理モデルを提供する。ユーザインターフェース334は、コンテンツサーバ130とのユーザ対話のために、例えばウィンドウ及びオブジェクトメタファ又はコマンドラインインターフェースなど、特定の構造を提供する。ユーザは、ユーザインターフェース334を使用して、コンテンツサーバの機能を管理することができる。一実施形態において、ユーザインターフェース334は、コンテンツサーバ130の動作を管理するための管理ウェブページを提示する。当業者であれば、当分野で周知の、及びコンテンツプレーヤ130への組み込みに適している様々なオペレーティングシステム及びユーザインターフェースを認識されよう。
[0049]ファイルダウンロードアプリケーション336は、ファイルダウンロード操作又は操作の組を介して、デジタルコンテンツファイル132−1〜132−Nのコンテンツプレーヤ110への転送を容易にするように構成される。ダウンロードされたデジタルコンテンツファイル132は、ネットワークインターフェース318によって、通信ネットワーク150を介してコンテンツプレーヤ110に送信される。一実施形態において、各デジタルコンテンツファイル132のファイルコンテンツは、任意の順序(当分野で「ランダムアクセス」として知られている)でアクセスされ得る。本明細書において上述したように、各デジタルコンテンツファイル132は、シーケンスヘッダインデックス114、及びコード化済みシーケンスを含む。コード化済みシーケンスは、特定のビットレートにコード化されたフルバージョンの所与の動画又は歌を備え、コード化済みシーケンスと関連したビデオデータは、複数単位のビデオデータに分割される。各単位のビデオデータは、特定のスパンの再生時間に対応し、ビデオデータの単位に格納されたビデオデータのサイズ及び解像度を指定するシーケンスヘッダを含むフレームで開始する。
[0050]図4Aは、本発明の一実施形態による図1のシーケンスヘッダインデックス114のより詳細な図である。シーケンスヘッダインデックス114は、ビデオビットレートプロフィール452を含み、任意の技術的に実行可能なやり方で埋めることができるデータ構造である。
[0051]デジタルコンテンツファイル132に含まれるシーケンスヘッダインデックス114は、デジタルコンテンツファイル132にも含まれるコード化済みシーケンスに関連した情報を指定する。ビデオビットレートプロフィール452は、コード化済みシーケンスの複数単位のビデオデータと関連した異なるシーケンスヘッダの位置及びタイムスタンプオフセットを指定する対応する1組のエントリ464を含む。通常、コード化済みシーケンスにおけるシーケンスヘッダは、(例えば3秒など)コード化済みシーケンス内で予測可能なタイムスタンプオフセットに位置する。所与のエントリ464は、ビデオビットレートプロフィール452と関連したコード化済みシーケンスの1単位のビデオデータ内に含まれる特定のシーケンスヘッダのタイムスタンプオフセット及び位置を示す。例えば、エントリ464−1は、コード化済みシーケンスの第1の単位のビデオデータと関連したシーケンスヘッダのタイムスタンプオフセット及び位置を示す。エントリ464−2は、同じコード化済みシーケンスの第2の単位のビデオデータと関連したシーケンスヘッダのタイムスタンプオフセット及び位置を示す。重要なことに、エントリ464の組に含まれるタイムスタンプオフセットに基づいて、エントリ464−Kと関連した現在の再生位置から再生の完了までの所与のコード化済みシーケンスを備えるバイトがいくつあるかを特徴付ける総バイト数を、計算することができる。
[0052]拡張されたシーケンスと関連した音声データも、デジタルコンテンツファイル132に格納される。一実施形態において、音声データは、固定ビットレートのコード化を有する。代替実施形態において、音声データに可変ビットレートコード化技術が適用され、シーケンスヘッダインデックス114に音声ビットレートプロフィール472が含まれる。音声ビットレートプロフィール472は、それぞれの再生時間に音声データのそれぞれの単位ごとにタイムスタンプオフセット及びシーケンスヘッダ位置を格納するように構成されるエントリ484を含む。
[0053]図4Bは、本発明の一実施形態による、ある評価ポイント444で、2つの異なるビットレート410、412において実行されるバッファ予測アルゴリズムの結果を示すグラフ401である。正の縦軸に沿って示されるバッファ時間430は、図1のコンテンツバッファ112内にどれくらい有効な再生時間が格納されるかを示す。負の縦軸に沿って示されるバッファアンダーラン時間434は、バッファアンダーラン420中の同等の時間の不足を示す。評価ポイント444で、図2の再生アプリケーション236は、現在使用可能な帯域幅が与えられると、再生が現在の再生ビットレート410で完了することができるかどうかを推定する。推定されたバッファ時間430が再生の完了の前に任意の再生時440に現在のビットレート410についてのバッファアンダーラン420を示す場合、現在のビットレートを維持することは実行不可能であるが、より低いビットレート412は実行可能であり得る。より低いビットレートは、現在使用可能な帯域幅が与えられると、再生をうまく完了することができるより低いビットレートを見つけるためにテストされる。一実施形態において、再生アプリケーション236は、再生の間、例えば3秒ごとなど周期的に、再生が、評価ポイント444で表される現在の再生ビットレートで完了することができるかどうかを推定する。
[0054]示すように、バッファ時間430は、ビットレート410については、将来のある時点でバッファアンダーランがあること、ビットレート412については、バッファアンダーランがないことを推定する。こうしたシナリオでは、現在使用可能な帯域幅が与えられると、ビットレート410で再生を完了することは、実行不可能であり、一方、現在使用可能な帯域幅が与えられると、ビットレート412で再生を完了することは、実行可能であるように思える。
[0055]特定のコード化済みシーケンスの実行可能性を予測するとき、再生アプリケーション236は、単一のコード化済みシーケンス、及びしたがって、単一の再生ビットレート、又は「集計されたコード化済みシーケンス(aggregate encoded sequence)」を、図5〜図7においてより詳細に記載される予測アルゴリズムへの入力として使用することを選択することができる。集計されたコード化済みシーケンスは、1つ又は複数のコード化済みシーケンスの組み合わせ、及び再生のために将来使用され得る1つ又は複数のコード化済みシーケンスについての対応する再生ビットレートを表す。例えば、再生アプリケーション236が高ビットレートのコード化済みシーケンスを再生している場合、再生アプリケーション236は、ダウンロードが一定の閾値期間の間続くことができる場合、(今のところ)コード化済みシーケンスが実行可能であると予測することができる。
[0056]閾値期間の後、再生アプリケーション236は、追加の期間の間、現在のコード化済みシーケンスをバッファリングし続けることができ、その後低ビットレートのコード化済みシーケンスに切り替えることができる。このことは、現在のコード化済みシーケンスの一部を、より低いビットレートのコード化済みシーケンスと関連した時間の後の部分と集計し、結果として得られた集計されたコード化済みシーケンス、すなわち、2つのコード化済みシーケンスの集計の実行可能性を予測することによって達成される。再生アプリケーション236は、予想された切替の方向に応じて、予測計算において2つ以上のコード化済みシーケンスについての全期間の情報を分析することを選択することもできる。例えば、再生アプリケーション236が将来の再生のためにより高いビットレートのコード化済みシーケンスを評価する予定である場合、再生アプリケーション236は、より高いビットレートで実行可能性を確実にするためにより高いビットレートの全コード化済みシーケンスを評価することができる。しかし、再生アプリケーション236は、現在のコード化済みシーケンスである高ビットレートのコード化済みシーケンスを評価している場合、代わりに、より低いビットレートのコード化済みシーケンスへの切替を遅らせるために、現在のコード化済みシーケンスとより低いビットレートのコード化済みシーケンスとの集計における実行可能性を予測することができる。
[0057]図4Cは、本発明の一実施形態による、デジタルコンテンツファイル132と関連したデジタルコンテンツ494のバッファリング及び再生のデータフローを示す。図1のコンテンツサーバ130は、複数単位の音声データ及び複数単位のビデオデータを備える、デジタルコンテンツファイル132のコンテンツデータ494をバッファリングプロセス490に提供する。バッファリングプロセス490は、コンテンツプレーヤ110内で実行されるスレッドとして実施することができる。バッファリングプロセス490は、コンテンツデータ494をダウンロードし、コンテンツバッファ112に書き込むように構成される。バッファリングプロセス490は、コンテンツバッファ112内の音声バッファ244に複数単位の音声データを書き込み、これもまたコンテンツバッファ112内のビデオバッファ246に複数単位のビデオデータを書き込む。一実施形態において、コンテンツバッファ112は、先入れ先出し方式(FIFO)キューとして構築される。再生プロセス492は、これもまたコンテンツプレーヤ110内で実行され、再生のために、コンテンツバッファ112の待ち行列から複数単位の音声データ及び複数単位のビデオデータを取り出す。コンテンツデータ494の連続的な再生を維持するために、コンテンツバッファ112は、再生プロセス492がコンテンツバッファ112において読み出しを実行する必要があるとき、使用可能な少なくとも1単位の音声データ及び1単位のビデオデータを常に有しているものとする。コンテンツバッファ112が空であり、再生プロセス492が読み出しの実行を必要とするとき、図4Bに示すように、バッファアンダーランが生じる。
[0058]図5は、本発明の一実施形態による、再生のためにコンテンツデータをコンテンツバッファ112に適応的にバッファリングするための方法ステップ500のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。
[0059]方法は、ステップ510で開始し、図2の再生アプリケーション236は、デジタルコンテンツファイル132の再生を開始する旨の要求を受信する。ステップ512において、再生アプリケーション236は、図1のコンテンツバッファ112に、最低の使用可能なビットレートでデジタルコンテンツファイル132の1単位又は複数単位のビデオデータをプリバッファリングする。再生アプリケーション236は、コンテンツバッファ112に、対応する1単位又は複数単位の音声データもプリバッファリングする。プリバッファリングは、再生を開始する前に一定量のビデオデータ及び音声データをダウンロードすることを含む。ステップ514において、再生アプリケーション236は、再生を始める。これ以降、新しいデータをコンテンツバッファ112に入れるために方法ステップ500が実行される間に、コンテンツバッファ112からデータをレンダリングし、表示するために再生スレッドが実行される。一実施形態において、再生スレッドは、再生アプリケーション236の一部として実行される。
[0060]ステップ520において、再生アプリケーション236は、ユーザシーク要求が受信されたかどうかを決定する。ステップ520で、ユーザシーク要求が受信された場合、方法はプリバッファリングのためにステップ512に戻る。しかし、ステップ520で、ユーザシーク要求が受信されていない場合、方法はステップ522に進む。ステップ522で、再生アプリケーション236は、音声バッファ244(AudioBuff)内に残っている再生時間がビデオバッファ246(VideoBuff)内に残っている再生時間未満であるかどうかを決定する。音声バッファ244内に残っている再生時間がビデオバッファ246内に残っている再生時間以上であるとき、より多くの単位のビデオデータが再生アプリケーション236によって再生のために必要とされる。音声バッファ244内に残っている再生時間がビデオバッファ246内に残っている再生時間未満であるとき、より多くの単位の音声データが再生アプリケーション236によって再生のために必要とされる。こうしたやり方で、再生アプリケーション236は、デジタルコンテンツファイル132の複数単位のビデオデータ及び複数単位の音声データのダウンロードのバランスをとる。
[0061]ステップ522で、音声バッファ244内に残っている再生時間がビデオバッファ246内に残っている再生時間以上である場合、方法はステップ530に進む。ステップ530で、再生アプリケーション236は、現在再生しているビデオデータの単位についての一連のタイムスロットに対応するビデオインデックス(VideoIndex)が、現在再生されているデジタルコンテンツファイル132のビデオデータ(VideoUnits)の単位の合計数未満かどうかを決定する。デジタルコンテンツファイル132のビデオデータの単位の合計数を、デジタルコンテンツファイル132と関連したシーケンスヘッダインデックス114から取り出すことができる。
[0062]ステップ530で、ビデオインデックスがデジタルコンテンツファイル132のビデオデータの単位の合計数未満である場合、すなわち、デジタルコンテンツファイル132のビデオデータのすべての単位が再生されたわけではない場合、方法はステップ540に進む。ステップ540で、再生アプリケーション236は、図6でより詳細に説明したように、バッファアンダーラン予測に基づいて、次の複数単位のビデオデータをバッファリングするための次のコード化済みシーケンスを決定する。次のコード化済みシーケンスは、より高いビットレートのコード化済みシーケンス、より低いビットレートのコード化済みシーケンス、又は現在のコード化済みシーケンスと同じコード化済みシーケンスでもよい。ステップ542で、再生アプリケーション236は、決定された次のコード化済みシーケンスに基づいて、1単位のビデオデータをダウンロードし、コンテンツバッファ112内のビデオバッファ246にその単位のビデオデータをバッファリングする。
[0063]ステップ530に戻って、ビデオインデックスが現在再生されているデジタルコンテンツファイル132のビデオデータの単位の合計数以上であると再生アプリケーション236が決定した場合、再生アプリケーション236はビデオデータの単位をそれ以上必要とせず、方法はステップ590で終了する。
[0064]ステップ522に戻って、音声バッファ244内に残っている時間がビデオバッファ246内に残っている時間未満であると再生アプリケーション236が決定した場合、再生アプリケーション236は再生のためにより多くの単位の音声データを必要し、方法はステップ550に進む。ステップ550で、再生アプリケーション236は、現在再生している音声データの単位についての一連のタイムスロットに対応する音声インデックス(AudioIndex)が、現在再生されているデジタルコンテンツファイル132の音声データ(AudioUnits)の単位の合計数未満かどうかを決定する。
[0065]ステップ550で、音声インデックスが現在再生されているデジタルコンテンツファイル132の音声データの単位の合計数未満であると再生アプリケーション236が決定した場合、再生アプリケーション236は別の単位の音声データを必要し、方法はステップ552に進む。ステップ552で、再生アプリケーション236は、1単位の音声データをダウンロードし、コンテンツバッファ112内の音声バッファ244にその単位の音声データをバッファリングする。
[0066]しかし、ステップ550で、音声インデックスが現在再生されているデジタルコンテンツファイル132の音声データの単位の合計数以上であると再生アプリケーション236が決定した場合、再生アプリケーション236は音声データの単位をそれ以上必要とせず、方法はステップ590で終了する。
[0067]図6は、本発明の一実施形態による、再生のためにバッファリングすべき次のコード化済みシーケンスを決定するための方法ステップ600のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ600は、図5のステップ540をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。
[0068]方法は、ステップ610で開始し、再生アプリケーション236は、バッファアンダーランなしに完了まで現在のコード化済みシーケンスを再生する実行可能性を予測する。図4B及び図7Aとの関連で記載されている技術など、任意の技術的に実行可能な技術を使用して実行可能性の決定を実施することができることを当業者であれば理解されよう。
[0069]ステップ620で、現在のビットレートに対応する現在のコード化済みシーケンスが実行可能でないと再生アプリケーション236が決定すると、方法はステップ630に進む。ステップ630で、再生アプリケーション236が最低のビットレートのコード化済みシーケンスではないコード化済みシーケンスを現在再生している場合、方法はステップ632に進み、再生アプリケーション236は、現在のビットレートより低いビットレートに対応するコード化済みシーケンスをコード化済みシーケンス候補として選択する。ステップ634で、再生アプリケーション236はコード化済みシーケンス候補を再生する実行可能性を予測し、この場合もまた、このステップは、図7Aにより詳細に記載されている。ステップ640で、コード化済みシーケンス候補が実行可能であると再生アプリケーション236が決定した場合、方法はステップ690で終了し、コード化済みシーケンス候補は、次のコード化済みシーケンスとして戻される。
[0070]ステップ630に戻って、再生アプリケーション236が最低のビットレートに対応するコード化済みシーケンスを表すコード化済みシーケンスを現在再生している場合、方法はステップ690で終了し、現在の(最低の)コード化済みシーケンスが次のコード化済みシーケンスとして戻される。
[0071]ステップ620に戻って、現在のコード化済みシーケンスが実行可能であると再生アプリケーション236が決定した場合、方法はステップ650に進む。ステップ650で、再生アプリケーション236が最高のビットレートのコード化済みシーケンスではないコード化済みシーケンスを現在再生している場合、方法はステップ652に進む。ステップ652で、再生アプリケーション236は、現在のビットレートより高いビットレートに対応するコード化済みシーケンスの実行可能性を予測する。この場合もまた、実行可能性を予測することは、図7Aにより詳細に記載されている。
[0072]ステップ660で、より高いビットレートに対応するコード化済みシーケンスが実行可能であると再生アプリケーション236が決定した場合、方法はステップ662に進む。ステップ662で、再生アプリケーション236は、より高いビットレートのコード化済みシーケンスが次のコード化済みシーケンスとして戻されるように選択する。しかし、ステップ660で、より高いビットレートに対応するコード化済みシーケンスが実行可能でないと再生アプリケーション236が決定した場合、方法はステップ690で終了し、現在のコード化済みシーケンスが次のコード化済みシーケンスとして戻される。
[0073]ステップ650に戻って、再生アプリケーション236が最高のビットレートに対応するコード化済みシーケンスを表すコード化済みシーケンスを現在再生している場合、方法はステップ690で終了し、現在の(最高の)コード化済みシーケンスが次のコード化済みシーケンスとして戻される。
[0074]図7Aは、本発明の一実施形態による、現在のビットレートで再生を完了する実行可能性を予測するための方法ステップ700のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ700は、図6のステップ610、634、及び652をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。
[0075]方法は、ステップ710で開始し、再生アプリケーション236は、AudioIndex、VideoIndex、AudioBuffer、及びVideoBufferを含む1組の変数を初期化する。AudioIndexは、特定のタイムスロットに対応する1単位の音声データを選択するために使用されるインデックスを表す。VideoIndexは、特定のタイムスロットに対応する1単位のビデオデータを選択するために使用されるインデックスを表す。AudioBufferは、音声バッファ244に現在格納されているバッファに入れられた再生時間量を表す。VideoBufferは、ビデオバッファ246に現在格納されているバッファに入れられた再生時間量を表す。AudioIndexは、現在の音声のコード化済みシーケンスの現在の再生状態を表す現在のAudioIndexに初期化される。VideoIndexは、現在のビデオのコード化済みシーケンスの現在の再生状態を表す現在のVideoIndexに初期化される。AudioBufferは、現在のAudioBuffer再生値に初期化される。VideoBufferは、現在のVideoBuffer再生値に初期化される。
[0076]ステップ712で、AudioBufferがVideoBuffer以上であると再生アプリケーション236が決定した場合、音声バッファより少ない再生時間がビデオバッファで使用可能であり、方法はステップ714に進んで、別の単位のビデオデータをダウンロードする影響を推定し始める。ステップ714で、VideoIndexが現在のコード化済みシーケンスのビデオデータの単位の合計数を表すVideoUnits未満であると再生アプリケーション236が決定した場合、再生アプリケーション236は、別の単位のビデオデータをダウンロードする必要があり、方法はステップ720に進む。ステップ720で、コンテンツバッファ112の現在の状態、及び主だった帯域幅の可用性が与えられると、別の単位のビデオデータがコンテンツサーバ130からダウンロードされる場合、再生アプリケーション236は、コンテンツバッファ112の結果として得られた状態を推定する。利点値も期間として計算、測定され、これは、1単位のビデオデータのダウンロードが実行される場合、ビデオバッファ246に追加することができる。利点値は、追加の単位のビデオデータをダウンロードすることと関連した追加の再生時間を表す。ステップ720は、図7Cにより詳細に記載されている。
[0077]ステップ722で、VideoBufferがゼロ以上である場合、ビデオバッファ246におけるバッファアンダーランは、現在予想されておらず、方法はステップ724に進む。ステップ724で、AudioBufferがゼロ以上である場合、音声バッファ244におけるバッファアンダーランは、現在予想されておらず、方法はステップ726に進む。ステップ726で、利点値は、1単位のビデオデータのダウンロードを考慮に入れるために、VideoBuffer変数に追加される。ステップ728で、VideoIndexは、ビデオデータの単位のダウンロードを考慮に入れるために増分される。次のダウンロードは、VideoIndexの増分された値に対応する1単位のビデオデータについてのものである。
[0078]ステップ724に戻って、AudioBufferがゼロ以下であると再生アプリケーション236が決定した場合、音声バッファ244におけるバッファアンダーランが予想され、方法はステップ740で終了し、戻り値は「実行不可能」である。
[0079]ステップ722に戻って、VideoBufferがゼロ以下であると再生アプリケーション236が決定した場合、ビデオバッファ246におけるバッファアンダーランが予想され、方法はステップ740で終了し、戻り値は「実行不可能」である。
[0080]ステップ714に戻って、VideoIndexが現在のコード化済みシーケンスのビデオデータの単位の合計数を表すVideoUnits以上であると再生アプリケーション236が決定した場合、再生アプリケーション236は、別の単位のビデオデータをダウンロードする必要はなく、バッファアンダーランは検出されていない。この時点で、ビデオ及び音声のコード化済みシーケンスのダウンロードを、バッファアンダーランなしで実行することができるとアプリケーション236が決定しており、方法はステップ742で終了し、戻り値は「実行可能」である。
[0081]ステップ712に戻って、AudioBufferがVideoBuffer未満であると再生アプリケーション236が決定した場合、ビデオバッファより少ない再生時間が音声バッファで使用可能であり、方法はステップ716に進んで、別の単位の音声データをダウンロードする影響を推定し始める。ステップ716で、AudioIndexが現在のコード化済みシーケンスの音声データの単位の合計数を表すAudioUnits未満であると再生アプリケーション236が決定した場合、再生アプリケーション236は、別の単位の音声データをダウンロードする必要があり、方法はステップ730に進む。ステップ730で、コンテンツバッファ112の現在の状態、及び主だった帯域幅の可用性が与えられると、別の単位の音声データがコンテンツサーバ130からダウンロードされる場合、再生アプリケーション236は、コンテンツバッファ112の結果として得られた状態を推定する。利点値も期間として計算、測定され、これは、1単位の音声データのダウンロードが実行される場合、音声バッファ244に追加することができる。ステップ730は、図7Dにより詳細に記載されている。
[0082]ステップ732で、VideoBufferがゼロ以上である場合、ビデオバッファ246におけるバッファアンダーランは、現在予想されておらず、方法はステップ734に進む。ステップ734で、AudioBufferがゼロ以上である場合、音声バッファ244におけるバッファアンダーランは、現在予想されておらず、方法はステップ736に進む。ステップ736で、利点値は、1単位の音声データのダウンロードを考慮に入れるために、AudioBuffer変数に追加される。ステップ738で、AudioIndexは、音声データの単位のダウンロードを考慮に入れるために増分される。次のダウンロードは、AudioIndexの増分された値に対応する1単位の音声データについてのものである。
[0083]ステップ734に戻って、AudioBufferがゼロ以下であると再生アプリケーション236が決定した場合、音声バッファ244におけるバッファアンダーランが予想され、方法はステップ740で終了し、戻り値は「実行不可能」である。
[0084]ステップ732に戻って、VideoBufferがゼロ以下であると再生アプリケーション236が決定した場合、ビデオバッファ246におけるバッファアンダーランが予想され、方法はステップ740で終了し、戻り値は「実行不可能」である。
[0085]ステップ716に戻って、AudioIndexが現在のコード化済みシーケンスの音声データの単位の合計数を表すAudioUnits以上であると再生アプリケーション236が決定した場合、再生アプリケーション236は、別の単位の音声データをダウンロードする必要はなく、バッファアンダーランは検出されていない。この時点で、ビデオ及び音声のコード化済みシーケンスのダウンロードを、バッファアンダーランなしで実行することができるとアプリケーション236が決定しており、方法はステップ742で終了し、戻り値は「実行可能」である。
[0086]図7Bは、本発明の一実施形態による、図7Aにおける変数を初期化するステップ710を実行するための方法ステップ701のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ701は、図7Aのステップ710をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。
[0087]方法は、ステップ750で開始し、AudioIndexは、現在の音声のコード化済みシーケンスの現在の再生状態を表す現在のAudioIndexに初期化される。ステップ752で、VideoIndexは、現在のビデオのコード化済みシーケンスの現在の再生状態を表す現在のVideoIndexに初期化される。ステップ754で、AudioBufferは、現在のAudioBuffer再生値に初期化される。方法は、ステップ756で終了し、VideoBufferは、現在のVideoBuffer再生値に初期化される。
[0088]図7Cは、本発明の一実施形態による、図7Aにおけるコンテンツバッファ112の状態を推定するステップを実行するための方法ステップ702のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ702は、図7Aのステップ720をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。
[0089]方法は、ステップ760で開始し、再生アプリケーション236は、次の1単位のビデオデータのダウンロード時間を推定する。異なる再生ビットレートにコード化されたコード化済みシーケンスと関連しており、要求されたタイトルと関連した異なるデジタルコンテンツファイル132に含まれるビデオビットレートプロフィール452は、次の単位のビデオデータのサイズを調べるために、VideoIndexを使用してインデックスが付けられる。次の単位のビデオデータのサイズは、現在の帯域幅の可用性と直接連動して、推定ダウンロード時間を決定する。ステップ762で、再生アプリケーション236は、VideoBufferの現在の値からダウンロード時間を減算することによって、VideoBufferの値を計算する。この新しい値は、ダウンロード時間中のビデオバッファ246からのデータの推定された再生消費を表す。同様に、ステップ764で、再生アプリケーション236は、AudioBufferの現在の値からダウンロード時間を減算することによって、AudioBufferの値を計算する。
[0090]図7Dは、本発明の一実施形態による、図7Aにおけるコンテンツバッファ112の状態を推定するステップを実行するための方法ステップ703のフロー図である。方法ステップは図1、図2、及び図3のシステムとの関係で記載されているが、方法ステップを任意の順序で実行するように構成される任意のシステムは本発明の範囲内に含まれることを当業者であれば理解されよう。この場合もまた、方法ステップ703は、図7Aのステップ730をより詳細に記載し、一実施形態において、再生アプリケーション236によって実行される。
[0091]方法は、ステップ770で開始し、再生アプリケーション236は、次の1単位の音声データのダウンロード時間を推定する。次の単位の音声データのサイズは、現在の帯域幅の可用性と直接連動して、推定ダウンロード時間を決定する。ステップ772で、再生アプリケーション236は、VideoBufferの現在の値からダウンロード時間を減算することによって、VideoBufferの値を計算する。この新しい値は、ダウンロード時間中のビデオバッファ246からのデータの推定された再生消費を表す。同様に、ステップ774で、再生アプリケーション236は、AudioBufferの現在の値からダウンロード時間を減算することによって、AudioBufferの値を計算する。
[0092]本発明の一実施形態は、コンテンツプレーヤ110内のコンピュータ可読記憶媒体に格納されるプログラム製品として実装することができる。この実施形態では、コンテンツプレーヤ110は、セットトップボックスなどの組み込みコンピュータプラットフォームを備える。本発明の代替実施形態は、インターネットウェブサイト内に組み込まれた実行可能命令など、コンピュータシステム内のメモリにダウンロードされるプログラム製品として実装することができる。この実施形態では、コンテンツプレーヤ110は、コンピュータシステムを備える。
[0093]要するに、コンテンツプレーヤ110上でデジタルコンテンツファイルを再生するための技術が開示される。この技術は、現在使用可能な帯域幅が与えられると、特定のデジタルコンテンツファイルを特定のビットレートでうまく再生することができるかどうかを推定するステップと、主だった帯域幅状態を考慮に入れるためにビットレートを適応させるステップとを伴う。実行可能性を推定するステップは、実質的に、再生の完了に間に合うように、現在の再生位置からビデオ及び音声データの残りの単位のダウンロードをシミュレーションすることを伴う。実行可能性は、周期的に再評価され、必要に応じて、ビットレートは実行可能なビットレートまで下げられる。しかし、実行可能である場合、表示品質を増加させるために、ビットレートが増加する。
[0094]開示された技術の1つの利点は、再生ビットレート及び使用可能なダウンロード帯域幅に基づく可能なバッファアンダーランが追跡され、バッファアンダーラン状態を回避しながら、複数単位のデジタルコンテンツが可能な限り最高の画質でダウンロードされることである。さらに、再生の始まりと関連した遅延時間は、比較的低いビットレートで再生を開始し、可能な場合はいつでも、より高い再生ビットレートに適応させることによって減らされる。
[0095]上記は本発明の実施形態を対象とするが、本発明の他の及びさらなる実施形態は、その基本的な範囲を逸脱しない範囲で考案され得る。例えば、本発明の態様は、ハードウェア若しくはソフトウェア、又はハードウェアとソフトウェアとの組み合わせに実装することができる。本発明の一実施形態を、コンピュータシステム用のプログラム製品として実装することができる。プログラム製品のプログラム(複数可)は、(本明細書に記載した方法を含む)実施形態の機能を定義し、様々なコンピュータ可読記憶媒体上に含めることができる。コンピュータ可読記憶媒体例には、それだけには限定されないが、(i)情報が永久に格納される書き込み不可の記憶媒体(例えば、CD−ROMドライブによって読み込み可能なCD−ROMディスク、フラッシュメモリ、ROMチップ、又は任意のタイプの固体不揮発性半導体メモリなど、コンピュータ内の読み取り専用記憶装置)、及び(ii)変更可能な情報が格納される書き込み可能な記憶媒体(例えば、ディスケットドライブ又はハードディスクドライブ内のフロッピーディスク、又は任意のタイプの固体ランダムアクセス半導体メモリ)を含む。本発明の機能を指示するコンピュータ可読命令を含むとき、こうしたコンピュータ可読記憶媒体は本発明の実施形態である。
[0096]上記を鑑み、本発明の範囲は、以下の特許請求の範囲によって決定される。

Claims (15)

  1. コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを決定するための方法であって、
    デジタルコンテンツタイトルと関連する1単位又は複数単位のデジタルコンテンツを、依然として再生のために前記コンテンツサーバからダウンロードし、バッファに入れなければならないことを決定するステップと、
    前記コンテンツサーバに格納された第1のコード化済みシーケンスから前記コンテンツバッファに、前記デジタルコンテンツタイトルと関連する第1の単位のデジタルコンテンツをダウンロードすることと関連したダウンロード時間を推定するステップであり、前記第1のコード化済みシーケンスは、前記コンテンツサーバに格納された複数のコード化済みシーケンスに含まれ、各コード化済みシーケンスは、異なるビットレートでコード化されたデジタルコンテンツタイトルを含み、前記ダウンロード時間が前記第1の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づく、ステップと、
    前記コンテンツバッファに格納された前記デジタルコンテンツを再生することと関連した再生時間を計算するステップと、
    前記再生時間から前記ダウンロード時間を減算することによって、超過したバッファ時間を計算するステップと、
    前記超過したバッファ時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
    前記超過したバッファ時間がゼロより大きい場合、前記コンテンツバッファに格納された前記デジタルコンテンツを再生することと関連する新たな再生時間を生成するために、前記超過したバッファ時間に、前記コンテンツバッファから前記第1の単位のデジタルコンテンツを再生することと関連するデルタ再生時間を加えるステップ、又は
    前記超過したバッファ時間がゼロ以下である場合、前記第1のコード化済みシーケンスから前記第1の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示すステップと、
    を含む方法。
  2. 前記超過したバッファ時間がゼロより大きく、前記デジタルコンテンツタイトルと関連する1単位又は複数単位のデジタルコンテンツが依然としてダウンロードしバッファに入れなければならないことを決定するステップと、ダウンロード時間を推定するステップと、再生時間を計算するステップと、超過したバッファ時間を計算するステップと、前記超過したバッファ時間がゼロ以下であるかどうかを決定するステップと、ダウンロードが実行不可能であることを示すステップ、又は前記超過したバッファ時間にデルタ再生時間を加えるステップとが、前記第1のコード化済みシーケンスに含まれ前記デジタルコンテンツタイトルと関連した第2の単位のデジタルコンテンツについて繰り返される、請求項1に記載の方法。
  3. 前記第1の単位のデジタルコンテンツが、動画又はテレビ番組と関連したビデオデータを備える、請求項1に記載の方法。
  4. 前記コンテンツバッファに格納された前記デジタルコンテンツを再生することと関連した再生時間を計算する前記ステップが、
    前記コンテンツバッファ内のビデオバッファに格納されたすべてのビデオデータを再生することと関連した再生時間を計算するステップと、
    前記コンテンツバッファ内の音声バッファに格納されたすべての音声データを再生することと関連した再生時間を計算するステップと、
    を含む、請求項3に記載の方法。
  5. 前記超過したバッファ時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定する前記ステップが、
    前記ビデオバッファ内に格納されたすべてのビデオデータを再生することと関連した前記再生時間から前記ダウンロード時間を減算するステップと、
    前記音声バッファ内に格納されたすべての音声データを再生することと関連した前記再生時間から前記ダウンロード時間を減算するステップと、
    を含む、請求項4に記載の方法。
  6. 1単位の音声データのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記コンテンツサーバから前記1単位の音声データをダウンロードすることと関連した音声のダウンロード時間を推定するステップと、
    前記コンテンツバッファ内に格納された前記音声データを再生することと関連した音声再生時間を計算するステップと、
    前記コンテンツバッファ内に格納された前記ビデオデータを再生することと関連したビデオ再生時間を計算するステップと、
    前記音声再生時間から前記音声のダウンロード時間を減算することによって、超過した音声バッファ時間を計算するステップと、
    前記ビデオ再生時間から前記音声のダウンロード時間を減算することによって、超過したビデオバッファ時間を計算するステップと、
    前記超過した音声バッファ時間又は前記超過したビデオバッファ時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
    バッファアンダーランが生じない場合、前記コンテンツバッファに格納された前記音声データを再生することと関連する新たな音声再生時間を生成するために、前記超過した音声バッファ時間に、前記コンテンツバッファから、前記1単位の音声データを再生することと関連するデルタ再生時間を加えるステップ、又は
    バッファアンダーランが生じる場合、前記1単位の音声データをダウンロードすることが実行不可能であることを示すステップと、
    をさらに含む、請求項3に記載の方法。
  7. 前記コンテンツバッファが、ビデオデータを格納するためのビデオバッファと、音声データを格納するための音声バッファとを含み、前記音声バッファに格納された前記音声データのすべてを再生することと関連した前記時間がゼロ以下、又は前記ビデオバッファに格納された前記ビデオデータのすべてを再生することと関連した前記時間がゼロ以下である場合、バッファアンダーランが生じる、請求項6に記載の方法。
  8. 処理ユニットによって実行されると、
    デジタルコンテンツタイトルと関連する1単位又は複数単位のデジタルコンテンツを、依然として再生のためにコンテンツサーバからダウンロードし、バッファに入れなければならないことを決定するステップと、
    前記コンテンツサーバに格納された第1のコード化済みシーケンスからコンテンツバッファに、前記デジタルコンテンツタイトルと関連した第1の単位のデジタルコンテンツをダウンロードすることと関連したダウンロード時間を推定するステップであり、前記第1のコード化済みシーケンスは、前記コンテンツサーバに格納された複数のコード化済みシーケンスに含まれ、各コード化済みシーケンスは、異なるビットレートでコード化されたデジタルコンテンツタイトルを含み、ダウンロード時間が前記第1の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づく、ステップと、
    前記コンテンツバッファに格納された前記デジタルコンテンツを再生することと関連した再生時間を計算するステップと、
    前記再生時間から前記ダウンロード時間を減算することによって、超過したバッファ時間を計算するステップと、
    前記超過したバッファ時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定するステップと、
    前記超過したバッファ時間がゼロより大きい場合、前記コンテンツバッファに格納された前記デジタルコンテンツを再生することと関連する新たな再生時間を生成するために、前記超過したバッファ時間に、前記コンテンツバッファから前記第1の単位のデジタルコンテンツを再生することと関連するデルタ再生時間を加えるステップ、又は
    前記超過したバッファ時間がゼロ以下である場合、前記第1のコード化済みシーケンスから前記第1の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示すステップと、
    を実行することによって、コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを前記処理ユニットに決定させる命令を格納する一時的でないコンピュータ可読媒体。
  9. 前記超過したバッファ時間がゼロより大きく、前記デジタルコンテンツタイトルに関連する1単位又は複数単位のデジタルコンテンツが依然としてダウンロードしバッファに入れなければならないことを決定するステップと、ダウンロード時間を推定するステップと、再生時間を計算するステップと、超過したバッファ時間を計算するステップと、前記超過したバッファ時間がゼロ以下であるかどうかを決定するステップと、ダウンロードが実行不可能であることを示すステップ、又は前記超過したバッファ時間にデルタ再生時間を加えるステップとが、前記第1のコード化済みシーケンスに含まれ前記デジタルコンテンツタイトルと関連した第2の単位のデジタルコンテンツについて繰り返される、請求項8に記載のコンピュータ可読媒体。
  10. コンテンツサーバからコンテンツバッファにダウンロードされたデジタルコンテンツに、バッファアンダーランを引き起こすことなく、所定のビットレートで、再生のために前記コンテンツバッファからアクセスすることができるかどうかを決定するように構成されたコンテンツプレーヤデバイスであって、
    ダウンロードされたデジタルコンテンツを格納するための前記コンテンツバッファを含むメモリと、
    デジタルコンテンツタイトルと関連する1単位又は複数単位のデジタルコンテンツを、依然として再生のために前記コンテンツサーバからダウンロードし、バッファに入れなければならないことを決定し、
    前記コンテンツサーバに格納された第1のコード化済みシーケンスから前記コンテンツバッファに、前記デジタルコンテンツタイトルと関連した第1の単位のデジタルコンテンツをダウンロードすることと関連したダウンロード時間を推定し、前記第1のコード化済みシーケンスは、前記コンテンツサーバに格納された複数のコード化済みシーケンスに含まれ、各コード化済みシーケンスは、異なるビットレートでコード化されたデジタルコンテンツタイトルを含み、ダウンロード時間が前記第1の単位のデジタルコンテンツのサイズ、及び使用可能なダウンロード帯域幅に基づき、
    前記コンテンツバッファに格納された前記デジタルコンテンツを再生することと関連した再生時間を計算し、
    前記再生時間から前記ダウンロード時間を減算することによって、超過したバッファ時間を計算し、
    前記超過したバッファ時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定し、
    前記超過したバッファ時間がゼロより大きい場合、前記コンテンツバッファに格納された前記デジタルコンテンツを再生することと関連する新たな再生時間を生成するために、前記超過したバッファ時間に、前記コンテンツバッファから前記第1の単位のデジタルコンテンツを再生することと関連するデルタ再生時間を加える、又は
    前記超過したバッファ時間がゼロ以下である場合、前記第1のコード化済みシーケンスから前記第1の単位のデジタルコンテンツをダウンロードすることが実行不可能であることを示す、
    ように構成された、前記メモリに結合された処理ユニットと
    を備えるコンテンツプレーヤデバイス。
  11. 前記超過したバッファ時間がゼロより大きく、前記デジタルコンテンツタイトルと関連する1単位又は複数単位のデジタルコンテンツが依然としてダウンロードしバッファに入れなければならないことを決定することと、
    ダウンロード時間を推定することと、
    再生時間を計算することと、
    超過したバッファ時間を計算することと、
    前記超過したバッファ時間がゼロ以下であるかどうかを決定することと、
    ダウンロードが実行不可能であることを示すこと、又は前記超過したバッファ時間にデルタ再生時間を加えることと、が、
    前記第1のコード化済みシーケンスに含まれ前記デジタルコンテンツタイトルと関連した第2の単位のデジタルコンテンツについて繰り返される、請求項10に記載のコンテンツプレーヤデバイス。
  12. 前記デジタルコンテンツタイトルに関連した1単位又は複数単位のデジタルコンテンツが依然として再生のためにダウンロードしバッファに入れなければならないことを決定するステップは、前記コンテンツバッファに関連するインデックスが前記デジタルコンテンツタイトルと関連した単位の量よりも少ないことを決定するステップを含む、請求項1に記載の方法。
  13. 前記処理ユニットは、更に、第2の単位のデジタルコンテンツについても、
    ダウンロード時間を推定し、
    再生時間を計算し、
    超過したバッファ時間を計算し、
    前記超過したバッファ時間がゼロ以下であるかどうかを決定し、
    前記第2の単位のデジタルコンテンツをダウンロードすることが実行可能であるか実行不可能であるかを示すように構成され、
    前記第2の単位のデジタルコンテンツは、前記第1のコード化済みシーケンス又はデジタルコンテンツのファイルに含まれる別のコード化済みシーケンスからダウンロードされる、請求項8に記載のコンピュータ可読媒体。
  14. 前記超過したバッファ時間はゼロより大きく、
    更に前記コンテンツバッファと関連するインデックスを増加させるステップを含む、請求項13に記載のコンピュータ可読媒体。
  15. 前記処理ユニットは、
    1単位の音声データのサイズ、及び使用可能なダウンロード帯域幅に基づいて、前記コンテンツサーバから前記1単位の音声データをダウンロードすることと関連した音声のダウンロード時間を推定し、
    前記コンテンツバッファ内に格納された前記音声データを再生することと関連した音声再生時間を計算し、
    前記コンテンツバッファ内に格納されたビデオデータを再生することと関連したビデオ再生時間を計算し、
    前記音声再生時間から前記音声のダウンロード時間を減算することによって、超過した音声バッファ時間を計算し、
    前記ビデオ再生時間から前記音声のダウンロード時間を減算することによって、超過したビデオバッファ時間を計算し、
    前記超過した音声バッファ時間又は前記超過したビデオバッファ時間が、バッファアンダーランが生じることを示すゼロ以下であるかどうかを決定し、
    バッファアンダーランが生じない場合、前記コンテンツバッファに格納された前記音声データを再生することと関連する新たな音声再生時間を生成するために、前記超過した音声バッファ時間に、前記コンテンツバッファから、前記1単位の音声データを再生することと関連するデルタ再生時間を加え、又は
    バッファアンダーランが生じる場合、前記1単位の音声データをダウンロードすることが実行不可能であることを示す、
    ことをさらに含む、請求項10に記載のコンテンツプレーヤデバイス。
JP2013128908A 2009-07-24 2013-06-19 デジタルコンテンツの配布のための適応型ストリーミング Active JP5652971B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/509,365 2009-07-24
US12/509,365 US8631455B2 (en) 2009-07-24 2009-07-24 Adaptive streaming for digital content distribution

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012521846A Division JP5302463B2 (ja) 2009-07-24 2010-07-23 デジタルコンテンツの配布のための適応型ストリーミング

Publications (2)

Publication Number Publication Date
JP2013219819A JP2013219819A (ja) 2013-10-24
JP5652971B2 true JP5652971B2 (ja) 2015-01-14

Family

ID=43498420

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012521846A Active JP5302463B2 (ja) 2009-07-24 2010-07-23 デジタルコンテンツの配布のための適応型ストリーミング
JP2013128908A Active JP5652971B2 (ja) 2009-07-24 2013-06-19 デジタルコンテンツの配布のための適応型ストリーミング

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2012521846A Active JP5302463B2 (ja) 2009-07-24 2010-07-23 デジタルコンテンツの配布のための適応型ストリーミング

Country Status (11)

Country Link
US (2) US8631455B2 (ja)
EP (1) EP2457167B1 (ja)
JP (2) JP5302463B2 (ja)
BR (1) BR112012002182B1 (ja)
CA (1) CA2768964C (ja)
CL (1) CL2012000194A1 (ja)
CO (1) CO6491092A2 (ja)
DK (1) DK2457167T3 (ja)
IN (1) IN2012DN00717A (ja)
MX (1) MX2012001100A (ja)
WO (1) WO2011011724A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110246603A1 (en) * 2008-09-05 2011-10-06 The Chinese University Of Hong Kong Methods and devices for live streaming using pre-indexed file formats
US9060187B2 (en) 2008-12-22 2015-06-16 Netflix, Inc. Bit rate stream switching
US9014545B2 (en) * 2009-07-24 2015-04-21 Netflix, Inc. Adaptive streaming for digital content distribution
US8914835B2 (en) * 2009-10-28 2014-12-16 Qualcomm Incorporated Streaming encoded video data
US9872057B1 (en) * 2009-11-30 2018-01-16 The Directv Group, Inc. Method and system for accessing content in another format in a communications system
US9237178B2 (en) * 2010-02-03 2016-01-12 Futurewei Technologies, Inc. Combined binary string for signaling byte range of media fragments in adaptive streaming
US8504713B2 (en) * 2010-05-28 2013-08-06 Allot Communications Ltd. Adaptive progressive download
US9037742B2 (en) * 2011-11-15 2015-05-19 International Business Machines Corporation Optimizing streaming of a group of videos
US9166864B1 (en) * 2012-01-18 2015-10-20 Google Inc. Adaptive streaming for legacy media frameworks
CN103425504A (zh) * 2012-05-18 2013-12-04 阿里巴巴集团控股有限公司 视频文件的加载方法和装置
JP6142488B2 (ja) * 2012-09-13 2017-06-07 株式会社Jvcケンウッド コンテンツ再生装置、コンテンツ再生方法、コンテンツ再生プログラム
TWI507022B (zh) * 2012-12-05 2015-11-01 Ind Tech Res Inst 多媒體串流的緩存輸出方法以及多媒體串流緩存模組
US9654528B1 (en) 2013-03-11 2017-05-16 Google Inc. Dynamic bitrate selection for streaming media
WO2016068873A1 (en) * 2014-10-28 2016-05-06 Hewlett Packard Enterprise Development Lp Media content download time
US10270989B2 (en) * 2015-04-22 2019-04-23 Lg Electronics Inc. Broadcasting signal transmission device, broadcasting signal reception device, broadcasting signal transmission method, and broadcasting signal reception method
WO2017063189A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated Deadline signaling for streaming of media data
US10433023B1 (en) * 2015-10-27 2019-10-01 Amazon Technologies, Inc. Heuristics for streaming live content
WO2017132434A1 (en) * 2016-01-28 2017-08-03 Arris Enterprises Llc Variable buffer handling for adaptive bitrate streaming
US10091559B2 (en) * 2016-02-09 2018-10-02 Disney Enterprises, Inc. Systems and methods for crowd sourcing media content selection
US20190088265A1 (en) * 2016-03-28 2019-03-21 Sony Corporation File generation device and file generation method
CN108886638A (zh) * 2016-03-28 2018-11-23 索尼公司 再现装置和再现方法、以及文件生成装置和文件生成方法
US10735508B2 (en) 2016-04-04 2020-08-04 Roku, Inc. Streaming synchronized media content to separate devices
US10387993B2 (en) * 2017-09-29 2019-08-20 Intel Corporation Fault-tolerant graphics display engine
CN107809647A (zh) * 2017-10-24 2018-03-16 深圳市创维软件有限公司 视频播放的码率切换方法、装置及存储介质
EP3767962A1 (en) * 2019-07-19 2021-01-20 THEO Technologies A media client with adaptive buffer size and the related method
US10958947B1 (en) * 2020-03-12 2021-03-23 Amazon Technologies, Inc. Content delivery of live streams with playback-conditions-adaptive encoding

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159447A (en) * 1991-05-23 1992-10-27 At&T Bell Laboratories Buffer control for variable bit-rate channel
US5414455A (en) 1993-07-07 1995-05-09 Digital Equipment Corporation Segmented video on demand system
US5608732A (en) * 1993-09-01 1997-03-04 Zenith Electronics Corporation Television distribution system having virtual memory downloading
ES2150013T3 (es) 1994-12-28 2000-11-16 Koninkl Philips Electronics Nv Gestion de almacenamiento intermedio en sistemas de compresion variable de transferencia de bits.
US6721952B1 (en) 1996-08-06 2004-04-13 Roxio, Inc. Method and system for encoding movies, panoramas and large images for on-line interactive viewing and gazing
US6453114B2 (en) * 1997-02-18 2002-09-17 Thomson Licensing Sa Random picture decoding
JPH11331792A (ja) * 1998-05-08 1999-11-30 Sony Corp クライアント装置およびサーバクライアントシステム
US6438630B1 (en) * 1999-10-06 2002-08-20 Sun Microsystems, Inc. Scheduling storage accesses for multiple continuous media streams
JP2002157825A (ja) * 2000-11-21 2002-05-31 Ricoh Co Ltd 情報記録装置
US7274661B2 (en) * 2001-09-17 2007-09-25 Altera Corporation Flow control method for quality streaming of audio/video/media over packet networks
US7646816B2 (en) * 2001-09-19 2010-01-12 Microsoft Corporation Generalized reference decoder for image or video processing
EP1359722A1 (en) 2002-03-27 2003-11-05 BRITISH TELECOMMUNICATIONS public limited company Data streaming system and method
JP2004040526A (ja) * 2002-07-04 2004-02-05 Ricoh Co Ltd 画像配信システム及び画像配信再生システム
US7263129B2 (en) * 2002-08-29 2007-08-28 Sony Corporation Predictive encoding and data decoding control
JP3935419B2 (ja) 2002-11-19 2007-06-20 Kddi株式会社 動画像符号化ビットレート選択方式
EP1465186A1 (en) 2003-04-02 2004-10-06 Deutsche Thomson-Brandt Gmbh Method for buffering data streams read from an optical storage medium
US7924921B2 (en) * 2003-09-07 2011-04-12 Microsoft Corporation Signaling coding and display options in entry point headers
US8345754B2 (en) * 2003-09-07 2013-01-01 Microsoft Corporation Signaling buffer fullness
US7234007B2 (en) * 2003-09-15 2007-06-19 Broadcom Corporation Adjustable elasticity FIFO buffer have a number of storage cells equal to a frequency offset times a number of data units in a data stream
US7818444B2 (en) * 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
JP2005333478A (ja) * 2004-05-20 2005-12-02 Mitsumi Electric Co Ltd ストリーミングコンテンツ再生方法及びそれを用いたインターネット接続装置
KR20060065482A (ko) 2004-12-10 2006-06-14 마이크로소프트 코포레이션 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스
US7480701B2 (en) 2004-12-15 2009-01-20 Microsoft Corporation Mixed-media service collections for multimedia platforms
JP4643330B2 (ja) * 2005-03-28 2011-03-02 ソニー株式会社 通信処理装置、データ通信システム、および通信処理方法、並びにコンピュータ・プログラム
JP2006279843A (ja) * 2005-03-30 2006-10-12 Nippon Telegraph & Telephone West Corp コンテンツ配信システムおよびコンテンツ再生装置
US9344476B2 (en) 2005-04-11 2016-05-17 Telefonaktiebolaget Lm Ericsson (Publ) Technique for controlling data packet transmission of variable bit rate data
US7743183B2 (en) * 2005-05-23 2010-06-22 Microsoft Corporation Flow control for media streaming
JP2007036666A (ja) * 2005-07-27 2007-02-08 Onkyo Corp コンテンツ配信システム、クライアント及びクライアントプログラム
WO2007063901A1 (ja) 2005-12-01 2007-06-07 Sharp Kabushiki Kaisha 無線通信システム及び無線通信方法
US8607287B2 (en) 2005-12-29 2013-12-10 United Video Properties, Inc. Interactive media guidance system having multiple devices
JP4944484B2 (ja) * 2006-04-20 2012-05-30 キヤノン株式会社 再生装置、再生方法及びプログラム
US20080133766A1 (en) 2006-05-05 2008-06-05 Wenjun Luo Method and apparatus for streaming media to a plurality of adaptive client devices
US20080062322A1 (en) 2006-08-28 2008-03-13 Ortiva Wireless Digital video content customization
US7743161B2 (en) 2006-10-10 2010-06-22 Ortiva Wireless, Inc. Digital content buffer for adaptive streaming
US8745676B2 (en) * 2006-12-19 2014-06-03 General Instrument Corporation Admitting a data file into a channel
WO2008105695A1 (en) 2007-03-01 2008-09-04 Telefonaktiebolaget Lm Ericsson (Publ) Bit streams combination of downloaded multimedia files
JP4930148B2 (ja) 2007-03-29 2012-05-16 ブラザー工業株式会社 情報処理装置、情報処理方法及び情報処理用プログラム
US7706384B2 (en) * 2007-04-20 2010-04-27 Sharp Laboratories Of America, Inc. Packet scheduling with quality-aware frame dropping for video streaming
JP2008293436A (ja) * 2007-05-28 2008-12-04 Victor Co Of Japan Ltd コンテンツ受信制御装置及びコンテンツ受信制御プログラム
US8561116B2 (en) * 2007-09-26 2013-10-15 Charles A. Hasek Methods and apparatus for content caching in a video network
EP2300928B1 (en) 2008-06-06 2017-03-29 Amazon Technologies, Inc. Client side stream switching
KR20100009903A (ko) * 2008-07-21 2010-01-29 엘지전자 주식회사 콘텐츠 재생방법 및 장치, 그리고 그의 휴대 단말장치
US8726310B2 (en) * 2009-02-05 2014-05-13 Purplecomm Inc. Meta channel media system control and advertisement technology
EP2257073A1 (en) 2009-05-25 2010-12-01 Canon Kabushiki Kaisha Method and device for transmitting video data
US9014545B2 (en) 2009-07-24 2015-04-21 Netflix, Inc. Adaptive streaming for digital content distribution

Also Published As

Publication number Publication date
EP2457167A4 (en) 2015-09-02
IN2012DN00717A (ja) 2015-06-19
US20110023076A1 (en) 2011-01-27
MX2012001100A (es) 2012-06-13
EP2457167A1 (en) 2012-05-30
CA2768964C (en) 2015-08-25
US20140189771A1 (en) 2014-07-03
CL2012000194A1 (es) 2012-08-24
JP2013500635A (ja) 2013-01-07
US9648385B2 (en) 2017-05-09
CA2768964A1 (en) 2011-01-27
WO2011011724A1 (en) 2011-01-27
CO6491092A2 (es) 2012-07-31
BR112012002182A2 (pt) 2016-05-31
JP2013219819A (ja) 2013-10-24
JP5302463B2 (ja) 2013-10-02
BR112012002182B1 (pt) 2020-12-08
US8631455B2 (en) 2014-01-14
DK2457167T3 (da) 2021-02-08
EP2457167B1 (en) 2020-12-02

Similar Documents

Publication Publication Date Title
JP5652971B2 (ja) デジタルコンテンツの配布のための適応型ストリーミング
US9769505B2 (en) Adaptive streaming for digital content distribution
US10972772B2 (en) Variable bit video streams for adaptive streaming
US9781183B2 (en) Accelerated playback of streaming media
US8689267B2 (en) Variable bit video streams for adaptive streaming
AU2012207151A1 (en) Variable bit video streams for adaptive streaming

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130716

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140801

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: 20141021

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141117

R150 Certificate of patent or registration of utility model

Ref document number: 5652971

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250