JP5659154B2 - クライアント側ストリームスイッチング - Google Patents

クライアント側ストリームスイッチング Download PDF

Info

Publication number
JP5659154B2
JP5659154B2 JP2011512585A JP2011512585A JP5659154B2 JP 5659154 B2 JP5659154 B2 JP 5659154B2 JP 2011512585 A JP2011512585 A JP 2011512585A JP 2011512585 A JP2011512585 A JP 2011512585A JP 5659154 B2 JP5659154 B2 JP 5659154B2
Authority
JP
Japan
Prior art keywords
stream
buffer
bit rate
media
media stream
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
JP2011512585A
Other languages
English (en)
Other versions
JP2011523298A (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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies 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
Priority claimed from US12/134,988 external-priority patent/US9047236B2/en
Priority claimed from US12/135,034 external-priority patent/US9167007B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2011523298A publication Critical patent/JP2011523298A/ja
Application granted granted Critical
Publication of JP5659154B2 publication Critical patent/JP5659154B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • 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/756Media network packet handling adapting media to device capabilities
    • 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/764Media network packet handling at the destination 
    • 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/80Responding to QoS

Landscapes

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

Description

本発明は、クライアント側ストリームスイッチングに関する。
一般の人が、コンピュータで使用するためにネットワーク上のメディアコンテンツにアクセスすることはますます普通のことになってきた。特に、インターネットは、多岐に利用できるデジタルコンテンツのダウンロードおよびストリーミングを容易にした。多くの人が、通常はユーザが制御できない予定に基づいてユーザにメディアを押し付ける、無線受信、ケーブル伝送、衛星音声/ビデオ、および他の分散ソースなどの従来のコンテンツ配信方法に頼らずにストリーミングメディアを検出し、取り出し、楽しむためにネットワークアクセスを使用している。
インターネット上でのストリーミングメディアに関する1つの具体的な問題は、ある人のコンピュータとホストとの間の帯域幅が制限されていることである。多くの人が、ストリーミングメディア受信時の望ましくない遅延またはメディアのストリームの再生中の中断を経験している。コンピュータへのメディアのストリームの受信を早める1つの解決策は、そのメディアのストリームに関連するビットレートを削減することによってなど、メディアの質を下げることである。しかし、多くの場合、人は、ネットワーク接続帯域幅に基づいて変わる可能性がある質が可能な限り最高であるメディアのストリームを所望する。したがって、人がストリーミングメディアの受信中に望ましくないと気付く中断を削減しつつ、ストリーミングメディアの質を改善することが望ましい。
詳細な説明は、添付の図を参照して行う。図中、参照番号の最左の数字(複数の場合がある)は、その参照番号が最初に示される図を識別する。異なる図中の同じ参照番号が、類似する、または同一の項目を示す。
クライアント側ストリームスイッチングの1つまたは複数の実施形態が実装できる実例となるコンピューティング環境を示す絵図である。 本開示の1つまたは複数の実施形態によるストリームスイッチングの実例となるプロセスの流れ図である。 本開示のいくつかの実施形態に従って帯域幅を監視し、ビットレートを選択する実例となるプロセスの流れ図である。 本開示の1つまたは複数の実施形態に従って第1のストリームから第2のストリームに移行する実例となるプロセスの流れ図である。 本開示の1つまたは複数の実施形態に従ってクライアントにとって理想的なビットレートを決定し、記憶する実例となるプロセスの流れ図である。 本開示のいくつかの実施形態に従ってクライアント上のストリーミングを監視するために、実例となるユーザインタフェースを含む環境を示す。 本開示のいくつかの実施形態に従って、可変ビットレート(VBR)のメディアのストリームの部分の複雑度を決定するためにメディアのストリームを分析するための実例となるチャートを示す。 本開示の1つまたは複数の実施形態に従ってクライアントへのストリーミングを調整するために、複雑度データを有するメディアのストリームの分析を使用する実例となるプロセスの流れ図である。 図1のホストサーバと関連するモジュールの1つまたは複数の実施形態の実例となるブロック図を示す。
(概要)
ユーザがストリーミングメディアを受信するとき、一般に、ユーザは中断のない高品質のメディアストリームを所望する。しかし、ホストとクライアントの間のネットワーク接続の帯域幅を含めた多くの要因が、高品質であるだけではなく、中断もないメディアのストリームをユーザに提供することを困難にすることがある。本開示の実施形態によれば、中断されないまたは実質的に中断されないメディアのストリームを保証できる、第1のビットレートのメディアストリームがユーザに送信できる。次に、ホストは、ユーザが中断されないメディアのストリームを受信する間にストリームの質を調整するために、他の考えられる要因の中でも将来の帯域幅の測定値に基づいてさらに高いまたはさらに低いビットレートにそのメディアのストリームを移行することができる。
本明細書に説明するように、メディアストリームは可変ビットレート(VBR)または固定ビットレート(FBR)を有することができる。VBRは、平均または中央のビットレート値など、メディアのストリームを表すビットレート値を含む。VBRのメディアのストリームでは、メディアのストリームの部分がより高いまたはより低いビットレート値を有することがある。たとえば、ビデオのアクションシーンが複雑な部分であり、高ビットレート値を含むことがある。一方、風景、背景等に変化がほとんどない別のシーンは複雑ではなく、低ビットレート値を有することがある。対照的に、FBRのメディアのストリームは、一定のビットレート値を有する。FBRストリームは、一般に、メディアのストリームの複雑度に基づいてメディアの質のレベルを調整し、したがってビットレートを一定に保つためにきわめて複雑な部分の間に質を下げる。本明細書に説明するように、ビットレートは、特別の定めがない限りVBRまたはFBRのどちらであってもよい。
説明のため、クライアント側ストリームスイッチングは、ウェブサイトをサポートするホストから音声および/またはビデオをストリーミングするという状況で説明する。この状況の実例となる実装形態を以下に提供する。ただし、説明するコンテンツスタイルの検出技法は、他の状況で実装できる。さらに、示されるアーキテクチャによって実施されるようにクライアント側ストリームスイッチングを実装するために、他の分散構成を使用することもできる。
(実例となるシステムアーキテクチャ)
図1は、クライアント側ストリームスイッチングの1つまたは複数の実施形態が実装できる実例となるコンピューティング環境100を示す絵図である。環境100では、ホスト102は、ネットワーク106を経由してクライアント104と通信できる。実施形態では、ホスト102が、ユーザ108へのプレイバックのために、クライアント104にストリーミングメディアを送信できる。
1つまたは複数の実施形態によれば、ホスト102は、おそらくクラスタ内にまたはサーバファームとして配列される1台または複数のサーバ110(1)、...110(N)を含むことができる。ホスト102は、ウェブサーバまたは別のタイプの情報サーバである場合がある。ホスト102をサポートするために、他のサーバアーキテクチャを使用することもできる。ホスト102は多くのユーザからの要求を処理し、応答して、クライアント104でレンダリングできる多様なデータのストリームを供給することができる。いくつかの実施形態では、ホスト102は、オンライン小売業者、エンターテインメントサイト、音声および/またはビデオ配布サイト、情報サイト、ソーシャルネットワーキングサイト、ブログサイト、ニュースおよびエンターテインメントサイト等々を含めた、ユーザ対話をサポートするウェブサーバである。
実例となる実施形態では、ホスト102は、メディアデータベース112のホストとなるウェブサーバを表す。メディアデータベース112は、ユーザ108へのプレイバックのために、ホスト102からネットワーク106を経由してクライアント104に送信できるメディアの集合体を格納する。用語「メディア」は、ネットワーク106を介してホスト102からクライアント104にストリーミングできる、映画、テレビ番組、プレビュー、個人のビデオ録画、音楽、ニュース、または他のあらゆるタイプのビデオおよび/または音声など、ユーザ108にストリーミングできる任意のビデオおよび/または音声を含む。
図1では、ホスト102は、メディアデータベース112のコンテンツをユーザ108に送信するためにストリーミングモジュール114を含むことができる。いくつかの実施形態では、ストリーミングモジュール114は、ユーザ108へのビデオの表示を可能にする1台または複数のビデオレンダリング装置を含むことができる。さらに、ストリーミングモジュール114は、メディアデータベース112のコンテンツを記憶するための1つまたは複数のバッファを管理できる。1つまたは複数の実施形態では、ストリーミングモジュール114はストリーミング待ち行列116と対話し、バッファを管理する、コンテンツを記憶する、またはそれ以外の場合、ストリーミングモジュール114によって処理されるメディアデータベース112からのメディアを維持することができる。
1つまたは複数の実施形態によれば、移行モジュール118はストリーミング待ち行列116と対話し、第1のビットレートでのメディアのストリームから第2のビットレートでのメディアのストリームに移行できる。たとえば、および制限なく、第1のビットレートでのメディアのストリームが、600kbpsで符号化されたビデオクリップであることがあり、一方、第2のビットレートでのメディアのストリームが、900kbpsで符号化された同じクリップであることがある。したがって、質(ピクセル、解像度、音声圧縮等)は異なる可能性があるが、そのメディアのストリームのコンテンツは同じである可能性がある。移行モジュール118によって、ホスト102は、ユーザ108へのプレイバックのために中断されないまたは実質的に中断されない、クライアント104へのメディアのストリームを維持しながら、第1ビットレートでのメディアのストリームから第2のビットレートでのメディアのストリームへの連続ストリーミング移行を容易にさせることができる。
ヒューリスティックモジュール120は、移行モジュール118によって提供される移行プロセス、および/またはストリーミングモジュール114によって提供されるストリーミングプロセスを手助けするためにデータを提供できる。たとえば、ヒューリスティックモジュール120は、クライアント104が中断されないストリーミングコンテンツを受信できるようにするために、メディアデータベース112からのストリーミングメディアでのバッファの充填をいつ開始するのかを判定できる。いくつかの実施形態では、ヒューリスティックモジュール120は、他の考えられる要因の中でもネットワーク106の測定された帯域幅に基づいて、ストリーミングメディアにとって理想的なビットレートを決定できる。ヒューリスティックモジュール120は、測定された帯域幅に基づいて、ユーザ108に最高のビットレートのメディアストリームを提供するためにメディアコンテンツのビットレートの選択を動的に制御できる。
1つまたは複数の実施形態によれば、ストリーミングモジュール114、移行モジュール118、およびヒューリスティックモジュール120の内の1つまたは複数が、クライアント104上で実装できる。クライアント104は、ストリーミングモジュール114の機能の少なくとも一部を含むことができる。たとえば、クライアント104は、ユーザ108へのプレイバックのためにメディアのストリームを受信し、そのメディアのストリームを出力するためのレンダリングソフトウェアを含むアプリケーションを含むことができる。さらに、クライアント104は、第1のメディアのストリームと第2のメディアのストリームの間で移行するための移行モジュール118を含むことができる。いくつかの実施形態では、ヒューリスティックモジュール120の機能のすべてまたは一部が、クライアント104上に実装できる。たとえば、ヒューリスティックモジュール120の、理想的なビットレートを計算する機能は、ネットワーク106の帯域幅のクライアント側の測定によりストリーミングメディアにとっての理想的なビットレートを決定できるようにするために、クライアント104上に実装できる。
図1のネットワーク106は、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)等のより大きなネットワーク、またはインターネットなどのネットワークの集合体であることがある。TCP/IPなどのネットワーク通信用のプロトコルは、コンピュータネットワークの当業者によく知られており、本明細書に説明するネットワーク接続を実施するために使用できる。当業者は、本書に開示する概念が、関連文書および付随するファイル、スクリプト、およびデータベースを格納するサーバを接続するローカルエリアネットワークまたはワイドエリアネットワーク、あるいは音声ファイルまたはビデオファイル、文書、スクリプト、データベース等へのアクセスを提供するセットトップボックスまたは他の情報機器を含む放送通信ネットワーク等の、他の対話型環境でも使用できることを認識する。
前記に説明したように、クライアント104は、ホスト102からメディアコンテンツを受信できる。クライアントは、コンピュータ104(1)、(受信機を介して)テレビ104(2)、携帯電話104(3)(たとえば、スマートフォン等)、携帯情報端末(PDA)104(M)、またはホスト102からストリーミングメディアを受信し、ユーザ108による使用のためのそのストリーミングメディアを表示する、および/または送ることのできる他の装置を含むことができる。たとえば、クライアント104がセットトップボックス、ゲーム機等であることもある。
示されるように、各クライアント104(1)、...104(M)には、データおよびアプリケーションを記憶し、データを処理するために1台または複数のプロセッサ122、およびメモリ124が備えられている。メモリ124は、ホスト102から受信されるストリーミングメディアなどのデータを記憶するために1つまたは複数のバッファ126を含むことができる。いくつかの実施形態によれば、プレゼンテーションアプリケーション128はメモリ124内に記憶され、ホスト102からストリーミングメディアを提供するためにプロセッサ122上で実行する。このプレゼンテーションアプリケーション128は、クライアント104の関連ディスプレイ上で、ホスト102によって供給されるストリーミングメディア130をレンダリングできる。たとえば、プレゼンテーションアプリケーション128は、ストリーミングメディア130を処理し、再生することができるメディアストリーミングプラグインで構成されたブラウザであることがある。いくつかの実施形態では、プレゼンテーションアプリケーション128は、ストリーミングモジュール114、移行モジュール118、および/またはヒューリスティックモジュール120の内のすべてまたは一部を含んでよい。
いくつかの実施形態では、ホスト102およびクライアント104の構成は、ウェブをベースにしたシステムとして構成できるか、あるいは他の可能性の中でも、ケーブルテレビヘッドエンドおよびテレビのセットトップボックスの環境、対応するリモートサービスプロバイダのあるデジタルビデオレコーダ、モバイル機器および対応するリモートサービスプロバイダなどのデジタルビデオレコーダなどの他のタイプのクライアント/サーバをベースにした通信および関連アプリケーション論理が使用できる。ユーザ108がホスト102にアクセスするとき、クライアント104は、たとえばユニフォームリソースロケータ(URL)等の形を取る要求を、サーバ110(1)から(N)に提出する。要求を受け取ると、サーバ110(1)〜(N)は、ストリーミングメディアをクライアント104に返す。
(実例となる動作)
図2は、本開示の1つまたは複数の実施形態によるストリームスイッチングの実例となるプロセス200の流れ図である。プロセス200は、論理フローグラフ内のブロックの集合体として示されている。論理フローグラフは、ハードウェア、ソフトウェア、またはその組み合わせで実装できる一連の動作を表す。ソフトウェアとの関連では、ブロックは、1つまたは複数のプロセッサによって実行されると、列挙された動作を実行するためのコンピュータ実行可能命令を表している。一般に、コンピュータ実行可能命令は、特定の機能を実行する、または特定の抽象データタイプを実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。動作を説明する順序は、制限として解釈されることを意図されておらず、プロセスを実施するために、任意の数の説明されるブロックが任意の順序で、および/または並列で結合できる。説明のために、プロセス200は、図1の環境100を参照して説明する。プロセス200に加えて、本開示全体で説明する他のプロセスは相応して解釈されるものとする。
プロセス200は、第1の接続速度で、ネットワーク106を経由してホスト102とクライアント104の間の接続を開始することによって、202で開始できる。たとえば、より多くの、またはより少ないビットレートを含めた他のビットレートが使用できるが、ストリーミングモジュール114は、500kbps、1000kbps、および1500kbps等の異なるビットレートで符号化されるストリーミングメディアを提供できる。202で、クライアント104は、ホスト102との接続を確立し、第1のビットレートでのストリーミングメディアの受信を可能にする。
1つまたは複数の実施形態によれば、204で、ホスト102はクライアント104に第1のビットレートでストリーミングメディアを送信し、バッファ126の内の1つなどの初期バッファを充填することができる。第1の活動モニタ206は、第1のビットレートを有する第1のストリーム208、および第2のビットレートを有する第2のストリーム210と関連する活動のグラフ表示を含む。第1のストリーム208および第2のストリーム210と関連する、実例となる活動は、それぞれ第1のグラフ212および第2のグラフ214に表される。第1のグラフ212および第2のグラフ214は、y軸の充填レベル(つまり、バッファ内のデータの量)およびx軸の時間を含み、メディアの各ストリームのバッファ活動を描くために使用される。第1のグラフ212に示すように、クライアント102の初期バッファは、動作204によってストリームメディアで充填される。初期バッファ充填216は、動作204の間の経時的なストリーミングメディアの実例となる充填レベルを表す。
218で、初期バッファ充填レベルが動作204から初期バッファ容量に達するとき、プレゼンテーションアプリケーション128が、第1のストリーム208の再生を開始する。220で、より大きいバッファが開始され、ホスト102からのストリーミングデータで充填され得る。そのより大きいバッファは、初期バッファよりも高い容量を含む、バッファ126の内の1つであることがある。いくつかの実施形態では、より大きいバッファは初期バッファと同じバッファであってよいが、より大きい容量をもってよい。第2の活動モニタ222は、ストリーミングメディアを記憶する大きいバッファを表す、初期バッファ充填216に図示される初期バッファの容量を超える、より大きいバッファ充填224を示す。アクティブインジケータ226は、第1のストリーム208が、動作218でストリーミングメディアを提供するために使用されることを示す。
いくつかの実施形態によれば、228で第2の接続速度が、クライアント104とホスト102の間で開始できる。たとえば、ホスト102は、ホストとクライアント104の間のネットワーク106によって提供される帯域幅が、第1のストリーム208のビットレートよりも高いビットレートを有するメディアの第2のストリーム210のストリーミングをサポートするほど十分に大きく、したがってユーザ108へのより高品質のメディアのストリームの出力を可能にすると判定できる。代わりに、ホスト102は、帯域幅が圧縮され、中断されないメディアのストリームをサポートするために、第1のストリーム208のビットレートよりも低いビットレートを有する第2のストリーム210のストリーミングだけをサポートできると判定できる。したがって、ホスト102は、228でクライアント104への伝送のために第2のストリーム210を構成し、開始できる。
230で、第2のストリームは、クライアント104上に常駐するバッファ126の内の1つなど、初期バッファの充填を開始できる。第3の活動モニタ232は、削減された大きいバッファ充填234の監視を続ける第1のグラフを示す。一方、第2のグラフ214は、第2のストリーム210によって提供される初期バッファと関連する第2の初期バッファ充填236を示す。プレゼンテーションアプリケーション128は、第3の活動モニタ232の下でアクティブインジケータ226によって示されるように、230で第1のストリームを再生し続けることができる。
238で、プレゼンテーションアプリケーション128は、第2の初期バッファ充填レベルが動作230から初期の容量に達するときに、第2のストリーム210の再生を開始する。240で、第2の大きいバッファが開始され、ホスト102からのストリーミングデータで充填される。第2の大きいバッファ220は、より高い容量を含み、第2のストリームによって提供されるデータを記憶する、バッファ126の内の1つであってよい。たとえば、より大きいバッファは初期バッファと同じバッファであってよいが、より大きい容量をもってよい。第4の活動モニタ242は、ゼロバイトの充填レベルまで削減されたとして第1のストリーム208を描く、空の大きいバッファ充填244を示す。一方、第2のグラフ214は、第2のより大きいバッファ充填246を示す。アクティブインジケータ226は、第2のストリーム210が、動作238でストリーミングメディアを提供するために使用されることを示す。
プロセス200は、一般に第2のストリーム210を、第1のストリーム208のビットレートよりも高いビットレートを有するとして説明するが、このプロセスは、第1のストリームのビットレートから第2のストリームに関連するより低いビットレートに移行することによっても動作できる。したがって、プロセス200は、一般に、第1のビットレートの第1のストリームから第2のビットレートの第2のストリームへの移行を示し、そこでは第2のビットレートが第1のビットレートよりも高いまたは低いことがある。
図3は、本開示のいくつかの実施形態に従って帯域幅を監視し、ビットレートを選択する実例となるプロセス300の流れ図である。プロセス300の動作を説明する順序は、制限として解釈されることを意図されておらず、プロセスを実施するために、任意の数の説明されるブロックが任意の順序で、および/または並列で結合できる。説明のために、プロセス300は、図1の環境100を参照して説明する。
302で、ホスト102は、ネットワーク106を経由してクライアント104との接続を開始する。いくつかの実施形態では、ホスト102は、以前の帯域幅決定を使用してネットワーク接続を分析することによって、または他の既知の技法によって等、接続の帯域幅を決定できる。304で、ホスト102は、クライアント104に常駐する初期バッファを満たすために第1ビットレートでメディアをストリーミングできる。上記に説明したように、ホスト102は単一のコンテンツのために多くの異なるビットレートで符号化されたメディアのストリームを含むことができる。ストリーミングモジュール114は、中断されないまたは実質的に中断されないメディアのストリームを維持しつつ、最高品質のメディアを提供するために、クライアント104へストリーミングのためのメディアの考えられる最高のビットレートを選択できる。いくつかの実施形態では、第1のメディアのストリームは、メディアの中断されないまたは実質的に中断されないストリーミングを保証するために、相対的に低いビットレート値を含むことがある。たとえば、ホスト102がそのメディアのストリームの4つの符号化ビットレートバージョンを有する場合、ホストは、動作304の間にクライアント104へ最低のまたは2番目に低いメディアのビットレートストリームを送信できる。初期バッファは、メディアの第1のストリームの時間またはデータサイズに基づいた所定の容量を含むことができる。いくつかの実施形態では、初期バッファは第1のメディアのストリームの2秒から5秒を含むことがある。一方、他の量のストリーミングメディアは、メディアのタイプ(たとえば音声および/またはビデオ)およびメディアの解像度(たとえば低解像度、高解像度等)に応じて初期のバッッファに記憶できる。
いくつかの実施形態では、ホスト102は304で、クライアント104とのネットワーク接続の帯域幅を計算できる。たとえば、ホスト102は、クライアント104が既知のデータサイズをもつ初期バッファを充填するためにどのくらいの時間を要するのかを決定できる。計算された帯域幅は、以下により詳細に説明する、第2のビットレートを選択するために使用できる理想的なビットレートを決定するために使用できる。
1つまたは複数の実施形態によれば、306で、第1のメディアのストリームがユーザ108に出力される。たとえば、クライアント104は、いったん初期バッファが容量まで充填されると、初期バッファ内に記憶されるデータを使用して第1のメディアのストリームを再生できる。いくつかの実施形態では、クライアント104は、初期バッファがいっぱいになるまでメディアを再生できず、それによってユーザがプレゼンテーションアプリケーション128上での中断されないまたは実質的に中断されないメディアのストリーミングを経験することを保証する。したがって、初期バッファのサイズは、いったんユーザがメディアのストリームの出力の受信を開始すると、ユーザ108によってメディアの中断されないまたは実質的に中断されないメディアのストリーミングの受信を保証するために選択される。
308で、ホスト102は、クライアント104の上に常駐するより大きいバッファを充填するために、第1のビットレートでメディアをストリーミングできる。そのより大きいバッファは、初期バッファとしてデータを記憶するが、より大きい容量をもつ同じバッファであることがある。たとえば、初期バッファは、ストリームが動作306でいつ再生できるのかを示すための閾値決定であることがある。代わりに、そのより大きいバッファは、初期バッファとは異なるバッファであることもある。構成に関わらず、初期バッファおよびより大きいバッファは、クライアント104がユーザに中断されないまたは実質的に中断されないメディアのストリームを提供できるようにする。動作304と同様に、ホスト102は、308でクライアント104とのネットワーク接続の帯域幅を計算できる。プロセス300のいくつかの実施形態では、帯域幅は、動作304、動作308または両方で計算できる。
310で、ホスト102は、上記に説明したように、バッファ充填速度の測定に加えて、またはバッファ充填速度を測定することなく、システム帯域幅チェックを使用して帯域幅を周期的に計算できる。たとえば、ホスト102は、クライアント104に既知のデータサイズを有するデータのパケットを送信できる。クライアント104は、そのデータのパケットのそれぞれを受信すると、ホスト102にメッセージを返し、したがってホストがホストとクライアントの間のネットワーク接続の帯域幅を計算できるようにする。帯域幅を計算する他の既知の技法は、ホスト102によって使用され得る。帯域幅の計算は、周期的に、または所定のイベントの後に固定された間隔で発生できる。たとえば、帯域幅の計算は毎秒1回または複数回発生し、ネットワーク帯域幅を連続して監視できる。
1つまたは複数の実施形態によれば、ホスト102は、312でストリームのビットレートを加速するかどうかを決定する。ビットレートは、測定された帯域幅がメディアの使用可能なより高いビットレートストリームをサポートする場合、加速できる。312で決定されるようにより高いビットレートが実現可能である場合、ホスト102は、ステップ314でバッファ充填レベルのステータスを決定できる。たとえば、クライアント104はより大きいバッファのバッファ充填レベルを監視できる。より大きいバッファが低充填レベルまたは削減充填レベルを含む場合は、バッファは最終的に空で実行し、メディアのストリームの望ましくない中断を引き起すことがある。バッファ充填レベルが相対的に低い場合、プロセス300は、316で、ビットレートを減速することを先制して決定できる。
いくつかの実施形態では、バッファ充填レベルは、ウォーターマークと呼ばれる所定の最小閾値を有することがある。ホスト102は、クライアント104を介してバッファ充填レベルを監視し、いつバッファ充填レベルがウォーターマークを下回るのかを判定する。いくつかの実施形態では、ヒューリスティックモジュール120がバッファの活動の統計分析を実施し、バッファの充填レベルがゼロバイトに近づく可能性があるかどうかを判定する。たとえば、クライアントは、バッファ充填レベルがウォーターマークを下回った後に、バッファの充填レベルの連続スナップショットとして周期的なサンプルを採取できる。バッファ充填レベルの減少を示す連続周期サンプルは、クライアント104への減速されたビットレートストリームのストリーミングを開始するためにホスト102を始動できる。しかし、統計分析が、バッファ充填レベルが空で動作しないと判定した場合、ビットレートは変化しないままとなることがあり、プロセス300は、動作306において等、第1のビットレートでストリーミングを続行できる。
318で、ホスト102は、バッファ126の内の1つで記憶し、初期バッファを充填するために、クライアント104への新しいビットレートを有するメディアをストリーミングできる。新しいビットレートは、他の考えられる要因の中でもホスト102とクライアント104の間のネットワーク接続の帯域幅に基づいて、図1のヒューリスティックモジュール120によって選択され得る。たとえば、ホスト102は、帯域幅がより高いビットレートをサポートできる(つまり、動作312での決定が「はい」である)のか、または帯域幅が現在のストリームビットレートをサポートできず、ビットレートを引き下げる必要がある(つまり、動作316での決定が「はい」である)のかを判定できる。
いくつかの実施形態では、ヒューリスティックモジュール120は、メディアの高品質を維持しつつ、ユーザ108へのメディアの中断されないまたは実質的に中断されないストリーミングを提供するために、ストリームにとって最も適した使用可能なビットレートを選択できる。たとえば、ホスト102は、A、B、C、DおよびEとして示される5つの異なるビットレートで符号化される1個のメディアを含むことがあり、その場合「A」が最低のビットレートで、「E」が最高のビットレートである。クライアント104は、最初に306でビットレート「C」でストリームを再生できる。次に、バッファ充填レベルが、ウォーターマークを下回ることがある。ヒューリスティックモジュール120は、ビットレートが、動作304、308、および310の内の1つまたは複数で測定された帯域幅に基づいて、ビットレート「A」またはビットレート「B」のどちらかに調整されるべきであると判定できる。いくつかの実施形態では、ヒューリスティックモジュール120は、新しいビットレートを選択するために使用できる理想的なビットレートを選択的に決定できる。その新しいビットレートは、使用できる次の大きさのビットレート(現在のビットレートよりも高いか、または低いかのどちらか)ではないことがあり、したがってホスト102は次に高いまたは次に低いビットレートを有さない別のビットレートにジャンプできる。
320で、いったん初期バッファがいっぱいになると、クライアント104は新しいビットレートを有するメディアの新しいストリームを再生する。322で、308での動作と同様に、より大きいバッファがその新しいビットレートを有するストリーミングメディアで充填される。プロセス300では、無期限に帯域幅の監視および動作310〜322でのビットレートへの調整を続けることができる。
図4は、本開示の1つまたは複数の実施形態に従って第1のストリームから第2のストリームに移行する実例となるプロセスの流れ図である。プロセス400の動作を説明する順序は、制限として解釈されることを意図されておらず、プロセスを実施するために、任意の数の説明されるブロックが任意の順序で、および/または並列で結合できる。
1つまたは複数の実施形態によれば、402で、ホスト102は第1のビットレートでメディアをストリーミングする。404で、ホスト102は、ユーザにより質の高いメディアを提供することによって、あるいはメディアのストリーム中の考えられる中断を削減するまたは排除するためにより低い質のメディアを提供することによって、第2のビットレートがユーザ経験の改善を実現できると判定できる。406で、ヒューリスティックモジュール120は、移行実行時を決定し、その移行実行時の間バッファを充填するために第2のメディアのストリームを先へ進めることができる。たとえば、1:12.00(m:ss)の実行時で見られるストリームがユーザに送信されることがある。第2ビットレートのメディアのストリームを開始する前に初期バッファを充填するために、ヒューリスティックモジュール120は、第2の初期バッファを充填するために必要な時間等々の要因に基づいて、1:14.00から1:17.00までのストリーム実行時の範囲がバッファにロードされる必要があると判定できる。この例では、ホストは、初期バッファを充填し、次いでメディアのストリームの中断が最小限の状態で、またはまったく知覚できない状態で、第1のビットレートストリームから第2のビットレートストリームへの移行を同期させるには2秒(2.00)を有するはずである。
408では、ホスト102は第2のビットレートで初期のバッファを充填する。410で、ホストは、第2のビットレートストリームが、第1のビットレートストリームと同期するために休止する必要があるかどうかを判定する。第2のストリームは、第1のビットレートストリームが第2のストリームの開始時間に追いつくまで、412でストリーミングモジュール114によって休止される。ただし、第2のストリームが休止を必要としない場合には、ホスト102は414で、第2のストリームが遅延しているかどうかを判定できる。第2のストリームが遅延している場合、416で、ストリーミングモジュール114は、初期バッファが第2のビットレートストリームで充填されるまで、第1のストリームを休止できる。いくつかの実施形態では、第2のビットレートストリームで充填するために初期バッファにより多くの時間を与えることによって動作416の発生を最小限に抑えるために、ヒューリスティックモジュール120を調整することができ、したがってユーザ108へのメディアの中断の尤度を最小限に抑える。いくつかの実施形態では、ヒューリスティックモジュール120は、以前のバッファ充填速度等の履歴データを使用し、ストリーム充填遅延を予測できる。たとえば、以前の充填速度のサンプルは、メディアの第1のストリームからメディアの第2のストリームへの中断されない移行を実施するために必要な将来の充填速度を演算するために記憶し、分析し、使用することができ、したがってストリーム充填の遅延を回避する。
1つまたは複数の実施形態によれば、418で、移行モジュール118は、クライアント104が第1ビットレートのメディアのストリームから第2ビットレートのメディアのストリームへ移行できるようにする。移行モジュール118は、中断を引き起こさずに考えられる最長の時間の間、ユーザ108に最高のビットレートを提供できる。たとえば、クライアント104がより低いビットレートにダウンロードするとき、より高いビットレートストリームが使用できなくなる(つまり、第1のストリームのためのより大きいバッファがゼロバイトまで削減される)までより高いビットレートのストリーム(第1ビットレート)がクライアントに提供することができ、使用できなくなった時点で同期していたより低いビットレートのストリームへの移行が発生することがある。
いくつかの実施形態では、移行モジュール118は、ある期間に渡って第1のストリームを第2のストリームにクロスフェードさせ、第1のストリームから第2のストリームに徐々に移行できる。クロスフェードは、第1のストリームから第2のストリームへのユーザが知覚可能な変化を減少させることができる。移行モジュール118は、第2のレンダリング装置を第1のレンダリング装置の上に重ね合わせることによってストリームをクロスフェードさせることができ、その場合、第1のレンダリング装置は、第2のレンダリング装置が徐々に明るくなる間に徐々に薄暗くなっていく。さらにまたは代わりに、移行モジュール118は、1つまたは複数のクロスフェードを使用して音声を移行できる。たとえば、ビデオは、2台のレンダリング装置を使用して薄暗くする/明るくすることができる。一方、音声は入力源での音量を調整し、音声のフェードイン/フェードアウト効果を生じさせることによってクロスフェードできる。追加の実施形態では、クロスフェードは、第1のストリームの最後および第2のストリームの最初が実行時において正確に同時ではないときに、中断されないメディアのストリームを提供する上で役立つことができる。
図5は、本開示の1つまたは複数の実施形態に従って、クライアントのために理想的なビットレートを決定し、記憶する実例となるプロセス500の流れ図である。プロセス500の動作を説明する順序は、制限として解釈されることを意図されておらず、プロセスを実施するために、任意の数の説明されるブロックが任意の順序で、および/または並列で結合できる。
ホスト102は、ユーザ108への出力のために、メディアデータベース112からクライアント104に多くの異なる個数のメディアを提供できる。ユーザがウェブサイトをナビゲートし、異なるソースのメディアをプレビューするときなど、ユーザ108は、しばしば多くの個数のメディアを受信することを所望することがある。プロセス500では、ホスト102が、通常は、確立されたネットワーク接続を使用して異なるメディアコンテンツをストリーミングする連続セッションの間に、以前のストリーミング活動を、ユーザ108のための最高のビットレートのストリーミングメディアに提供できるようにする。
502で、ホスト102は、メディアのストリームのビットレートを決定するために、第1のコンテンツの第1のメディアのストリームを監視できる。504で、ホストは、ネットワーク接続の帯域幅をチェックできる。たとえば、ホスト102は、動作502からのビットレートが受け入れ可能であるか検証することができる、あるいはホストは理想的なビットレートを決定できる。理想的なビットレートは、動作502で決定されるビットレートであることもあれば、あるいは理想的なビットレートはホスト102とクライアント104間の以前の対話に基づく新しいビットレートであることもある。506では、ホスト102はクライアント104へのストリーミングメディアにとって理想的なビットレートを記憶できる。最後に、508で、ホスト102は、クライアント104に対する第1のコンテンツの新しいメディアのストリームを、理想的なビットレートでまたは理想的なビットレート近くで開始できる。
(実例となる分析ツール)
図6は、本開示のいくつかの実施形態に従って、クライアント上でのストリーミングを監視するために、実例となるユーザインタフェース602を含む実施形態600を示す。ユーザインタフェース602は、ホスト102からクライアント104に送信される1つまたは複数のメディアのストリームを監視するために使用できる。ユーザインタフェース602は、(たとえばユーザ108による)クライアント104とのユーザ対話および/またはホストとクライアント間のストリーミング活動を監視し、分析するためのホスト102とのユーザ対話を可能にできる。
1つまたは複数の実施形態によれば、ユーザインタフェース602は、第1のストリームを監視するための第1のグラフ604、および第2のストリームを監視するための第2のグラフ606を含む。他の実施形態では、ホストによってクライアントに提供されるメディアのストリームを監視するために、ユーザインタフェース602内により多くのまたはより少ないグラフが実装できる。いくつかの実施形態では、第1のグラフおよび第2のグラフはウォーターマーク608を表示できる。たとえば、ウォーターマーク608は、クライアントに提供されるメディアのおストリームについてビットレートが引き下げられるべきかどうかを判定するために、図3の動作314で使用できる。
環境600では、第1のグラフ604の部分610が、説明のため追加の詳細を示すために拡大されている。その部分610は、より大きいバッファがウォーターマーク608を下回るときのグラフを示す。動作314に関して上記に説明したように、ヒューリスティックモジュール120が、バッファの活動の統計分析を実施し、バッファの充填レベルがゼロバイトに達する可能性があるかどうかを判定する。たとえば、クライアントは、バッファ充填レベルがウォーターマークを下回った後のバッファの充填レベルの周期的なサンプル612を採取できる。連続周期サンプル612(1)、...、612(n)は、クライアント104へのビットレートが削減された状態でメディアのストリームのストリーミングの開始するためにホスト102を開始できる。第1のグラフ604は、周期的なサンプル612の活動に出力を提供するために第1のカウンタ614を含むことができる。たとえば、第1のカウンタ614は、周期的なサンプル614から判定されるように、バッファ充填レベルの連続減少の数をカウントできる。同様に、第2のカウンタ616は、第2のストリームおよび第2のグラフと関連付けることができる。
618で、ユーザインタフェースは、ホスト102とクライアント104の間のネットワーク接続の測定された帯域幅を出力できる。たとえば、測定された帯域幅は、動作304、308、および/または310でホスト102によって取得され得る。さらに、ユーザインタフェース602は、経時的にユーザ108に表示されるフレーム数を含むフレームグラフ620を表示できる。いくつかの実施形態では、ユーザインタフェース602はユーザ入力を含むことがある。たとえば、ユーザ入力は、ユーザが、新しいビットレートストリームの開始に必要な点612の数を選択できるようにする。ユーザ入力は、ユーザが帯域幅618も入力できるようにもする。
(実例となるストリーム複雑度分析)
図7は、本開示のいくつかの実施形態に従ってメディアのストリームを分析し、可変ビットレート(VBR)のメディアのストリームの部分の複雑度を決定するために実例となるチャート700を示す。チャート700は、時間値704上で描かれる複雑度評価702を含む。複雑度702は、ビットレート値と関連付けることができる。
いくつかの実施形態によれば、メディアのストリームは経時的に複雑度を決定するために分析できる。たとえば、ヒューリスティックモジュール120は、メディアのストリームのための複雑度情報を含むストリーム複雑度ファイルを作成できる。いくつかの実施形態では、ストリーム複雑度ファイルは、ホスト102からクライアント104に送信され、クライアントがメディアのストリームの将来の部分の複雑度を決定できるようにする。代わりにまたはさらに、ホスト102はそのストリーム複雑度ファイルを使用し、クライアントに送信されるメディアのストリーミングの態様を調整することができ、これでユーザ108に中断されないストリーミングメディアを提供できる。
複雑度情報は、チャート700上でVBR線706として描くことができる。上記に説明したように、VBRのメディアのストリームは、中央ビットレート値または平均ビットレート値であることがある指定ビットレート708を含むことがある。指定ビットレート値708は、チャート700上に描かれることがある。いくつかの実施形態では、帯域幅線710はチャート700上に表すことができる。帯域幅線710は、図1のホスト102とクライアント104間のネットワーク接続のビットレート容量を表すことができる。
VBR線706の分析が、第1の複雑な部分712および第2の複雑な部分714などの複雑な部分を示すことがある。複雑な部分712、714は、メディアのストリームのためのビットレートが、指定ビットレート値よりも高い部分を含むことがある。いくつかの実施例では、ホスト102からのストリーミングメディアによってバッファ126が充填され得るよりも速く、メディアのストリーミングがユーザ108に出力できるため、複雑な部分712、714は、バッファ充填の枯渇を生じさせることがある帯域幅線710よりも高いビットレートを含むことがある。複雑な部分712、714が、バッファ容量がサポートできるよりも長い持続時間を有する場合、バッファは、ホスト102またはクライアント104による追加の処置なしに使い切られることがある。
さらに、VBR線706は、第1の低複雑度部分716および第2の低複雑度部分718などの低い複雑度の部分を示すことができる。低複雑度部分716、718がホスト102からクライアント104にストリーミングされるとき、メディアのストリームがユーザ108にプレイバックされるよりも速く、バッファ126は充填することができ、したがって低充填レベルを有するバッファの補充を可能にする。いくつかの実施形態では、バッファ126は、図2のプロセス200を使用してビットレート値を調整しなくても、中断されないメディアのストリーミングを可能にするほど十分なメディアのストリームを記憶できる。しかしながら、いくつかの実施形態では、第2の複雑な部分714などの複雑な部分の長い持続時間が、ストリーミングモジュール114または移行モジュール118によって追加の処置が講じられずにクライアント104にストリーミングされるとき、バッファは使い切られる可能性がある。
1つまたは複数の実施形態によれば、ヒューリスティックモジュール120は、複雑度対時間を有するVBR線706によって表される情報を含むストリーム複雑度ファイルを生成できる。たとえば、ファイルは毎秒または別の期間など、メディアのストリームの期間の間ビットレート値を含むことができる。いくつかの実施形態では、ストリーム複雑度ファイルは、第1のビットレートのメディアのストリームを第2のビットレートのメディアのストリームにいつ移行すべきかを判定するために、移行モジュール118によって使用され得る。たとえば、ストリーム複雑度ファイルを分析すると、時間が第2の複雑な部分714の開始に一致するときに、移行モジュール118は第1のビットレートから第2のビットレートへの移行を生じさせる結果となる。一方、バッファ126は、第1の複雑な部分712のストリーミング中に第1のビットレートを持続するほど十分に大きいことがある。
いくつかの実施形態では、ストリーミングモジュールは、ストリーム複雑度ファイルの分析に基づいてバッファ126の容量を拡大できる。たとえば、拡大されたバッファ容量は、第2の低複雑度部分718の間のストリーミングメディアで充填することができ、バッファが、バッファの充填レベルをゼロバイトのデータにまたは別の最小閾値まで使い切ることなく、第2の複雑な部分714の間にストリーミングメディアを提供できるようにする。いくつかの実施形態では、バッファサイズの拡大と第2のビットレートのメディアのストリームへの移行を組み合わせることによって、中断されないメディアのストリームのユーザ108への出力が可能になる。
1つまたは複数の実施形態によれば、ストリーム複雑度ファイルは、メディアのストリームがユーザ108にプレイバックされている間にVBR線706を周期的に参照することによってメディアをストリーミングする間に使用できる。ストリーム時間720は、チャート700に含まれることがある。出力時間は、メディアのストリームがユーザにプレイバックされる時間であることもあれば、それは、メディアのストリームがバッファ126を充填するために使用される時間であることもある。説明のため、ストリーム時間720は、バッファ126を充填するためにメディアのストリームが使用される時間として説明する。参考までに、ストリーム時間720の前の時間値704は過去の時間722である。一方ストリーム時間後の時間は将来の時間724である。
将来時間ウィンドウ726が、チャート700に含まれることがある。将来時間ウィンドウ726は、将来の時間724でのVBR線706を監視するために使用できる。いくつかの実施形態では、将来時間ウィンドウ726は、バッファ容量に対応するストリーム時間に対して将来の時間に選択できる。たとえば、バッファ容量が30秒のストリーミングメディアである場合、他のバッファ容量および将来時間ウィンドウ値が使用できるが、将来時間ウィンドウ726は、15秒から45秒の持続時間など、30秒の前後のVBR線706のセグメントを含むことができる。いくつかの実施形態では、移行モジュール118は、将来時間ウィンドウ内の情報を使用して、第1のビットレートから第2のビットレートへの移行を生じさせることができる。さらにまたは代わりに、ストリーミングモジュール114は、将来時間ウィンドウ726に基づいてバッファ容量を拡大できる。
図8は、本開示の1つまたは複数の実施形態に従って、クライアントへのストリーミングを調整するために複雑度データを有するメディアのストリームの分析を使用する、実例となるプロセス800の流れ図である。プロセス800の動作を説明する順序は、制限として解釈されることを意図されておらず、プロセスを実施するために、任意の数の説明されるブロックが任意の順序で、および/または並列で結合できる。説明のために、プロセス800は、図1の環境100を参照して説明する。
いくつかの実施形態によれば、802で、ヒューリスティックモジュール120は、可変ビットレート(VBR)のメディアのストリームのためのストリーム複雑度ファイルを生成できる。たとえば、ヒューリスティックモジュール120は、メディアデータベース112内のメディアのストリームの符号化ごとにストリーム複雑度ファイルを作成できる。804で、ヒューリスティックモジュール120は、図7の第1の複雑な部分712および第2の複雑な部分714など、複雑な部分の位置をストリームの中で突き止めるためにストリーム複雑度ファイルを分析できる。動作804がメディアのストリームについて一度発生することもあれば、動作804が将来時間ウィンドウ726を使用することによってメディアのストリームについて周期的に発生することもある。
複雑な部分が806で位置付けられる場合、移行モジュール118は808でビットレートを調整できる。ただし、複雑な部分が動作806で位置付けられない場合、プロセス800では動作804に戻り、ホスト102からクライアント104にメディアをストリーミングする間に、ストリーム複雑度ファイルを分析できる。動作808に戻ると、移行モジュール118は、ビットレート調整が必要であると判定し、810で新しいビットレートで新しいストリームを移行できる。新しいストリームは、動作802でヒューリスティックモジュールによって生成できる新しいストリーム複雑度ファイルを含むことができる。
いくつかの実施形態では、ストリーミングモジュール114は、812でバッファ容量を調整するべきかどうかを判定できる。たとえば、ストリーム複雑度ファイルは、拡大されたバッファが、新しいビットレートの新しいストリームに移行しなくても、ユーザ108への中断されないストリーミングメディアを提供できるようにすることを示すことができる。ストリーミングモジュール114は、814で複雑な部分を収容するために拡大されたバッファを充填できる。代わりに、ストリーミングモジュールは、動作812でバッファ容量を調整できず、プロセス800は、動作804でストリーム複雑度ファイルを分析することによって続行できる。
拡大されたバッファが動作814で充填される、または移行モジュール118が動作810で新しいビットレートの新しいストリームに移行する場合、いったん複雑な部分がホスト102からクライアント104にストリーミングされてしまうと、プロセス816はバッファ容量および/またはメディアのストリームを以前の設定値に戻すことができる。たとえば、プロセス800は、いったん複雑な部分がクライアントにストリーミングされてしまうと、動作818でより高いビットレートのメディアのストリームに戻ることによって、ユーザへの最高の質のメディアのストリームを提供できるようにする。最後に、プロセス800は、プロセスが周期的なループを使用して、ストリーム複雑度モジュールでデータを実装し、ユーザ108へのプレイバックのために中断されないストリーミングメディアを提供するときなど、ストリーム複雑度ファイルを分析するために動作804に戻ることができる。
いくつかの実施形態では、ヒューリスティックモジュール120は、動作810にとっての理想的なビットレートを決定するためにストリーム複雑度ファイルを分析できる。たとえば、ヒューリスティックモジュール120は、ネットワーク接続の帯域幅でストリーム複雑度ファイルのデータを処理し、メディアのストリームのVBR実行時中にバッファ充填レベルの多様なシナリオを作成できる。この分析は、バッファ充填を使い切らない理想的なビットレートを選択できるようにする。さらに、分析は、バッファ充填を使い切るのを回避するために実施できるバッファ容量拡大を決定できる。上記に説明したように、1つまたは複数の実施形態では、拡大バッファ容量を使用することによって、新しいビットレートに切り替えることによって、または両方によって、ストリーミングモジュール114が中断されないストリーミングメディアを提供できるようにする。
(実例となる動作)
図9は、図1のホストサーバ102と関連するモジュールの1つまたは複数の実施形態の実例となるアーキテクチャ900のブロック図を示す。アーキテクチャ900は、1台または複数のプロセッサ902、およびその1台または複数のプロセッサ902によって実行可能である命令を格納するメモリ904を含む。
いくつかの実施形態に従って、ストリーミングモジュール114は、ストリーミングマネージャ906を含むことができる。ストリーミングマネージャ906は、符号化された異なるビットレートでストリーミングメディアを提供し、メディアデータベース112および/またはストリーミング待ち行列116に常駐することができる。いくつかの実施形態では、ストリーミングマネージャ906は、メディアをストリーミングする前に損失の多いメディアファイル等のメディアを修正し、したがってメディアコンテンツのインスタンスごとに複数のファイルを維持する必要性を削除することができる。
動作304、308、および310で説明したような、ホスト102とクライアント104間のネットワーク接続の帯域幅を計算するために、帯域幅計算機908が使用できる。レンダリングモジュール910は、プレゼンテーションアプリケーション128によるプレイバックのためにクライアント104に視覚出力または聴覚出力を提供できる。バッファモジュール912は、バッファ126等のクライアント上でのバッファ活動を監視する、および/または分析することができる。
いくつかの実施形態では、移行モジュール118は、ホスト102に、ユーザ108へのプレイバックのためのクライアント104への中断されないメディアのストリームを維持しつつ連続ストリームを第1のメディアのストリームから第2のメディアのストリームに移行させるために、移行マネージャ914を含むことができる。移行マネージャは、メディアのストリームで中断を引き起こすことなく可能な限り最長の時間の間ユーザに最高のビットレートを提供するように構成できる。クロスフェードモジュール916は、第2のビデオレンダリング装置を明るくしつつ、レンダリングモジュール910によって提供される第1のビデオレンダリング装置を薄暗くすることによってなど、徐々に音声および/または映像をクロスフェードするために使用できる。
1つまたは複数の実施形態では、ヒューリスティックモジュール120は、統計アナライザ918を含むことができる。統計アナライザ918は、バッファの活動の統計分析を実施し、バッファの充填レベルがゼロバイトに達する可能性があるかどうかを判定できる。たとえば、統計アナライザは、バッファ充填レベルがウォーターマークを下回った後のバッファの充填レベルの周期的なサンプルを分析できる。ビットレートセレクタ920は、ネットワーク106の測定された帯域幅に基づいてストリーミングメディアにとって理想的なビットレートを決定できる。ヒューリスティックモジュール120は、メディアコンテンツのビットレートの選択を動的に制御することができ、他の要因の中でも測定された帯域幅に基づいてユーザ108に最高ビットレートのメディアのストリームを提供し、したがってあらゆるインスタンスで隣接するビットレートを選択するのではなく、理想的なビットレートを選択できる。実行時計算機922は、初期バッファを充填するための時間を含めた第2のストリームに移行するために必要な時間に基づいて、第2のストリームのための将来の実行時での実行時開始を計算できる。複雑度アナライザ924は、メディアの可変ビットレートストリームに基づいてストリーム複雑度ファイルを作成できる。さらに、複雑度モジュールは、理想的なビットレートまたは拡大バッファ容量の選択を可能にし、メディアのストリームが、さもなければバッファを使い切る可能性のある複雑な部分を含むときに、ユーザ108に中断されないストリーミングメディアを提供できるようにする。
第1節。クライアントとホストの間でメディアをストリーミングする方法は、
バッファを、初期ビットレートで初期の容量まで、第1のメディアのストリームで充填することと、
バッファが初期容量に達したときに、第1のメディアのストリームを再生することと、
第1のメディアのストリームを再生するのと同時により大きい容量までバッファを充填することと、
バッファのバッファ充填レベルステータスを決定することと、
バッファのバッファ充填レベルステータスがウォーターマークを下回るときに、第1のメディアのストリームの初期ビットレートよりも低い、代替ビットレートを有する第3のメディアのストリームに切り替えることと、
を含む。
第2節。第1節に記載の方法は、さらに
クライアントとホストの間の帯域幅を決定することと、
帯域幅が、第1のメディアのストリームの初期ビットレートよりも高い代替ビットレートをサポートするときに、その代替ビットレートを有する第2のメディアのストリームに切り替えることと、
を含む。
第3節。第3のメディアのストリームに切り替えることは、バッファが空になるまで第1のメディアのストリームを再生することを含み、第2のメディアのストリームに切り替えることは、第2のバッファの初期容量に到達したときに第2のメディアのストリームを再生することを含む、第1節に記載の方法。
第4節。第2のメディアのストリームおよび第3のメディアのストリームの内の少なくとも1つに切り替えることが、クライアントへの実質的に中断されないメディアのストリームを提供しつつ、先制して発生する、第1節に記載の方法。
第5節。帯域幅が、初期バッファの充填速度またはシステム帯域幅チェックの内の少なくとも1つによって決定される、第1節に記載の方法。
第6節。第1節に記載の方法は、さらに、大きいバッファから第1のメディアのストリームを再生するのと同時に第2の初期バッファを充填することを含む。
第7節。第1節に記載の方法は、さらに、帯域幅またはバッファ充填レベルステータスの内の少なくとも1つに基づいて理想的なビットレートを決定することを含み、その理想的なビットレートは、複数の選択可能なビットレート値から第2のメディアのストリームまたはメディアの第3のストリームを選択するために使用される。
第8節。第7節に記載の方法は、さらに、理想的なビットレート値を記憶し、メディアコンテンツの以降のストリームの初期ビットレートを予測することを含む。
第9節。コンテンツをストリーミングする方法であって、この方法は、
コンテンツをストリーミングするために使用されるネットワーク接続の帯域幅を決定することと、
第1のストリームのバッファを分析し、バッファ充填ステータスを決定することと、
帯域幅が、第2のビットレートでの第2のストリームの中断されない伝送を可能にし、第2のビットレートが第1のビットレートよりも高いときに、または
バッファ充填ステータスが、ゼロバイトより大きいウォーターマークを下回り、第2のビットレートが第1のビットレート未満であるときに、
第1のビットレートでの第1のストリームを、第2のビットレートでの第2のストリームに切り替えることと、
を含む。
第10節。第1のストリームから第2のストリームへ切り替えることが、実質的に中断されないストリーミングコンテンツの移行を含む、第9節に記載の方法。
第11節。第1のストリームから第2のストリームへの切り替えが、
第1のストリームの第1のビデオレンダリング装置を薄暗くし、同時に第2のストリームの第2のビデオレンダリング装置を明るくすること、または
第1のストリームの第1の音声信号をフェードアウトし、同時に第2のストリームの第2の音声信号をフェードインすること、
の内の少なくとも1つを含む、第10節に記載の方法。
第12節。1つまたは複数のコンピュータ可読媒体は、1または複数のプロセッサ上で実行されるときに、
第1のメディアのストリームを、ネットワーク接続を通して、第1のビットレートのバッファへ送信する動作と、
バッファの減少するバッファ充填レベルおよびネットワーク接続の過剰な帯域幅容量の内の少なくとも1つを決定する動作と、
初期バッファ容量を充填するために、第1のビットレートで第2のバッファまでネットワーク接続を通して第2のメディアのストリームを開始する動作と、
第2のストリームの初期バッファ容量がいっぱいのときに、第1のビットレートの第1のメディアのストリームからの出力を、第2のビットレートの第2のメディアのストリームに移行する動作と、
を含む動作を実施するためのコンピュータ実行可能命令を記憶する。
第13節。第12節に記載の1つまたは複数のコンピュータ可読媒体は、さらに、減少するバッファ充填レベルまたは帯域幅の内の少なくとも1つに基づいて理想的なビットレートを決定することを含み、その理想的なビットレートは第2のビットレートを選択するために使用される。
第14節。第2のビットレートが、所定のビッレート値のグループから選択される、第13節に記載の1つまたは複数のコンピュータ可読媒体。
第15節。第1のビットレートからの出力を第2のビットレートに移送することが、第1のメディアのストリームを処理する第1のレンダリングモジュールの出力、および第2のメディアのストリームを処理する第2のレンダリングモジュールの出力をクロスフェードすることを含む、第12節に記載の1つまたは複数のコンピュータ可読媒体。
第16節。第2のビットレートへの移行が、最も長い持続時間の間、クライアントに出力される最高のビットレートを保存するために開始される、第12節に記載の1つまたは複数のコンピュータ可読媒体。
第17節。第2のビットレートでストリーミングメディアを開始することが、第2のビットレートを有するメディアのストリームのための将来の実行時開始時間を選択することを含み、将来の実行時開始時間が、初期バッファ容量がいっぱいである瞬間の第1のストリームの実行時に等しい、または実行時よりも遅い、第12節に記載の1つまたは複数のコンピュータ可読媒体。
第18節。減少するバッファ充填を決定することが、バッファ充填がいつウォーターマークを下回るのかを決定すること、およびバッファ充填レベルの周期的なサンプルを分析することを含む、第12節に記載の1つまたは複数のコンピュータ可読媒体。
第19節。システムは、
プロセッサと、
プロセッサによって実行可能な命令を有するメモリと、
を備え、そのメモリが、
複数のビットレートでメディアのストリームに選択的にアクセスし、クライアントにメディアのストリームの内の少なくとも1つを送信するためのストリーミングモジュールと、
クライアントにとってのメディアのストリームの理想的なビットレートを決定し、その理想的なビットレートへの移行をいつ開始すべきかを決定するためのヒューリスティックモジュールと、
メディアのストリームの初期ビットレートから理想的なビットレートへ移行するための移行モジュールと、
を含む。
第20節。ストリーミングモジュールは、さらに初期ビットレートを有するメディアのストリームを出力するための第1のレンダリングモジュールと、第2のビットレートを有するメディアのストリームを出力するための第2のレンダリングモジュールとを含む、第19節に記載のシステム。
第21節。移行モジュールが、第1のレンダリングモジュールの出力を、第2のレンダリングモジュールの出力でクロスフェードする、第20節に記載のシステム。
第22節。ヒューリスティックモジュールが、
ホストとクライアントの間のネットワーク接続の帯域幅を測定すること、または
初期ビットレートのバッファがゼロバイトに達するかどうかを判定するためにバッファ充填レベルを監視することと、
の内の少なくとも1つによって理想的なビットレートを決定する、第19節に記載のシステム。
第23節。ストリーミングモジュールが、初期ビットレートのメディアのストリームの第1のバッファ、および理想的なビットレートでのメディアのストリームの第2のバッファを制御するためのバッファリングモジュールを含み、バッファリングモジュールがウォーターマークを下回るバッファ充填値を有するときに警報を提供するように構成され、警告が理想的なビットレートでメディアのストリームを開始する、第19節に記載のシステム。
第24節。バッファを監視する方法は、
バッファ容量未満、またはバッファ容量に等しい充填レベルを有するバッファから初期ビットレートでメディアをストリーミングすることと、
バッファの充填レベルを周期的に監視することと、
充填レベルがウォーターマークを下回ったときに、充填レベルの複数の周期的なサンプルを格納することと、
複数の周期的なサンプルを分析し、初期ビットレートに比してより低いビットレートへの移行が、中断されないメディアのストリームを提供するために必要であるかどうかを判定することと、
を含む。
第25節。第24節に記載の方法は、さらに、複数の周期的なサンプルに基づいてより低いビットレート値を決定することを含む。
第26節。第24節に記載の方法は、さらに、
初期ビットレートに比してより低いビットレートへの移送が必要なときに、より低いビットレートでメディアのストリームを開始し、初期バッファ充填レベルがゼロに達する前に、第2のバッファ初期容量を充填することと、
初期バッファの充填レベルがゼロバイトに到達したときに、第2のバッファから第2のメディアのストリームを再生することと、
を含む。
第27節。ストリーミングコンテンツの間で移行する方法であって、その方法は、
第1のメディアのストリームの第1のビデオレンダリング装置を薄暗くし、第2のメディアのストリームの第2のビデオレンダリング装置を明るくすること、または
第1のメディアのストリームの第1の音声信号をフェードアウトし、第2のメディアのストリームの第2の音声信号をフェードインすること、
の内の少なくとも1つによって、第1のビットレートでホストから受信された第1のメディアのストリームから、第2のビットレートでホストから受信された第2のメディアのストリームに移行することと、
を含む。
第28節。第1のビデオレンダリング装置を薄暗くし、第2のビデオレンダリング装置を明るくすることが同時に発生し、第1の音声信号をフェードアウトすることおよび第2の音声信号をフェードインすることが同時に発生する、第27節に記載の方法。
第29節。第1のビデオレンダリング装置および第2のビデオレンダリング装置が、オーバレイとして配置される、第27節に記載の方法。
第30節。ストリーミングコンテンツを分析する方法であって、この方法は、
可変ビットレートを有するメディアのストリームを、ビットレート指定で入手することと、
メディアのストリームのためのストリーム複雑度データをマッピングするために、メディアのストリームの持続時間の期間ごとにビットレートを決定することと、
ストリーム複雑度データを保存することと、
ストリーム複雑度データを分析し、クライアントがメディアのストリームをプレイバックするときに、複雑な部分がプレイバックバッファを使い切るかどうかを判定することと、
ストリーム複雑度データの分析が、複雑な部分を含み、クライアントに、
指定されたビットレートに比してより低い平均ビットレートを有する第2のメディアのストリームへ移行する、または
初期バッファ容量より大きいバッファ容量を充填するためにバッファ容量を拡大し、クライアントが複雑な部分をプレイバックするときにバッファの枯渇を防止する、
ことの少なくとも1つを行うように信号で知らせることと、
を含む。
第31節。ストリーム複雑度データを分析することが、
メディアのストリームを送信するために使用されるネットワーク接続の帯域幅を測定することと、
ストリーム複雑度データの部分ごとに予想バッファ枯渇速度を推定することと、
バッファの枯渇および帯域幅に基づいてバッファ補充をシミュレーションし、クライアントがメディアのストリームをプレイバックするときに、複雑な部分がバッファを使い切るかどうかを判定することと、
を含む、第30節に記載の方法。
第32節。指定ビットレートに比して低い平均ビットレートを有する第2のメディアのストリームへの移行が、ストリーミングコンテンツの実質的に中断されない出力を提供することを含む、第30節に記載の方法。
第33節。バッファ容量を拡大することが、
複雑な部分の持続時間および複雑度に基づいて理想的なバッファ容量を計算することと、
バッファが、メディアのストリームの複雑な部分に達する前に理想的なバッファ容量をストリーミングデータで充填することと、
を含む、第30節に記載の方法。
第34節。1つまたは複数のコンピュータ可読媒体は、1台または複数のプロセッサ上で実行されるときに、
可変ビットレートを有するメディアのストリームにアクセスする動作と、
アクセスしたメディアのストリームの期間ごとに複雑度値を記憶する動作と、
記憶された複雑度値を、メディアのストリームに関連する複雑度ファイルに出力する動作と、
を含む動作を実施するための、コンピュータ実行可能命令を記憶する。
第35節。第34節に記載の1つまたは複数のコンピュータ可読媒体は、さらに、1台または複数のプロセッサ上で実行されるときに、アクセスされたメディアのストリームの期間ごとの複雑度評価を作成することを含む動作を実施するための命令を記憶し、複雑度評価は、期間ごとの平均ビットレートを含む。
第36節。第34節に記載の1つまたは複数のコンピュータ可読媒体は、さらに、1台または複数のプロセッサ上で実行されるときに、メディアのストリームの1つまたは複数の連続期間が、ネットワーク接続の帯域幅よりも大きい代表的なビットレートを有する複雑な部分を識別することを含む動作を実施するための命令を記憶し、その複雑な部分のメディアのストリームを出力すると、現在のバッファ容量でのバッファは使い切られることになるはずである。
第37節。第34節に記載の1つまたは複数のコンピュータ可読媒体は、さらに、1台または複数のプロセッサ上で実行されるときに、メディアのストリームとともにクライアントに記憶されている複雑度値を送信することを含む動作を実施するための命令を記憶する。
第38節。第34節に記載の1つまたは複数のコンピュータ可読媒体は、さらに、1台または複数のプロセッサ上で実行されるときに、
複数のビットレート値のために各メディアのストリームにアクセスすることと、
複数のビットレート値のためにアクセスされた各メディアのストリームの期間ごとに複雑度値を記憶することと、
各メディアのストリームと関連する複数の複雑度ファイルに記憶された複雑度値を出力することと、
を含む動作を実施するための命令を記憶する。
第39節。複雑度値がビットレート値である、第34節に記載の、1つまたは複数のコンピュータ可読媒体。
第40節。方法は、
可変ビットレート指定を有するメディアのストリームと関連する複雑度ファイルを受信し、複雑度ファイルがそのメディアのストリームの部分ごとのビットレート値を含むことと、
メディアのストリームを受信するために使用されるネットワーク接続と関連する帯域幅を決定することと、
複雑度ファイルに基づいてメディアのストリームのバッファ枯渇セグメントの位置を突き止め、その複雑度のために、バッファ枯渇セグメントが帯域幅でのバッファの枯渇を引き起こす可能性があることと、
を含む。
第41節。複雑度ファイルに基づいてメディアのストリームのバッファ枯渇セグメントの位置を突き止めることが、メディアのストリームの将来の部分を表す将来のビットレートを予測するための時間チェックで周期的に発生し、その将来のビットレートが、バッファが、将来の部分のストリーミングの間の帯域幅で使い切られる可能性があるかどうかを判定するために使用される、第40節に記載の方法。
第42節。将来の部分がバッファの容量に基づいて選択される、だい41節に記載の方法。
第43節。複雑度ファイルに基づいてメディアのストリームのバッファ枯渇セグメントの位置を突き止めることがユーザへのメディアのストリームのプレイバック前に発生する、第40節に記載の方法。
第44節。第43節に記載の方法は、さらに、新しいビットレートストリームが、バッファの枯渇のシミュレーションを引き起こす可能性があるかどうかを判定するためにバッファの枯渇を引き起こすセグメント上で、新しいメディアのストリームの新しいビットレート値を使用してユーザへのプレイバックをシミュレーションすることを含む。
第45節。第40節に記載の方法は、さらに、クライアントにストリーミングされるときに、帯域幅に基づいてバッファの枯渇を回避する、メディアのストリームを表す理想的なビットレートを決定することを含む。
第46節。第45節に記載の方法は、さらに、可変ビットレート指定を有するメディアのストリームから、メディアのストリームを表す理想的なビットレートを有するメディアのストリームへ移行することを含む。
第47節。移行することが、
音声をクロスフェードさせること、または
可変ビットレートを有するメディアのストリームを出力するために第1のビデオレンダリング装置を薄暗くし、同時に理想的なビットレートを有するメディアのストリームを出力するために第2のビデオレンダリング装置を明るくすることと、
の内の少なくとも1つを含む、第46節に記載の方法。
第48節。第40節に記載の方法は、さらに、バッファの枯渇を引き起こすセグメントのプレイバックの前に、バッファを拡大することをさらに含む。
第49節。バッファを拡大することが、バッファ枯渇セグメントのプレイバックの前に拡大されたバッファを充填することを含み、拡大されたバッファがバッファの枯渇を妨げ、メディアのストリームの実質的に中断されないプレイバックを可能にする、第48節に記載の方法。
結論
主題は特定の構造上の特長、および/または方法論的行動に特定の言語で説明してきたが、添付請求項に定義される主題が、必ずしも説明された特定の特長または動作に制限されていないことが理解されるべきである。むしろ、特定の特長及び動作は、請求項を実施する実例となる形式として開示されている。

Claims (5)

  1. クライアントとホストの間でメディアをストリーミングする方法であって、
    初期ビットレートで前記ホストから受信する第1のメディアのストリームで前記クライアントの第1のバッファを前記第1のバッファの初期容量まで充填することと、
    前記第1のバッファの充填レベルステータスを監視することと、
    前記第1のバッファの前記充填レベルステータスが前記第1のバッファの初期容量に達したときに前記第1のメディアのストリームを再生することと、
    前記第1のメディアのストリームを再生するのと同時に、より大きい容量まで前記第1のバッファを充填することと、
    前記第1のバッファから前記第1のメディアのストリームを再生させるのと同時に、前記第1のメディアのストリームと同一のコンテンツである第2のメディアのストリームを前記第1のメディアのストリームの前記初期ビットレートよりも低い代替ビットレートで前記ホストから受信し、前記第1のバッファとは異なる、前記クライアントの第2のバッファを、前記第2のバッファの期容量まで充填することと、
    前記第1のバッファの前記充填レベルステータスが所定の最小閾値を下回るときに、前記第2のバッファからの前記第2のメディアのストリームを再生するために前記第2のメディアのストリームへ切り替えることと
    を含むことを特徴とする方法。
  2. 前記第1のバッファの前記充填レベルステータスが前記第1のバッファの初期容量より大きい容量まで満たされているときに、
    前記クライアントと前記ホストの間で帯域幅を決定することと、
    前記帯域幅が、前記第1のメディアのストリームの前記初期ビットレートよりも高い代替ビットレートをサポートするとき、前記第1のメディアのストリームの前記初期ビットレートよりも高い代替ビットレートを有する第3のメディアのストリームを再生するために前記第3のメディアのストリームに切り替えることと
    をさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記第1のバッファの前記充填レベルステータスが前記所定の最小閾値を下回るときに、
    前記第1のバッファの前記充填レベルステータスゼロバイトになるまで前記第1のメディアのストリームを再生させ、その後、前記第2のバッファからの前記第2のメディアのストリームを再生するために前記第2のメディアのストリーム切り替えることと
    をさらに含むことを特徴とする請求項1に記載の方法。
  4. 実質的に中断されないメディアのストリームを前記クライアントに提供しつつ、前記第2のメディアのストリーム、および前記第3のメディアのストリームの内の少なくとも1つに切り替えることが、前記第1のバッファの記充填レベルステータスがゼロバイトになる前に発生することを特徴とする請求項2に記載の方法。
  5. 前記帯域幅または前記第1のバッファの前記充填レベルステータスの内の少なくとも1つに基づいてビットレートを決定することをさらに含み、前記ビットレートが、複数の選択可能ビットレート値から、前記第1のバッファの前記充填レベルステータスが所定の最小閾値を下回るときに前記第2のメディアのストリーム、または、前記帯域幅が前記第1のメディアのストリームの前記初期ビットレートよりも高い代替ビットレートをサポートするとき前記第3のメディアのストリームを、選択するために使用されることを特徴とする請求項2に記載の方法。
JP2011512585A 2008-06-06 2009-06-02 クライアント側ストリームスイッチング Active JP5659154B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/134,988 US9047236B2 (en) 2008-06-06 2008-06-06 Client side stream switching
US12/135,034 2008-06-06
US12/135,034 US9167007B2 (en) 2008-06-06 2008-06-06 Stream complexity mapping
US12/134,988 2008-06-06
PCT/US2009/045995 WO2009149100A1 (en) 2008-06-06 2009-06-02 Client side stream switching

Publications (2)

Publication Number Publication Date
JP2011523298A JP2011523298A (ja) 2011-08-04
JP5659154B2 true JP5659154B2 (ja) 2015-01-28

Family

ID=41398481

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011512585A Active JP5659154B2 (ja) 2008-06-06 2009-06-02 クライアント側ストリームスイッチング

Country Status (4)

Country Link
EP (2) EP3200423B1 (ja)
JP (1) JP5659154B2 (ja)
ES (1) ES2624910T3 (ja)
WO (1) WO2009149100A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009337B2 (en) 2008-12-22 2015-04-14 Netflix, Inc. On-device multiplexing of streaming media content
US9014545B2 (en) 2009-07-24 2015-04-21 Netflix, Inc. Adaptive streaming for digital content distribution
US8631455B2 (en) 2009-07-24 2014-01-14 Netflix, Inc. Adaptive streaming for digital content distribution
US8689267B2 (en) * 2010-12-06 2014-04-01 Netflix, Inc. Variable bit video streams for adaptive streaming
US8997160B2 (en) * 2010-12-06 2015-03-31 Netflix, Inc. Variable bit video streams for adaptive streaming
WO2012103326A2 (en) * 2011-01-28 2012-08-02 Eye IO, LLC Adaptive bit rate control based on scenes
US9374406B2 (en) * 2012-02-27 2016-06-21 Qualcomm Incorporated Dash client and receiver with a download rate estimator
CN104509119A (zh) * 2012-04-24 2015-04-08 Vid拓展公司 用于mpeg/3gpp-dash中平滑流切换的方法和装置
WO2014063026A1 (en) * 2012-10-18 2014-04-24 Interdigital Patent Holdings, Inc. Decoding complexity for mobile multimedia streaming
WO2014134177A2 (en) * 2013-02-27 2014-09-04 Apple Inc. Adaptive streaming techniques
GB2524958A (en) * 2014-04-03 2015-10-14 Orbital Multi Media Holdings Corp Data flow control method
WO2016003939A1 (en) 2014-06-30 2016-01-07 Echostar Technologies L.L.C. Adaptive data segment delivery arbitration for bandwidth optimization
JP6432976B2 (ja) 2014-11-19 2018-12-05 日本電気株式会社 データ伝送装置、データ伝送方法およびプログラム
US9756112B2 (en) 2015-02-11 2017-09-05 At&T Intellectual Property I, L.P. Method and system for managing service quality according to network status predictions
US10693575B2 (en) 2018-08-31 2020-06-23 At&T Intellectual Property I, L.P. System and method for throughput prediction for cellular networks
US10868726B2 (en) 2018-12-07 2020-12-15 At&T Intellectual Property I, L.P. Apparatus and method for selecting a bandwidth prediction source
US11490149B2 (en) 2019-03-15 2022-11-01 At&T Intellectual Property I, L.P. Cap-based client-network interaction for improved streaming experience
KR102165837B1 (ko) * 2019-04-03 2020-10-14 네이버웹툰컴퍼니 주식회사 효과적인 적응형 비트레이트 스트리밍을 위한 방법 및 시스템
US11178198B1 (en) 2020-11-04 2021-11-16 Disney Enterprises, Inc. Buffering data on high bandwidth networks
WO2023063925A1 (en) * 2021-10-12 2023-04-20 Google Llc Intelligent dynamic bit-rate rate adjustment to enhance bluetooth performance
US11968426B2 (en) 2021-11-18 2024-04-23 Synamedia Limited Systems, devices, and methods for selecting TV user interface transitions

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020154694A1 (en) * 1997-03-21 2002-10-24 Christopher H. Birch Bit stream splicer with variable-rate output
JPH11187367A (ja) * 1997-12-19 1999-07-09 Nec Corp 映像送信装置,映像受信装置及びこれらを用いた映像伝送システム
US20020133247A1 (en) * 2000-11-11 2002-09-19 Smith Robert D. System and method for seamlessly switching between media streams
US6910079B2 (en) * 2002-01-25 2005-06-21 University Of Southern California Multi-threshold smoothing
EP1395000B1 (en) * 2002-08-27 2006-01-04 Matsushita Electric Industrial Co., Ltd. A method of transmitting data streams dependent on the monitored state of the client application buffer
US7224691B1 (en) * 2002-09-12 2007-05-29 Juniper Networks, Inc. Flow control systems and methods for multi-level buffering schemes
US7650421B2 (en) * 2002-12-30 2010-01-19 Microsoft Corporation Adaptable accelerated content streaming
JP4615958B2 (ja) * 2004-10-15 2011-01-19 クラリオン株式会社 デジタル放送の送出装置、受信装置およびデジタル放送システム
ES2313323T3 (es) * 2005-04-11 2009-03-01 Telefonaktiebolaget Lm Ericsson (Publ) Tecnica para controlar transmisiones de paquetes de datos de velocidad binaria variable.
EP1908303A4 (en) * 2005-07-01 2011-04-06 Sonic Solutions METHOD, DEVICE AND SYSTEM FOR USE IN MULTIMEDIA SIGNAL CODING
US20070033633A1 (en) * 2005-08-08 2007-02-08 Princeton Server Group, Inc. Method and apparatus for providing a transition between multimedia content
US20070133405A1 (en) * 2005-12-08 2007-06-14 Microsoft Corporation Congestion controller for network transmissions
JP2008035102A (ja) * 2006-07-27 2008-02-14 Oki Electric Ind Co Ltd コンテンツ受信端末装置

Also Published As

Publication number Publication date
JP2011523298A (ja) 2011-08-04
EP2300928A1 (en) 2011-03-30
EP2300928A4 (en) 2013-07-10
EP3200423B1 (en) 2023-05-31
EP2300928B1 (en) 2017-03-29
ES2624910T3 (es) 2017-07-18
WO2009149100A1 (en) 2009-12-10
EP3200423A1 (en) 2017-08-02

Similar Documents

Publication Publication Date Title
JP5659154B2 (ja) クライアント側ストリームスイッチング
US10110650B2 (en) Client side stream switching
US9167007B2 (en) Stream complexity mapping
US10659832B1 (en) Dynamic bitrate selection for streaming media
US9521178B1 (en) Dynamic bandwidth thresholds
US8973077B2 (en) Method for streaming video content, node in a network for monitoring video content streaming
JP6105717B2 (ja) 低レイテンシストリーミングを処理するための改善されたブロック要求ストリーミングシステム
CN108184152B (zh) 一种dash传输系统两阶段客户端码率选择方法
US8732274B2 (en) Method and apparatus for generating and handling streaming media quality-of-experience metrics
US10110507B2 (en) Push-based transmission of resources and correlated network quality estimation
CN105075276B (zh) 在广播通信网络中操作客户端设备和服务器设备的技术
US20120324122A1 (en) Method and apparatus for server-side adaptive streaming
KR20150042191A (ko) 적응적 비트레이트 스트리밍에서 대역폭 할당을 위한 방법들 및 디바이스들
US8725947B2 (en) Cache control for adaptive stream player
WO2011146898A2 (en) Internet system for ultra high video quality
US11070607B2 (en) Dynamic behavior modification for content download and playback
JP2015104075A (ja) メディア再生制御装置、メディア再生制御方法、及びプログラム
JP7494265B2 (ja) アダプティブビットレートアルゴリズムのための動的パラメータ調整
JP2016021778A (ja) ストリーミングメディア再生装置、ストリーミングメディア再生方法、及びプログラム
Younus et al. A model for a practical evaluation of a DASH-based rate adaptive algorithm over HTTP
US11736552B1 (en) Sender based adaptive bit rate control
KR101708266B1 (ko) 적응적 스트리밍 장치 및 그 방법
Sarper et al. Improving VoD performance with LAN client back-end buffering
JP2022089183A (ja) ビデオの同時ダウンロード

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140701

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20140926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140926

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141201

R150 Certificate of patent or registration of utility model

Ref document number: 5659154

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