(57)【特許請求の範囲】
【請求項１】
処理装置に所定の機能を実行させる実行可能な命令がその上に格納された、非一時的コンピュータ可読媒体であって、前記所定の機能が、
ビデオの通常再生速度の倍数を定義する早送り再生速度でビデオを再生する要求を検出する機能と、
前記要求に応答して、（Ｉ）前記ビデオの複数バージョンのトリックプレイトラックから、前記要求した早送り再生速度でプレイアウトする時に、ネットワーク帯域幅閾値を越えないビットレートを持つ、最高のＩフレームレートを持つバージョンを選択する機能であって、ここで各バージョンが通常速度のビットレートを持ち、また前記ビデオの前記複数バージョンの前記トリックプレイトラックから、前記要求した早送り再生速度でプレイアウトする時に、前記ネットワーク帯域幅閾値を越えることのないビットレートを持つ、最高のＩフレームレートを持つバージョンを選択する機能が、（Ａ）どのバージョンが、要求した早送り再生速度でプレイアウトした時に、前記ネットワーク帯域幅閾値以下で最高のビットレートを持つかを決定する機能と、（Ｂ）どのバージョンが、ネットワーク帯域幅閾値を前記要求した早送り再生速度で割ったもの以下で最高の通常速度のビットレートを持つかを決定する機能とで、構成される群から選択される１つの機能を備え、また（ＩＩ）前記選択したバージョンの前記トリックプレイトラックを、プレイアウトのために、ネットワークを介してサーバーからクライアントにストリーム配信させる機能とを含む、非一時的コンピュータ可読媒体。
【請求項２】
前記処理装置によって実行される前記所定の機能がさらに、前記ネットワーク帯域幅閾値を決定する機能を含む、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項３】
前記ネットワーク帯域幅閾値の決定が前記クライアントでの前記サーバーからのデータの到着率に基づく、前記ネットワーク帯域幅閾値の決定を含む、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項４】
前記要求の検出が、前記クライアントのユーザーインターフェースで入力された前記要求を表す信号を受信することを含む、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項５】
前記処理装置が前記クライアントの一部である、請求項４に記載の非一時的コンピュータ可読媒体。
【請求項６】
請求項４に記載の非一時的コンピュータ可読媒体であって、
前記処理装置が、前記サーバーの一部であり、
前記要求を表す前記信号の受信が、前記信号を前記クライアントから受信することを含み、
前記選択したバージョンの前記トリックプレイトラックを、プレイアウトするために、前記ネットワークを介して前記サーバーから前記クライアントにストリーム配信させることが、前記サーバーのネットワーク通信インターフェースに、前記選択したバージョンの前記トリックプレイトラックをリアルタイムで前記クライアントにストリーム配信させることを含む、非一時的コンピュータ可読媒体。
【請求項７】
前記クライアントから前記サーバーに転送される前記信号が、前記要求した早送り再生速度および前記ネットワーク帯域幅閾値を指定する信号を含む、請求項６に記載の非一時的コンピュータ可読媒体。
【請求項８】
前記処理装置によって実行される前記所定の機能がさらに、
前記クライアントにストリーム配信するための前記選択したバージョンをその場で生成する機能を含む、請求項７に記載の非一時的コンピュータ可読媒体。
【請求項９】
前記選択したバージョンをその場で生成する機能が、複数のＩフレームをベースバージョンの前記トリックプレイトラックから除去し、前記選択したバージョンの前記トリックプレイトラックを生成する機能を含む、請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１０】
前記バージョンを前記複数バージョンから選択する機能が、前記複数バージョンを指定する前記ビデオのインデックスを参照する機能と、前記バージョンを前記指定した複数の中から選択する機能とを含む、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項１１】
請求項１０に記載の非一時的コンピュータ可読媒体であって、
前記インデックスが、前記複数のうちの各バージョンについて、前記バージョンの通常速度ビットレートをそれぞれ指定し、
前記要求した早送り再生速度でプレイアウトした時に、前記ネットワーク帯域幅閾値を越えないビットレートを持つ前記最高のＩフレームレートを持つバージョンを前記複数のバージョンから選択する機能が、前記複数のうちの各バージョンの前記通常速度ビットレートが前記早送り再生速度と掛け合わせられて前記バージョンの増大したビットレートを確立する場合に、前記複数のうちのどのバージョンが前記ネットワーク帯域幅閾値を越えない前記最高のビットレートを持つかを決定する機能を含む、非一時的コンピュータ可読媒体。
【請求項１２】
請求項１に記載の非一時的コンピュータ可読媒体であって、
前記要求した早送り再生速度でプレイアウトした時に、前記ネットワーク帯域幅閾値を越えないビットレートを持つ前記最高のＩフレームレートを持つバージョンを前記複数のバージョンから選択する機能が、前記複数バージョンのうちの各バージョンの通常速度ビットレートが前記早送り再生速度と掛け合わせられて増大したビットレートを確立する場合に、前記複数バージョンのうちのどのバージョンが前記ネットワーク帯域幅閾値を越えない前記最高のビットレートを持つかを決定する機能を含む、非一時的コンピュータ可読媒体。
【請求項１３】
請求項１に記載の非一時的コンピュータ可読媒体であって、
前記複数バージョンの各バージョンの前記通常速度のビットレートが、前記バージョンのトリックプレイ  ビットレートであり、
前記要求した早送り再生速度でプレイアウトした時に、前記ネットワーク帯域幅閾値を越えないビットレートを持つ、前記最高のＩフレームレートを前記複数のバージョンから選択する機能が、（Ｉ）前記ネットワーク帯域幅閾値を前記要求した早送り再生速度で割って、最高トリックプレイ  ビットレートを決定して、（ＩＩ）前記複数バージョンから、前記決定済みの最高トリックプレイ  ビットレートを越えない前記最高トリックプレイ  ビットレートを持つ前記バージョンを選択する機能を含む、非一時的コンピュータ可読媒体。
【請求項１４】
前記選択したバージョンの前記トリックプレイトラックをプレイアウトのために前記サーバーから前記クライアントにストリーム配信されるようにする機能が、プレイアウトするために前記サーバーが前記選択したバージョンの前記トリックプレイトラックを前記クライアントにストリーム配信するよう命令する制御信号を前記クライアントから前記サーバーに転送する機能を含む、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項１５】
前記処理装置によって実行される前記所定の機能がさらに、
前記サーバーからストリーム配信された、前記選択したバージョンの前記トリックプレイトラックを受信する機能と、
前記サーバーからストリーム配信された、前記選択したバージョンの前記トリックプレイトラックを受信する一方で、前記選択したバージョンの前記トリックプレイトラックを前記要求した早送り再生速度でプレイアウトする機能とを含む、請求項１に記載の非一時的コンピュータ可読媒体。
【請求項１６】
処理装置によって、ビデオの通常再生速度の倍数を定義する早送り再生速度でビデオを再生する要求を受信する手順と、
前記処理装置によって、前記ビデオに対応するトリックプレイトラックの複数の異なるフレームレートバージョンを識別する手順であって、ここで、各フレームレートバージョンが互いのフレームレートバージョンとは異なるレートでＩフレームをスキップすることを理由として、各フレームレートバージョンが互いのフレームレートバージョンのビットレートとは異なるそれぞれのビットレートを持つ手順と、
前記処理装置によって、（Ｉ）フレームレートバージョンごとに増大したビットレートを生成するために、各フレームレートバージョンの前記ビットレートに前記要求した早送り再生速度を掛け合わせた場合に、どのフレームレートバージョンがネットワーク帯域幅閾値よりも低く最高のビットレートを持つことになるかを決定し、（ＩＩ）前記決定されたフレームレートバージョンを最適なフレームレートバージョンとして選択することによって、識別された複数のフレームレートバージョンから、前記最適なフレームレートバージョンを選択する手順と、
前記処理装置によって、サーバーに、前記選択したフレームレートバージョンをネットワークを介してクライアントにストリーム配信させる手順とを含む方法。
【請求項１７】
請求項１６に記載の方法であって、さらに、
前記処理装置によって、前記サーバーからの前記クライアントでのデータの到着率に基づき、前記ネットワーク帯域幅閾値を決定する手順を含む方法。
【請求項１８】
請求項１６に記載の方法であって、さらに、
前記処理装置によって、前記ビデオのインデックスを獲得する手順であって、前記インデックスが前記トリックプレイトラックの前記複数の異なるフレームレートバージョンを指定する手順を含み、
前記複数の異なるフレームレートバージョンの識別が、前記処理装置によって、前記トリックプレイトラックの前記複数の異なるフレームレートバージョンを指定する前記インデックスを参照する手順を含む方法。
【請求項１９】
前記処理装置は、クライアントに具備されている、請求項１６に記載の方法。
【請求項２０】
前記サーバーに、前記選択したフレームレートバージョンを前記ネットワークを介して前記クライアントにストリーム配信させる手順が、前記処理装置によって、前記サーバーに、前記クライアントから前記サーバーに前記選択したフレームレートバージョンを前記クライアントにストリーム配信させるよう命令する制御信号を転送する手順を含む、請求項１６に記載の方法。
【請求項２１】
請求項１６に記載の方法であって、さらに、
前記処理装置によって、前記サーバーからストリーム配信中の前記選択したフレームレートバージョンの前記トリックプレイトラックを受信する手順と、
前記処理装置によって、前記サーバーからストリーム配信された前記選択したフレームレートバージョンの前記トリックプレイトラックを受信する一方で、前記選択したバージョンの前記トリックプレイトラックを前記要求した早送り再生速度でプレイアウトする手順とを含む方法。
【請求項２２】
コンピューティングデバイスであって、
ネットワーク通信インターフェースと、
ユーザーインターフェースと、
プロセッサと、
データストレージと、
前記データストレージ内に格納され、所定の機能を実行するために前記プロセッサによって実行されるプログラム論理であって、前記所定の機能が、
前記ユーザーインターフェースから、ビデオの通常再生速度の倍数を定義する早送り再生速度でビデオを再生する要求を受信する機能と、
前記要求に応答して、（Ａ）前記ビデオのトリックプレイトラックのバージョンを、少なくとも部分的に前記要求した早送り再生速度およびネットワーク帯域幅閾値に基づき選択する機能であって、ここで少なくとも部分的に前記要求した早送り再生速度および前記ネットワーク帯域幅閾値に基づく前記トリックプレイトラックの前記バージョンの選択が、前記トリックプレイトラックの前記バージョンとして、前記要求した早送り再生速度で再生された時に、前記トリックプレイトラックのバージョンが、前記ネットワーク帯域幅閾値を越えないビットレートを持つために十分なレートでＩフレームをスキップする、トリックプレイトラックのバージョンを選択することを含む機能と、（Ｂ）前記ユーザーインターフェースでのプレイアウト用に、サーバーに、ネットワークを介して前記コンピューティングデバイスに前記選択したバージョンの前記トリックプレイトラックをストリーム配信させる機能とを含み、
前記データストレージが、前記ビデオのインデックスを保持し、前記インデックスが、複数のバージョンの前記トリックプレイトラックを指定し、また、前記複数のバージョンの前記トリックプレイトラックが、少なくとも、前記ビデオのＩフレームをスキップするそのそれぞれのレートという点で互いに異なり、そのためにそのそれぞれのビットレートが互いに異なり、
また、前記トリックプレイトラックの前記バージョンを選択する機能が、（Ｉ）前記要求した早送り再生速度で再生されるとき、前記ネットワーク帯域幅閾値を越えない増大したビットレートを持つ、一つ以上の前記指定された複数バージョンの前記トリックプレイトラックを指定する前記インデックスを参照し、（ＩＩ）前記指定された一つ以上の識別済みバージョンの前記トリックプレイトラックのうち最高ビットレートのものを選択する機能を含む、コンピューティングデバイス。
【請求項２３】
前記所定の機能がさらに、前記ネットワーク帯域幅閾値を決定する機能を含む、請求項２２に記載のコンピューティングデバイス。
【請求項２４】
前記ネットワーク帯域幅閾値を決定する機能が、クライアントでの前記サーバーからのデータの到着率に基づいて前記ネットワーク帯域幅閾値を決定する機能を含む、請求項２２に記載のコンピューティングデバイス。
【請求項２５】
前記サーバーに、前記選択したバージョンの前記トリックプレイトラックを前記コンピューティングデバイスにストリーム配信させる機能が、前記サーバーに前記ネットワーク通信インターフェースを経由して、前記コンピューティングデバイスに対して前記選択したバージョンの前記トリックプレイトラックをストリーム配信するよう前記サーバーに命令する制御信号を転送する機能を含む、請求項２２に記載のコンピューティングデバイス。
【請求項２６】
請求項２２に記載のコンピューティングデバイスであって、
前記データストレージが前記ビデオのインデックスを保持し、前記インデックスが複数のバージョンの前記トリックプレイトラックを指定し、また、前記複数のバージョンの前記トリックプレイトラックが、少なくとも前記ビデオのＩフレームをスキップするそのそれぞれのレートという点で互いに異なり、そのためにそのそれぞれのビットレートが互いに異なり、
前記トリックプレイトラックの前記バージョンを選択する機能が、（Ａ）前記ネットワーク帯域幅閾値を前記要求した早送り再生速度で割って、最高トリックプレイ  ビットレートを決定し、（Ｂ）前記複数のバージョンの前記トリックプレイトラックから、前記決定済みの最高トリックプレイ  ビットレートを越えない前記最高ビットレートを持つ前記バージョンを選択する機能を含む、コンピューティングデバイス。
【請求項２７】
処理装置によって、ビデオの通常再生速度の倍数を定義する要求した早送り再生速度でのビデオの早送り再生プレイアウトを制御するための方法であって、前記方法が、
前記処理装置によって、前記要求した早送り再生速度で再生されるトリックプレイトラックが、ネットワーク帯域幅の尺度以下のビットレートを持つように、前記ビデオのトリックプレイトラックがＩフレームをスキップすべき最低レートを決定する手順と、
サーバーが前記ビデオの複数の異なるフレームレートバージョンのうち任意のもののトリックプレイトラックをクライアントにストリーム配信するためのオプションがあり、ここで、各フレームレートバージョンが、Ｉフレームを互いのフレームレートバージョンとは異なるレートでスキップすることを理由としてそれぞれのフレームレートバージョンが互いに他のフレームレートバージョンのビットレートとは異なるビットレートを持つ場合に、前記決定した最低レートでＩフレームをスキップする前記フレームレートバージョンを選択する手順と、
前記処理装置によって、前記サーバーに、前記トリックプレイトラックの前記選択したフレームレートバージョンを前記クライアントに対してストリーム配信させる手順とを含む方法。
【請求項２８】
前記選択したフレームレートバージョンの前記トリックプレイトラックに、前記ビデオの任意のＰフレームまたはＢフレームを含まない、請求項２７に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書に別途指示のない限り、本セクションに記載した資料は、請求の範囲に対する従来技術ではなく、本セクションに含めることによる従来の技術としては認められない。
【０００２】
ネットワークおよびコンピューティング技術の進歩により、クライアントデバイスがネットワークサーバーからリアルタイムでストリーム配信されるビデオを受信して再生することは、今では一般的である。実際には、例えば、クライアントは、クライアントが特定のビデオのプレイアウトのストリーム配信についてのユーザー要求を受信できるユーザーインターフェースを提供するメディアプレーヤーについて、プログラムまたは他の方法でアレンジしうる。次に、メディアプレーヤーは、クライアントに合意済みのプロトコル（ハイパーテキスト転送プロトコル（ＨＴＴＰ）、リアルタイムストリーミングプロトコル（ＲＴＳＰ）、リアルタイム転送プロトコル（ＲＴＰ）、リアルタイム制御プロトコル（ＲＴＣＰ）、およびリアルタイムメッセージングプロトコル（ＲＴＭＰ）など）に従い、サーバーと相互作用させて、サーバーに特定のメディアをストリーム配信するよう要求しうる。応答してストリーム配信されたビデオをサーバーから受信すると、次にクライアントは、ユーザーが楽しめるようにユーザーインターフェースでビデオをプレイアウトする。
【０００３】
要求しているクライアントでのプレイアウトのためのネットワークを介したビデオのストリーム配信を促進するために、符号化ビットストリームが生成されるように、特定のコーダ・デコーダ（コーデック）を使用して、ビデオのデジタル化および符号化をすることができ、また、サーバーは、符号化ビットストリームを連続したブロックに分割し、各ブロックを例えばＲＴＰヘッダーなどの番号付きヘッダーにカプセル化しうる。次に、サーバーは、連続したカプセル化ブロックを、例えばインターネットプロトコル（ＩＰ）などのネットワーク  プロトコルを使用してクライアントに転送しうる。クライアントが符号化ビットストリームのカプセル化ブロックを受信すると、次にクライアントは、ブロックをそれらの元の符号化ビットストリームに組み込んで、データストレージにビットストリームをバッファしうる。クライアントは次に、バッファからコーデックを使用してビットストリームを復号化することができ、結果的な元のビデオをユーザーインターフェースでプレイアウトしうる。
【０００４】
実際には、メディアプレーヤーは、ユーザーが早送りモード、すなわち、その通常のプレイアウト速度の何倍かの早送り速度で、ビデオのプレイアウトを要求できるようにしうる。要求された時に、このような早送りプレイアウトを促進するために、サーバーは、クライアントが要求した早送り速度で再生できるビデオの特別の「トリックプレイトラック」を、クライアントにストリーム配信しうる。  
【０００５】
トリックプレイトラックは、クライアントでプレイアウトするためにトリックプレイトラックがより急速に転送できるようにより少ないフレームを持つ、元のビデオのより疎らなバージョンでありうる。例えば、元のビデオがＩフレーム、Ｐフレーム、およびＢフレームを含み、そのそれぞれがビデオ内でのその時間的位置を示す特定のタイムスタンプを持つ場合、トリックプレイトラックは、その元のタイムスタンプを備えたＩフレームだけを含みうる。こうして、クライアントがサーバーからストリーム配信されたトリックプレイトラックを受信し、Ｉフレームをそれらの指示された時間にプレイアウトする場合、結果は実際上、一つのＩフレームから次への円滑なビデオトランジションを欠く、元のビデオのスライドショーレンディションでありうる。ところが、クライアントは、好都合なことに、要求した早送りプレイアウトを提供できるように、こうしたトリックプレイトラックのプレイアウトを要求した早送り速度まで加速できる。例えば、Ｉフレームが元のビデオ中で通常毎秒１回のレートで発生する場合、また要求した早送り速度が２倍である場合、クライアントは、連続したＩフレームを毎秒２回のレート（すなわち、１／２秒毎に１回）でプレイアウトしうる。同様に、早送り速度が４倍である場合、クライアントは、毎秒４回のレート（すなわち、１／４秒毎に１回）で連続したＩフレームをプレイアウトしうる。
【０００６】
類似したプロセスを、ビデオの巻き戻しプレイアウトに適用できる。特に、サーバーは、ビデオのＩフレームを逆順で含み、それに相応して調節されたタイムスタンプを有する、トリックプレイトラックをクライアントにストリーム配信しうる。クライアントがサーバーからストリーム配信されたこうしたトリックプレイトラックを受信すると、クライアントは、Ｉフレームを指示されたタイムスタンプでプレイアウトすることができ、実際上、ビデオの逆順スライドショーレンディションを提供しうる。また同様に、クライアントは、好都合なことに、要求した巻き戻しプレイアウトを提供できるように、こうしたトリックプレイトラックのプレイアウトを要求した巻き戻し速度まで加速できる。
【発明の概要】
【０００７】
本書には、サーバーからのビデオストリーム配信の制御に関連するデバイスおよび方法が開示されている。
【０００８】
一面において、例えば、ビデオの通常再生速度の倍数を定義する早送り再生速度でビデオを再生する要求を検出する処理と、その要求に応答して、（Ｉ）複数バージョンのビデオのトリックプレイトラックから要求した早送り再生速度でプレイアウトする時に、ネットワーク帯域幅閾値を上回らないビットレートを持つ、最高Ｉフレームレートを持つバージョンを選択する処理、および（ＩＩ）プレイアウトのために選択したバージョンのトリックプレイトラックを、ネットワークを介してサーバーからクライアントにストリーム配信させる処理を含む機能を処理装置に実行させるように実行可能な命令がその上に格納された、非一時的コンピュータ可読媒体が開示されている。
【０００９】
別の観点から言えば、サーバーからのビデオストリーム配信を制御する方法が開示されている。方法には、ビデオの通常再生速度の倍数を定義する早送り再生速度でビデオを再生する要求を受信する手順が含まれる。さらに、方法には、ビデオに対応するトリックプレイトラックの複数の異なるフレームレートバージョンを識別する手順が関与しうるが、ここで、各フレームレートバージョンが互いのフレームレートバージョンとは異なる数のビデオのＩフレームをスキップすることを少なくとも部分的な理由として、各フレームレートバージョンが互いのフレームレートバージョンのビットレートとは異なるそれぞれのビットレートを持つ。なおさらに、方法には、（Ｉ）フレームレートバージョンごとに増大したビットレートを生成するために、各フレームレートバージョンのビットレートに要求した早送り再生速度を掛け合わせた場合に、どのフレームレートバージョンがネットワーク帯域幅閾値よりも低くて最高の増大したビットレートを持つことになるかを決定し、（ＩＩ）決定されたフレームレートバージョンを最適なフレームレートバージョンとして選択することによって、識別された複数のフレームレートバージョンから最適なフレームレートバージョンを選択する手順が関与しうる。よって方法には、サーバーに、選択したフレームレートバージョンをネットワークを介してクライアントにストリーム配信させる手順が含まれうる。
【００１０】
さらに別の観点から、ネットワーク通信インターフェース、ユーザーインターフェース、プロセッサ、データストレージ、およびデータストレージ内に格納され、プロセッサによって様々な機能を実行するために実行可能なプログラム命令を含みうる、コンピューティングデバイスが開示されている。特に、機能には、ビデオの通常再生速度の倍数を定義する早送り再生速度でビデオを再生する要求をユーザーインターフェースから受信する機能が含まれうる。さらに、機能には、要求に応答して、（Ａ）ビデオのトリックプレイトラックのバージョンを、少なくとも部分的に要求した早送り再生速度およびネットワーク帯域幅閾値に基づき選択する機能であって、ここで少なくとも部分的に、要求した早送り再生速度およびネットワーク帯域幅閾値に基づくトリックプレイトラックのバージョンの選択が、トリックプレイトラックのバージョンとして要求した早送り再生速度で再生された時に、トリックプレイトラックのバージョンがネットワーク帯域幅閾値を越えないビットレートを持つために十分なスキップしたビデオのＩフレームレートを持つ、トリックプレイトラックのバージョンを選択することを含む機能と、（Ｂ）ユーザーインターフェースでのプレイアウト用に、ネットワークを介してコンピューティングデバイスに選択したバージョンのトリックプレイトラックをサーバーにストリーム配信させる機能とが含まれうる。
【００１１】
なおさらに、別の観点から言えば、ビデオの通常再生速度の倍数を定義する要求した早送り再生速度でのビデオの早送り再生プレイアウトを制御するための方法が開示されている。方法には、要求した早送り再生速度で再生されるトリックプレイトラックが、ネットワーク帯域幅の尺度以下のビットレートを持つように、ビデオのトリックプレイトラックがビデオのＩフレームをスキップするべき最低レートを決定する手順が含まれうる。さらに、方法には、決定したレートでＩフレームをスキップするトリックプレイトラックをサーバーからクライアントにストリーム配信させる手順が含まれうる。
【００１２】
これらの、またその他の態様、利点、および代替案は、下記の詳細な記述を適切な場合に添付図面を参照しながら読むことにより、当業者にとってさらに明らかとなる。
【００１３】
さらに、当然のことながら、この要約セクションおよび本書の他の部分に記載された内容は、例としてのみの役目を果たすことが意図される。こうして、その他の配置およびその他の要素（たとえば、マシン、インターフェース、機能、機能の順序、など）を代わりに使用することができ、また一部の要素をまとめて省略することもできる。さらに、本書に記載された多くの要素は、個別または分散コンポーネントとして、またはその他のコンポーネントと連動して、および様々な適切な組合せや位置で実装しうる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の方法の例を実装できるネットワーク配置の簡略化したブロック図である。
【図２】図２は、図１のネットワーク配置内で動作可能なクライアントデバイスの簡略化したブロック図である。
【図３】図３は、図１のネットワーク配置内で動作可能なサーバーの簡略化したブロック図である。
【図４】図４は、実装例に従い実行が可能な機能を描写した流れ図である。
【図５】図５は、実装例に従い実行が可能な機能を描写した別の流れ図である。
【図６】図６は、実装例に従い実行が可能な機能を描写したさらに別の流れ図である。
【図７】図７は、実装例に従い実行が可能な機能を描写したなおも別の流れ図である。
【発明を実施するための形態】
【００１５】
以下の詳細な説明においては、添付図面を参照するが、これは本書の一部を形成する。詳細な説明、図面、および請求項で説明した例証のための実施形態は、限定的なものではない。ここで提示された主題の精神または範囲を逸脱することなく、その他の実施形態を利用することもでき、またその他の変更を行うこともできる。本発明の開示の態様は、本書で概略的に説明したとおり、また図面に図示されているとおり、多種多様な異なる構成で配置、置換、組合せ、分離、および設計ができることが簡単に理解され、その全てが本書で明示的に意図される。  
【００１６】
一般に、ビデオの効率的な伝送および格納を促進するために、ビデオは、Ｉフレーム、Ｐフレーム、およびＢフレームを含む、連続したタイムスタンプ付きのフレームとしてデジタル形式で表現されうる。それぞれのＩフレーム（イントラ符号化フレーム）は、ビデオ内の瞬間を表現する実質的に完全なデジタル形式の画像としうる。一方で、Ｐフレーム（予測フレーム）およびＢフレーム（双方向フレーム）は、Ｉフレームおよび／またはその他のフレームからのベクトルの変位など、一つ以上のその他のフレームについての変化のみを定義しうる。この方法で表現されたビデオをプレイアウトする時、コンピューティングデバイスは、各Ｉフレームをそのタイムスタンプが刻印される瞬間で提示した後、連続したＩフレーム間にあるＰフレームおよび／またはＢフレームに従い提示した画像に変更を与えうる。ユーザーの視点からすると、結果は継ぎ目のないビデオ動作となりうる。
【００１７】
さらに、こうしたビデオをネットワークによってサーバーからクライアントにストリーム配信することを促進するために、ビデオを連続フレームとして表現するデジタル形式のビットストリームを適切なコーデックで符号化して、ビットストリームを圧縮しうる。特に、コーデックは、ビデオを表現する未加工のビットストリームを受信して、未加工のビットストリームにあるビットよりも少ないビットを持つ各時間間隔を表現するようにビットストリームのそれぞれの連続的な時間間隔を圧縮するアルゴリズムを適用するように演算しうる。この圧縮プロセスは、限定的な伝送速度または「帯域幅」に対応するネットワークを介して十分に高速にビデオが転送され受信されるようにすることで、リアルタイムでのビデオストリーミングおよびプレイアウトの促進に役立つことができる。特に、少なめのビットを持つビデオの連続的な時間間隔を表現することで、要求するクライアントへのリアルタイムでのメディアの伝送に対応するのに必要な帯域幅はより少ないものとなる。
【００１８】
実際には、ビデオ  ビットストリームを符号化するために使用されるコーデックは、ビデオの各フレームが一定のビット数（すなわち、一定量のデータ）で表現されるようにしうる。Ｉフレーム自体がＰフレームおよびＢフレームよりも多くのデータを含む時、各Ｉフレームを表現するために使用されるビット数は、それぞれのＰフレームおよびＢフレームを表現するために使用されるビット数よりも大きくしうる。こうして、結果的な符号化ビットストリームのビットレートは、時間経過とともに変化しうる。
【００１９】
あるクライアントが特定のビデオのサーバーからのストリーム配信によるプレイアウトを求めている時、そのクライアントは、クライアントへのビデオのストリーム配信を開始する要求をサーバーに転送することができ、サーバーはそれに応答して同左を行いうる。例えば、サーバーとのストリーミングメディアセッションをセットアップするＲＴＳＰ信号伝達に関与した後、クライアントは、ストリーム配信の開始を要求するＲＴＳＰ  ＰＬＡＹ要求をサーバーに転送しうる。それに応答して、次にサーバーは、ビデオの符号化されたバージョンを取り出すかまたは確立し、プレイアウトのために符号化されたバージョンをクライアントにストリーム配信しうる。クライアントが符号化されたバージョンを受信すると、次にクライアントは符号化されたバージョンをバッファし、そのバッファからビデオの複合およびプレイアウトを行い、そのそれぞれのタイムスタンプによって指示された時間にそれぞれのフレームを表現する。
【００２０】
上述のとおり、こうしたビデオの早送り再生速度でのプレイアウトを促進するために、サーバーは、タイムスタンプ付きのビデオのＩフレームのみを含むビデオのバージョンなどのビデオのトリックプレイトラックをクライアントにストリーム配信するようアレンジしうる。特に、クライアントがビデオを指定した早送り再生速度（たとえば、２倍、４倍、など）でプレイアウトするユーザー要求を受信した時、クライアントは、サーバーがトリックプレイトラックをストリーム配信するよう要求するＰＬＡＹ要求またはその他の制御信号をサーバーに送信することができ、サーバーは同左を行いうる。クライアントがサーバーからストリーム配信されたトリックプレイトラックを受信すると、次にクライアントは、トリックプレイトラックをバッファし、そのバッファからトリックプレイトラックを要求した早送り再生速度でプレイアウトしうる。
【００２１】
典型的な慣行では、この早送り再生モードは、クライアントがビデオを通常の速度でプレイアウト中、すなわち、クライアントが符号化されたビデオストリームをサーバーから受信し、ビデオの復号化およびプレイアウトを実施している間に引き起こされる。そのシナリオで早送り再生モードに切り替えるには、クライアントは、元のビデオ内での現在のプレイアウト時点を判断し、対応する時点から開始するトリックプレイトラックのストリーミングへの移行をサーバーに要求しうる。例えば、クライアントは、スイッチストリームヘッダーまたは同種のもの、およびトリックプレイトラックのファイルオフセットの開始を指定するレンジヘッダーを含むＰＬＡＹ要求をサーバーに転送しうる。次にサーバーは、それに応答して、元のビデオのストリーミングから対応するビデオのトリックプレイトラックのストリーミングに移行し、クライアントはそれに対応して、入ってくるトリックプレイトラックの要求した早送り再生速度でのプレイアウトを開始するよう移行しうる。
【００２２】
元のビデオの現在のプレイアウト時点に対応するトリックプレイ内での時点の決定を促進するために、クライアントは、元のビデオの様々な時点（例えば、ビデオファイルの様々なファイルオフセット）を、トリックプレイトラックの様々な時点（例えば、トリックプレイファイルまたはビデオファイルのトリックプレイ部分の様々なファイルオフセット）にマッピングしたインデックスを持ちうる。実際には、例えば、サーバーまたは別のネットワーク実体はこうしたインデックスを格納することができ、クライアントは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）要求を送信してインデックスを提供するＨＴＴＰ応答を受信するなど、サーバーまたはその他の実体に要求して受け取ることによりインデックスを獲得しうる。次に、クライアントは、トリックプレイストリーミングの要求する際の参照用（およびメディアのストリーミングおよびプレイアウトの制御における別の目的用）に、インデックスをそのデータストレージ内に格納しうる。
【００２３】
一般に、クライアントでのプレイアウトのため（例えば、クライアントによる復号およびプレイアウトのため）に、クライアントがサーバーからストリーム配信されている任意のビットストリームを受信している時は、ストリームのビットレートがネットワークの帯域幅を上回らないことが最適である。ストリームのビットレートがネットワークの帯域幅を上回る場合には、ストリームは、クライアントがプレイアウト（例えば、復号およびプレイアウト）している速度でクライアントに到着しないことがある。その結果、クライアントの再生バッファは枯渇（すなわち、バッファ不足が発生）することがあり、これが再生を中断させうる。一方、ストリームのビットレートがネットワーク帯域幅を越えない場合には、バッファの不足が発生することなく、クライアントは連続的なプレイアウトに十分な速さでビットストリームを受信できるはずであり、それによりユーザー体験が向上される。
【００２４】
ビデオストリーミングでのネットワーク帯域幅の制約を考慮するために、クライアントはサーバーと連携して、サーバーに、現在の尺度のネットワーク帯域幅を越える見込みの低いビデオの最高ビットレートバージョン（例えば、ビデオの平均ビットレートまたは最大ビットレートを考慮して）をストリーム配信させうる。実際には、例えば、ビデオのインデックスは、複数の異なるビットレートバージョンを指定することができ、またクライアントは、ネットワーク帯域幅（そのバッファをほぼ空の状態にした後、サーバーからクライアントに拘束なしに到着するデータでバッファが満たされるレートの測定によるなど）を決定して、インデックスから決定したネットワーク帯域幅を越えない最高ビットレートを持つビットレートバージョンを選択しうる。次に、クライアントは、選択したビットレートバージョンを再生することをサーバーに要求するＰＬＡＹ要求または同種のものを、サーバーに送信しうる。この適応性のあるプレイアウトプロセスは、ネットワーク帯域幅が変化した際に様々なビットレートバージョンのストリーミング間を動的に移行するように、ビデオストリーミングセッションを開始する時点で、および／または定期的にまたは他の形でストリーミングセッション全体で実行しうる。
【００２５】
一般に、ビデオのＩフレームのみを含むものなど、ビデオのトリックプレイトラックについても、これと同じプロセスを適用できる。ところが、早送り再生に使用されることになるトリックプレイトラックでは、複雑な要因が発生する。すなわち、トリックプレイトラック（例えば、符号化されたトリックプレイトラック）のビットレートそれ自体はネットワーク帯域幅を越えておらず、よってクライアントでのプレイアウトに十分な速さで受信できる場合でさえも、要求した早送り再生速度でプレイアウトする時のこうしたトラックの有効ビットレートはネットワーク帯域幅を越えることがあり、よってバッファ不足を起こす可能性がある。
【００２６】
この問題を理解するために、それぞれそが元のタイムスタンプを伴う元のビデオのＩフレームのみを含むトリックプレイトラックを考慮し、ビットレートＮを持つビットストリームが生成されるように、トリックプレイトラックが符号化されている（またそのビットレートは、Ｉフレームをその元の時間で順にプレイアウトするために十分に高速である）と想定する。さらに、ネットワーク帯域幅はそのトリックプレイ  ビットレートＮより６倍高いと想定する。その場合、トリックプレイトラックをサーバーからクライアントにストリーム配信し、クライアントはトリックプレイトラックをその通常の速度で、例えば、元の時間でのＩフレームと共にプレイアウトできるはずであり、またクライアントは、トリックプレイトラックを、その通常の速度の最大６倍で、すなわち、Ｉフレームプレイアウトレートが元のビデオで現れるＩフレームよりも６倍高速でプレイアウトできるはずである。ところが、クライアントが、そのトリックプレイトラックを６倍以上の早送り再生速度でプレイアウトしようとした場合、制限のあるネットワーク帯域幅は、バッファ不足を避けるためにトリックプレイトラックが十分な速さでの到着することを阻止することがあり、プレイアウトが中断する結果を招きうる。
【００２７】
本発明で開示した方法およびデバイスは、様々な異なるフレームレートバージョンのトリックプレイトラックを提供し、ネットワーク帯域幅だけでなく、要求した早送り再生速度、またその他の考えられる要因（例えば、バッファが満杯かどうかなど）などを考慮に入れた一つのストリーミングバージョンを選択することによってこの問題を克服し、トリックプレイストリーミングを改善するのに役立ちうる。
【００２８】
有利なことに、様々なトリックプレイトラックのフレームレートバージョンは、互いに少なくとも元のビデオの基本単位時間あたりに含まれているＩフレーム数、またそのため間にあるＩフレームをどの数だけスキップするかという点で異なりうる。例えば、第一のフレームレートバージョン（「＋１／１」）は、これらのＩフレームがビデオのその通常のタイムスタンプでプレイアウトされた場合の毎秒あたりのＩフレーム数が特定の数となるよう、ビデオの全てのＩフレームを順序通りに持ちうる。次に低いフレームレートバージョン（「＋１／２」）は、これらのＩフレームがビデオのその通常のタイムスタンプでプレイアウトされた場合に、＋１バージョンでの毎秒あたりのプレイアウトに比べて半分のＩフレーム数となるよう、ビデオの一つおきのＩフレームを順序通りに持ちうる。またさらに次に低いフレームレートバージョン（「＋１／３」）は、これらのＩフレームがビデオのその通常のタイムスタンプでプレイアウトされた場合に、＋１バージョンでの毎秒あたりのプレイアウトに比べて３分の１のＩフレーム数となるよう、ビデオの３つのうちの１つのＩフレームを順序通りに持ちうる。
【００２９】
異なるレートのＩフレームがあることで、様々なトリックプレイトラックのフレームレートバージョンは、それらのＩフレームをその元の時間で（すなわち、元のビデオで現れるのと同じ時点で）プレイアウトした場合、それぞれのＩフレームが現れる回数という点で互いに異なる。例えば、元のビデオが毎秒１つのＩフレームを持つ場合には、＋１／１バージョンのトリックプレイトラックをプレイアウトすると新しいＩフレームが毎秒１つ提示され、＋１／２バージョンのトリックプレイトラックをプレイアウトすると新しいＩフレームが２秒に１つ提示され、＋１／３バージョンのトリックプレイトラックをプレイアウトすると新しいＩフレームが３秒に１つ提示されることになる。
【００３０】
さらに、これらのそれぞれのトリックプレイトラックのフレームレートバージョンに同じコーデックが使用されると想定し、また従ってそれぞれのＩフレームが同じビット数（おそらく平均で）で表現されると想定すると、様々なトリックプレイトラックのフレームレートバージョンは、それらの符号化されたビットレートという点で互いに異なることになる。例えば、＋１／１バージョンが上記で考察したとおりのビットレートＮを持つ場合、＋１／１バージョンの半分のＩフレーム数を持つ＋１／２バージョンは、ビットレートＮ／２を持ち、また＋１／１バージョンの３分の１のＩフレーム数を持つ＋１／３バージョンはビットレートＮ／３を持ちうる。（実際には、オーバーヘッド情報またはその他の要因によりこれらの数からいくらかの変動が発生しうる。）
【００３１】
その上、異なるコーデックまたは異なるコーデックパラメータを適用することで、こうした異なるフレームレートバージョンの異なるビットレートバージョン（各フレームレートバージョンの複数の異なるビットレートバージョンなど）を提供する可能性もある。ところが、いずれの場合でも、複数の異なるフレームレートバージョンのトリックプレイトラックが存在する可能性があるが、各フレームレートバージョンは、Ｉフレームレート（例えば、スキップするＩフレームのレート）および／またはビットレートの点で互いのフレームレートバージョンとは異なり、Ｉフレームレートとビットレートとの間には直接の相関関係がある可能性がある。
【００３２】
トリックプレイトラックを特定の早送り再生速度でプレイアウトするにあたり、毎秒プレイアウトされるＩフレーム数が多いほどプレイアウトがより滑らかなものとなるため、できるだけ多数のＩフレームを含めることが最も望ましい。こうして、＋１／１バージョンのトリックプレイトラックが上述のとおり最大のＩフレームレートを持つ場合、要求される早送り再生速度に応じて、＋１／１バージョンをプレイアウトすることが最適となる。例えば、＋１／１バージョンのＩフレームが元のビデオと一致して毎秒１つのレートであり、要求した早送り再生速度が２倍である場合、＋１／１バージョンのＩフレームを毎秒２つのレートでプレイアウトすることが最適となる。同様に、要求した早送り再生速度が３倍の場合、＋１／１バージョンのＩフレームを毎秒３つのレートでプレイアウトすることが最適となる。  
【００３３】
ところが、上述のとおり、入ってくるストリームのプレイアウト速度を高速にしすぎると、望ましくないクライアントの再生バッファの枯渇を招く恐れがある。例えば、上述の例では、ネットワーク帯域幅が符号化された＋１／１バージョンのトリックプレイトラックのビットレートの６倍であり、かつ要求した早送り再生速度が８倍である場合、クライアントは、＋１／１バージョンを８倍の速度でプレイアウトするのに十分な速さで＋１／１バージョンを受信することができず、クライアントがバッファ不足を発生しうる。
【００３４】
本開示によれば、この問題の回避を助けるために、クライアントは、要求した早送り再生レートでプレイアウトした時に現在のネットワーク帯域幅を越えることがなく、従ってバッファ不足を起こす見込みがない、利用可能な最高フレームレートバージョン（例えば、毎秒のＩフレーム数が最大のバージョン）を代わりに選択しうる。
【００３５】
これを実際に行うために、クライアントは、要求した早送り再生速度でプレイアウトした時、現在のネットワーク帯域幅を越えないビットレートを持つ、最高Ｉフレームレート（または最低Ｉフレームスキッピングレート）を持つフレームレートバージョンを選択できる。その上、複数のフレームレートバージョンが最高Ｉフレームレートを持ち、かつバッファ不足を起こすことなく要求した早送り再生速度でプレイアウトできる場合には、クライアントは、それらのフレームレートバージョンのうち最高ビットレートバージョンを選択しうる。次に、クライアントは、サーバーに選択したフレームレートバージョンをクライアントにストリーム配信するよう要求しうる。またクライアントが、サーバーからストリーム配信された選択したフレームレートバージョンを受信すると、クライアントは、フレームレートバージョン（適切な場合）をバッファし、フレームレートバージョンを要求した早送り再生速度でプレイアウトしうる。
【００３６】
これを促進するために、サーバーは、様々なフレームレートバージョンのトリックプレイトラックの事前に生成したインスタンスを、おそらくは元のビデオを含むメディアコンテナの一部として格納または他の方法でそれへのアクセスを持つか、またはサーバーが選択したフレームレートバージョンをその場で生成することもできる（＋１／１バージョンのトリックプレイトラックのＩフレームを、望ましいフレームレートバージョンを生成するのに十分なレートで除去することによるなど）。これらは、符号化されたバージョンとすることができ、またそのため各フレームレートバージョンの関連するビットレートは、そのフレームレートバージョンについて符号化された表現のビットレートでありうる。さらに、次にビデオのインデックスは、元のビデオに対応してトリックプレイのプレイアウトを可能にする各バージョンのトリックプレイトラックに元のビデオをそれぞれマッピングすることができ、また、各フレームレートバージョンのトリックプレイトラックについて、ビットレートをそれぞれ指定することもできる。上述のとおり、クライアントは、このインデックスをサーバーまたは別の実体から獲得し、少なくとも（Ｉ）どの再生速度が要求されているか、および（ＩＩ）現在のネットワーク帯域幅を考慮して、サーバーにストリーム配信を要求するトリックプレイトラックをどのバージョンに決定するかの根拠として使用しうる。
【００３７】
実際には、例えば、クライアントが、特定の速度での早送り再生プレイアウトの要求を受信した時、クライアントは、現在のネットワーク帯域幅を要求した早送り再生速度で割り、最大トリックプレイ  ビットレートを決定し、次にクライアントはその決定した最大値以下の最高ビットレートを持つフレームレートバージョンを選択しうる。
【００３８】
この具体的な例として、＋１／１バージョンはビットレート６，０００  Ｋｂｐｓ、＋１／２バージョンはビットレート３，０００  Ｋｂｐｓ、および＋１／３バージョンはビットレート１，５００  Ｋｂｐｓを持つと想定し、また要求した速度は２倍で、現在のネットワーク帯域幅は７，０００  Ｋｂｐｓであると想定する。この例で、ネットワーク帯域幅７，０００  Ｋｂｐｓを速度の２で割ると、トリックプレイトラック  プレイアウトに許容可能な最高ビットレートは３，５００  Ｋｂｐｓとなる。（すなわち、最高３，５００  Ｋｂｐｓビットレートを持つトリックプレイトラックを、７，０００  Ｋｂｐｓ  ネットワーク帯域幅で２倍の速度で受信でき、したがってバッファ不足を起こすことなく、２倍の早送り再生速度でプレイアウトができる。）こうして、この例で、クライアントは、決定された最大３，５００  Ｋｂｐｓよりも小さいビットレートを持つ最高フレームレートバージョンであるという理由で、ビットレート３，０００  Ｋｂｐｓを持つフレームレートバージョン＋１／２を選択しうる。
【００３９】
これを調べる別の方法として、クライアントは、利用可能なそれぞれのトリックプレイトラックのフレームレートバージョンについて、そのバージョンが要求した早送り再生速度でプレイアウトされた場合にフレームレートバージョンの増大した有効ビットレートは何かを決定し、次にクライアントは、ネットワーク帯域幅を越えることがない最高の増大したビットレートを持つフレームレートバージョンを決定しうる。
【００４０】
上記の数を考慮すると、例えば、クライアントは、２倍のプレイアウト速度では、バージョン＋１／１の増大したビットレートは１２，０００  Ｋｂｐｓ、バージョン＋１／２の増大したビットレートは６，０００  Ｋｂｐｓ、およびバージョン＋１／３の増大したビットレートは３，０００  Ｋｂｐｓと決定することができる。同様に、次にクライアントは、その増大したビットレートがわずか６，０００  Ｋｂｐｓであるという理由で、７，０００  Ｋｂｐｓのネットワーク帯域幅を越えない最高の増大したビットレートを持つフレームレートバージョンのうち一つはバージョン  ＋１／２であると結論付けうる。こうして、クライアントは同様に、フレームレートバージョン＋１／２をストリーム配信に選択しうる。
【００４１】
ストリーム配信されるトリックプレイトラックのフレームレートバージョンが選択されると、次に、クライアントは、サーバーに選択したフレームレートバージョンのトリックプレイトラックをクライアントに対してストリーム配信するよう要求しうる。クライアントがサーバーからストリーム配信されたトリックプレイトラックを受信すると、クライアントは、トリックプレイトラックを要求した早送り再生速度でプレイアウトしうる。上記の例を続けるが、例えば、＋１／２バージョンのトリックプレイトラックがそれぞれ０、２、４、６、８秒などの通常のプレイアウト時間で発生する、ＩフレームＩ０、Ｉ２、Ｉ４、Ｉ６、Ｉ８などを持つ場合、クライアントは、０、１、２、３、４秒などでプレイアウトすることで、バッファ不足を発生させる可能性なしに、それらのＩフレームを２倍の速度でプレイアウトしうる。
【００４２】
代替的な実施において、クライアントによって実行されている上述のこの方法の様々な態様は、サーバーによって代わりに実行することができる。例えば、実際に、クライアントはネットワーク帯域幅を決定でき、ネットワーク帯域幅および要求した早送り再生速度をサーバーに、ＨＴＴＰ、ＲＴＳＰ、ＲＴＭＰ、ＲＴＣＰまたはその他の制御メッセージで報告できる。サーバーは次に、上述のプロセスを適用して、クライアントに対してストリーム配信する最適なトリックプレイトラックのフレームレートバージョンを選択しうる。また、次にサーバーは、プレイアウトするために、その選択したフレームレートバージョンをクライアントにストリーム配信しうる。
【００４３】
その上、クライアントまたはサーバーのどちらがこのプロセスによって望ましいフレームレートバージョンを選択するかにかかわらず、サーバーがその選択したバージョンをデータストレージから取り出しそのバージョンをクライアントにストリーム配信することも、またはサーバーがそのバージョンをその場で生成することもできる。例えば、上述のとおり、サーバーは、元のビデオの全てのＩフレームを持つ＋１／１バージョンのトリックプレイトラックを取り出すことができ、また、クライアントへのストリーム配信に望ましいバージョンの生成に十分なレートでＩフレームを除去することができる。
【００４４】
図面を参照するが、図１は本発明の方法の例を実装できるネットワーク配置の簡略化したブロック図である。図１に示すとおり、ネットワーク配置は、クライアントデバイス１２、ネットワーク（例えば、インターネットまたはその他のネットワーク）１４、およびサーバー１６を含み、サーバーは、トリックプレイトラックの複数のフレームレートバージョン１８へのアクセスを持ち、またクライアントは、様々なフレームレートバージョンを指定するビデオインデックス２０へのアクセスを持つ。
【００４５】
上記のとおり、この配置により、クライアント１２は、それを通してサーバー１６がネットワーク１４を介してビデオをクライアントにストリーム配信する、ストリーミングメディアセッションをセットアップしうる。例えば、クライアントは、ＲＴＳＰ  ＤＥＳＣＲＩＢＥ要求をサーバーに送信し、それに応答して、サーバーがクライアントにストリーム配信できるビデオストリームを指定するＲＴＳＰ  ＤＥＳＣＲＩＢＥ返答をサーバーから受信しうる。さらに、クライアントは、サーバーがビデオをクライアントにストリーム配信させるように、ＲＴＳＰ  ＰＬＡＹ要求をサーバーに送信しうる。
【００４６】
サーバーからクライアントへのビデオのストリーミングの前および／またはその途中、クライアントは、特定の速度での早送り再生プレイアウトを求めるユーザー要求を受信した後、インデックス２０への参照により、上述のプロセスによって、トリックプレイトラックの指定したフレームレートバージョンのうち一つを選択しうる。次にクライアントは、サーバーにトリックプレイトラックの選択したフレームレートバージョンをストリーム配信するよう求める、ＲＴＳＰ  ＰＬＡＹ要求または同種のものをサーバーに送信することができ、サーバーは同左を実行しうる。クライアントが選択したフレームレートバージョンのトリックプレイトラックをサーバーから受信すると、クライアントは次に、選択したフレームレートバージョンを要求した早送り再生速度でプレイアウトしうる。
【００４７】
クライアントデバイス１２は、ストリーミングメディアの要求および受信を行い、メディアが受信されている時にメディアをプレイアウトするように配置された任意のコンピューティングデバイスでよい。例えば、クライアントデバイスは、パーソナルコンピュータ、タブレットコンピュータ、携帯電話またはその他の通信デバイス、統合型のオーディオまたはビデオプレーヤー、ゲーム用デバイス、または既知のあるいは今後開発されるその他の任意のデバイスとしうる。図２は、実際的な本方法の態様の実行を促進するために、こうしたデバイスに含めることができるコンポーネントを示す、簡略化したブロック図である。
【００４８】
図２に示すとおり、クライアントデバイスの例には、ネットワーク通信インターフェース２２、ユーザーインターフェース２４、プロセッサ２６、およびデータストレージ２８が含まれ、その全ては、システムバスまたはその他の接続機構３０により一つに結合しうる。
【００４９】
ネットワーク通信インターフェース２２は、クライアント１２が、ネットワーク１４上で、またネットワーク１４を介して実体（例えばサーバー１６）と通信するよう配置された、有線または無線のインターフェースを備えうる。例えば、ネットワーク通信インターフェース２２は、ローカルエリアネットワークで、さらには、ルーターおよび／または一つ以上のその他のネットワーク要素を介してネットワーク１４上の実体との通信用に、有線または無線のイーサネットインターフェースを備えうる。別の例として、ネットワーク通信インターフェースは、ＬＴＥ、ＷｉＭＡＸ、ＣＤＭＡ、ＧＳＭ（登録商標）、または同種のものなどのプロトコルに従った無線アクセスネットワークとエアインターフェース通信に従事する、またネットワーク１４上の実体との無線アクセスネットワークを介した、セル方式無線インターフェースを備えうる。その他の例も同様に考えられる。
【００５０】
ユーザーインターフェース２４は、クライアント１２がクライアントのユーザーと相互作用できるようにしうるが、従って、ディスプレイスクリーン、音声スピーカー、およびこれに類するものなどの出力コンポーネント、ならびにキーボード、カメラ、タッチパッドまたはタッチスクリーン、およびこれに類するものなどの入力コンポーネントを備えうる。さらに、ユーザーインターフェース２４には、ユーザーへのデジタル形式のメディアのプレイアウトを促進するための、メディアをデジタル形式からアナログ形式に変換する回路を含みうる。
【００５１】
ユーザーインターフェースで、クライアントは、例えばトリックプレイトラックなど、サーバーからストリーム配信されたビデオを再生しうる。さらに、クライアントは、ユーザーがビデオの特定部分のプレイアウトを選択するために使用できるスクロールバーなどのシーク機能を提示しうる。またクライアントはさらに、ビデオを特定の早送り再生速度でプレイアウトするようクライアントに要求するためにユーザーが使用できる、早送りや巻き戻しのボタンなどの早送り再生ボタンを提示しうる。
【００５２】
プロセッサ２６は、一つ以上の汎用プロセッサ（例えば、ＩＮＴＥＬマイクロプロセッサ）および／または一つ以上の特殊目的プロセッサ（例えば、アプリケーション固有の集積回路、デジタル形式の信号プロセッサなど）を備えうる。プロセッサ２６に複数のプロセッサが含まれる場合、プロセッサは、組み合わせで（例えば、並列）または別個に作動するよう配置しうる。さらに、プロセッサ２６は、ネットワーク通信インターフェース２２または一つ以上のその他のコンポーネントと全部または一部を統合しうる。
【００５３】
データストレージ２８は次に、磁気、光、有機、フラッシュ、または現時点で既知の、または今後開発されるその他のタイプの記憶装置など、一つ以上の揮発性および／または不揮発性の記憶装置コンポーネントを備えうるが、全部または一部をプロセッサ２６と統合することもでき、および／またはクライアント１２から取り外し可能とすることも、クライアント１２と外部的に接続する（有線または無線の手段によって）こともできる。図示のとおり、データストレージ２８は、プログラム命令３２およびプログラムデータ３４を含む。一般に、プログラム命令３２は、本書に記載した様々なクライアント機能を実行するためにプロセッサ２６によって実行可能としうる。代替的に、一部または全てのこうした機能は、様々なその他のマシンの実装により実行することもできる。次に、プログラムデータ３４は、プレイアウト用にバッファされた受信済みビデオコンテンツ、ビデオインデックス、およびクライアントが早送り再生プレイアウトを含めたビデオプレイアウトを要求するユーザーを促進するユーザーインターフェース２４上に提示可能なグラフィカルユーザーインターフェースを定義するデータなど、データを含みうる。
【００５４】
サーバー１６は、ビデオのストリーミングを求める要求を受信し、プレイアウトのために要求したビデオをストリーム配信するように配置される、任意のコンピューティングデバイスとしうる。そのため、サーバーは、サーバークラスのコンピュータであることが適当である。ところが、サーバーは、上述のデバイスの一つなど、サーバーとして動作する論理回路とともに配置されたより単純なものでもよい。図３は、実際的な本方法の態様の実行を促進するために、こうしたサーバーに含めることができるコンポーネントを示す、簡略化したブロック図である。
【００５５】
図３に示すとおり、サーバーの例には、ネットワーク通信インターフェース４０、プロセッサ４２、およびデータストレージ４４が含まれ、その全ては、システムバスまたはその他の接続機構４６により一つに結合しうる。
【００５６】
ネットワーク通信インターフェース４０は、サーバー１６がネットワーク１４上またネットワーク１４を介して実体（例えばクライアント１２）と通信するように配置された、有線または無線のインターフェースを備えうる。そのため、ネットワーク通信インターフェース４０は、有線または無線のイーサネットインターフェース、セル方式無線インターフェース、またはその他の任意のタイプのネットワークインターフェースを備えうる。
【００５７】
プロセッサ４２は、一つ以上の汎用プロセッサおよび／または一つ以上の特殊目的プロセッサを備えうるが、ネットワーク通信インターフェースと全部または一部を統合しうる。また、データストレージ４４は、一つ以上の揮発性および／または不揮発性の記憶装置コンポーネントを備えうるが、全部または一部をプロセッサ４２と統合しうる。図示のとおり、データストレージ４４は、本書に記載した様々なサーバー機能を実行するための実行可能なプログラム命令４８や、またプレイアウトのためにクライアント１２に対してストリーム配信するためのビデオおよびトリックプレイトラックの様々なフレームレートバージョンなどのプログラムデータ５０を含む。
【００５８】
次に、図４は、トリックプレイストリーミングを制御するために、本発明の方法の実装例に従い実行されうる機能を描写した流れ図である。これらの機能は、非一時的コンピュータ可読媒体（例えば、磁気、光、または例えば、上記のものなど、その他のタイプのデータストレージ機構）上に符号化された命令によって定義されうるが、これは、例えばクライアントまたはサーバーの一部である処理など、処理装置によって実行可能とされうる。あるいは方法は、別の状況で実施されうる。
【００５９】
図４に示すとおり、ブロック６０において、方法の例は、ビデオの通常再生速度の倍数を定義する早送り再生速度でビデオを再生する要求を検出する手順を含む。例えば、上記のとおり、これはビデオ通常再生速度の２倍、３倍、４倍の速度で、またはその他いくつかの整数倍または非整数倍の速度でビデオを再生する要求でもよい。ユーザーは、一定の量だけ、またはその量の何倍かに再生速度を速める要求を送信する時、要求している実際の速度を把握していても、把握していなくてもよい。例えば、ユーザーは、望ましいレベルの早送り再生を示す矢印または速度バーの数を選択することができ、クライアントはそれを対応する早送り再生速度でのプレイアウトの要求として処理しうる。さらに、上述のとおり、早送り再生は早送りまたは巻き戻しとしうる。
【００６０】
早送り再生速度でビデオを再生する要求を検出するというこの機能には、クライアントのユーザーインターフェースで入力された要求を表す信号を受信する機能が関与しうる。例えば、クライアントのプロセッサがこの機能を実行する場合、ユーザーがユーザーインターフェースで早送り再生プレイアウトを要求する入力を供給する時に、プロセッサはこうした信号を受信しうる。代替的にまたは追加的に、サーバーのプロセッサがこの機能を実行する場合、クライアントは要求を定義するユーザー入力の受信に応答してこうした信号をサーバーに送信しうるため、プロセッサはこうした信号をクライアントから受信しうる。
【００６１】
ブロック６２において、これは流れのどこか他の場所でも発生しうるが、方法の例には、さらにネットワーク帯域幅閾値の決定が関与しうる。ネットワーク帯域幅閾値は、ネットワーク帯域幅のリアルタイム（すなわち、現時点または実質的に現時点）での尺度、または例えばこうした尺度の何らかの派生物としうる。そうであるため、帯域幅の閾値は、随時変化しうるかまたは一定で、おそらくは所定の値に設定することさえもできる。
【００６２】
上述のとおり、クライアントのプロセッサにより実行される場合、ネットワーク帯域幅閾値を決定するというこの機能には、クライアントがほぼその再生バッファを枯渇させた後でバッファがサーバーから入ってくるデータで満たされるようにし、バッファが満たされるレートを測定する手順が、またはサーバーからクライアントへのデータの到着率を他の方法で測定する手順が関与しうる。次にクライアントは、測定したレートまたは測定したレートの何倍かまたはオフセットバージョンが、ネットワーク帯域幅閾値であるとみなしうる。代替的に、クライアントは、ネットワーク帯域幅閾値をその他の何らかの方法で決定でき、および／または別の実体によりネットワーク帯域幅閾値についての情報を受けることができる。一方、機能がサーバーのプロセッサにより実行される場合、機能は、ネットワーク帯域幅またはネットワーク帯域幅閾値についてのレポートをクライアントからまたはサーバーとクライアントの間の通信経路内の一つ以上のその他の実体から受信する手順が関与しうるか、またはサーバーはその他の任意の方法でネットワーク帯域幅閾値を決定できる。上述のとおり、例えば、サーバーが最適なトリックプレイトラックのフレームレートバージョンを選択できるように、サーバーはクライアントから要求した早送り再生速度およびネットワーク帯域幅閾値を指定する信号を受信することができる。
【００６３】
ブロック６４で、方法の例にはさらに、（Ｉ）ビデオの複数バージョンのトリックプレイトラックから、要求した早送り再生速度でプレイアウトする時にネットワーク帯域幅閾値を越えないビットレートを持つ最高Ｉフレームレートを持つバージョンを選択し、（ＩＩ）選択したバージョンのトリックプレイトラックを、プレイアウトのためにネットワークを介してサーバーからクライアントにストリーム配信させることにより、ビデオの早送り再生の要求に応答する手順が関与する。
【００６４】
トリックプレイトラックバージョンを選択する機能は、様々な形態を取ることがある。上記のとおり、例えば、機能には、ネットワーク帯域幅閾値を要求した早送り再生速度で割ってトリックプレイトラックの最大許容可能なビットレートを決定した後、最大許容可能なビットレートを越えない最高ビットレートを持つトリックプレイトラックのバージョンを選択することが含まれうる。代替的に、この機能には、考えられるそれぞれのバージョンのトリックプレイトラックについて、要求した早送り再生速度でプレイアウトした場合（例えば、トリックプレイトラックの通常速度ビットレートが、要求した早送り再生速度と掛け合わせられる場合）に、そのバージョンの有効ビットレートが何かを決定した後、ネットワーク帯域幅閾値を越えない最高有効ビットレートを持つバージョンを選択する手順が関与しうる。この機能のその他の実装も同様に考えられる。
【００６５】
その上、上述のとおり、バージョンを複数のバージョンから選択する機能には、複数のバージョンを指定するビデオインデックスを参照し、指定した複数の中からバージョンを選択する機能が関与しうる。バージョンがインデックスにより指定されるという事実は、バージョンが既に存在することを意味する場合と意味しない場合がある。インデックスは、例えば、一般的な問題として、単にストリーム配信できるトリックプレイトラックのバージョンを示しうる。
【００６６】
同様に、選択したバージョンのトリックプレイトラックをネットワークを介してサーバーからクライアントにストリーム配信させる機能も、様々な形態を取りうる。例えば、機能がクライアントのプロセッサにより実行される場合、機能には、ネットワークを介してサーバーに、クライアントのネットワーク通信インターフェースを経由して、サーバーに選択したバージョンのトリックプレイトラックをクライアントに対してストリーム配信するよう要求する、ＨＴＴＰ、ＲＳＴＰ、ＲＴＭＰ、またはＲＴＣＰ要求などの制御信号を転送する手順が関与しうる。代替的に、機能がサーバーのプロセッサにより実行される場合、機能には、サーバーのネットワーク通信インターフェースに、選択したバージョンのトリックプレイトラックをリアルタイムでクライアントに対してストリーム配信させるプロセッサが関与しうる。
【００６７】
さらに上述したとおり、サーバーは、選択したバージョンのトリックプレイトラックをその場で生成するよう配置しうる。例えば、選択したバージョンが選択されると、サーバーは、選択したバージョンを生成するのに十分なレートで＋１／１バージョンのトリックプレイトラックからＩフレームを除去することにより、バージョンを生成できる。
【００６８】
ブロック６６において、方法の例にはさらに、サーバーからストリーム配信された選択したバージョンのトリックプレイトラックを受信し、サーバーからストリーム配信された選択したバージョンのトリックプレイトラックを受信する一方で、選択したバージョンのトリックプレイトラックを要求した早送り再生速度でプレイアウトする手順が関与する。例えば、上述のとおり、クライアントは、Ｉフレームが早送り再生速度で提示されるように、トリックプレイトラックのＩフレームが提示されるレートを加速しうる。
【００６９】
次に、図５は、トリックプレイストリーミングを制御するために、本発明の方法の実装例に従い実行されうる機能を描写した流れ図である。この方法は、クライアント、サーバー、および／またはその他の実体または実体の組み合わせにより実行されうる。
【００７０】
図５に示すとおり、ブロック６８において、方法の例は、ビデオの通常再生速度の倍数を定義する早送り再生速度でビデオを再生する要求を受信する手順を含む。  
【００７１】
ブロック７０において、方法の例にはさらに、ビデオに対応するトリックプレイトラックの複数の異なるフレームレートバージョンを識別する手順が関与しうるが、ここで、各フレームレートバージョンが互いのフレームレートバージョンとは異なる数のビデオのＩフレームをスキップすることを少なくとも部分的な理由として、各フレームレートバージョンが互いのフレームレートバージョンのビットレートとは異なるそれぞれのビットレートを持つ。例えば、複数の異なるフレームレートバージョンを指定するビデオのインデックスを獲得した後、この機能には、インデックスを参照して利用可能な様々なバージョンを決定する手順が関与しうる。
【００７２】
ブロック７２において、方法の例には、（Ｉ）フレームレートバージョンごとに増大したビットレートを生成するために、各フレームレートバージョンのビットレートに要求した早送り再生速度を掛け合わせた場合に、どのフレームレートバージョンがネットワーク帯域幅閾値（クライアントでのサーバーからのデータの到着率に基づき決定されたものなど）よりも低く最高の増大したビットレートを持つことになるかを決定し、（ＩＩ）決定されたフレームレートバージョンを最適なフレームレートバージョンとして選択することによって、識別された複数のフレームレートバージョンから最適なフレームレートバージョンを選択する手順が関与しうる。例えば、上記のとおり、この機能には、（Ａ）ネットワーク帯域幅閾値を要求した早送り再生速度で割って最大トリックプレイ  ビットレートを決定し、（Ｂ）最適なフレームレートバージョンとして、決定済みの最大トリックプレイ  ビットレートを越えない最高ビットレートを持つフレームレートバージョンを選択する手順が関与しうる。
【００７３】
ブロック７４において、方法の例にはさらに、サーバーに、選択したフレームレートバージョンをネットワークを介してクライアントにストリーム配信させる手順が含まれうる。例えば、この機能には、サーバーに、サーバーが選択したフレームレートバージョンをクライアントにストリーム配信させるよう命令する制御信号を転送するクライアントが関与することがある。
【００７４】
ブロック７６において、方法の例には次に、サーバーからストリーム配信中の選択したフレームレートバージョンのトリックプレイトラックを受信し、サーバーからストリーム配信された選択したフレームレートバージョンのトリックプレイトラックを受信する一方で、選択したフレームレートバージョンのトリックプレイトラックを要求した早送り再生速度でプレイアウトする手順が関与する。
【００７５】
次に、図６は、トリックプレイストリーミングを制御するために、本発明の方法の実装例に従い実行されうる機能を描写した流れ図である。この方法は、例えばクライアントなどのコンピューティングデバイスにより実行されうる。
【００７６】
図６に示すとおり、ブロック７８において、方法の例には、ビデオの通常再生速度の倍数を定義する早送り再生速度でビデオを再生する要求を受信する手順が関与する。さらに、ブロック８０において、方法の例には、要求に応答して、（Ａ）ビデオのトリックプレイトラックのバージョンを、要求した早送り再生速度およびネットワーク帯域幅閾値に少なくとも部分的に基づき選択する機能であって、ここで、要求した早送り再生速度およびネットワーク帯域幅閾値に少なくとも部分的に基づくトリックプレイトラックのバージョンの選択が、トリックプレイトラックのバージョンとして要求した早送り再生速度で再生された時に、トリックプレイトラックのバージョンがネットワーク帯域幅閾値を越えないビットレートを持つために十分なスキップしたビデオのＩフレームレートを持つ、トリックプレイトラックのバージョンを選択する手順と、（Ｂ）ユーザーインターフェースでのプレイアウト用に、サーバーに、ネットワークを介してコンピューティングデバイスに選択したバージョンのトリックプレイトラックをストリーム配信させる手順とが関与する。
【００７７】
上記の例にあるとおり、その方法の例にはさらに、ネットワーク帯域幅閾値の決定が関与しうる。さらに、サーバーに、選択したバージョンのトリックプレイトラックをコンピューティングデバイスにストリーム配信させる機能には再び同様に、コンピューティングデバイスのネットワーク通信インターフェースを経由して、コンピューティングデバイスに対して選択したバージョンのトリックプレイトラックをストリーム配信するようサーバーに命令する制御信号を転送する手順が関与しうる。
【００７８】
その上、上記の例にあるとおり、コンピューティングデバイスのデータストレージが複数のバージョンのトリックプレイトラックを指定するビデオのインデックスを保持し、複数のバージョンの前記トリックプレイトラックが、少なくとも前記ビデオのＩフレームをスキップするそのそれぞれのレートという点で互いに異なり、そのためにそのそれぞれのビットレートが互いに異なる。その場合、トリックプレイトラックのバージョンを選択する機能には、（Ｉ）前記要求した早送り再生速度で再生される時、ネットワーク帯域幅閾値を越えない増大したビットレートを持つ一つ以上の指定された複数バージョンのトリックプレイトラックを指定するインデックスを参照し、（ＩＩ）識別された一つ以上の識別済みバージョンの前記トリックプレイトラックのうち最高ビットレートのバージョンを選択する機能が関与しうる。例えば、機能には、（Ａ）ネットワーク帯域幅閾値を要求した早送り再生速度で割って最大トリックプレイ  ビットレートを決定し、（Ｂ）複数のバージョンのトリックプレイトラックから、決定済みの最大トリックプレイ  ビットレートを越えない最高ビットレートを持つバージョンを選択する手順が関与しうる。
【００７９】
最後に、図７は、ビデオの通常の再生速度の倍数を定義する要求した早送り再生速度でのビデオの早送り再生プレイアウトを制御するための、本発明の方法の実施例に従い実行されうる機能を描写するさらに別の流れ図である。上述の実施と同様、その方法の例は、クライアント、サーバー、および／またはその他の任意の実体または実体の組み合わせで実行されうる。
【００８０】
図７に示すとおり、ブロック８２において、その方法の例には、要求した早送り再生速度で再生されるトリックプレイトラックが、ネットワーク帯域幅の尺度以下のビットレートを持つように、ビデオのトリックプレイトラックがビデオのＩフレームをスキップするべき最低レートを決定する手順が関与しうる。例えば、それぞれのＩフレームが特定のビット数（例えば、平均）で符号化されていると想定すると、この機能の実行する実体は、ネットワーク帯域幅（単位：ビット／秒）をそのビット数で割って、毎秒の許容可能な符号化されたＩフレーム数、すなわち許容可能なＩフレームレートを決定しうる。トリックプレイトラックの＋１／１バージョンの特定のＩフレームレート（例えば、毎秒１つのＩフレーム）を想定すると、実体は、許容可能なＩフレームレート内に収まるためにスキップされるべき毎秒最少のＩフレーム数を決定しうる。この機能を実行するためのその他のプロセスも同様に考えられる。
【００８１】
ブロック８４において、方法の例には、サーバーに、決定したレートでＩフレームをスキップするトリックプレイトラックをクライアントにストリーム配信させる手順が関与しうる。例えば、クライアントが、Ｉフレームスキッピングレートを決定した実体である場合、クライアントは次に、複数の所定のトリックプレイトラックのフレームレートバージョンから、決定されたＩフレームスキッピングレートと最も一致する最高フレームレートバージョンを選択することができ、またクライアントは、サーバーがそのトリックプレイトラックのフレームレートバージョンをクライアントにストリーム配信するよう要求する制御信号をサーバーに送信しうる。代替的に、クライアントは、決定したＩフレームスキッピングレートを指定する制御信号をサーバーに送信することができ、サーバーはそれに応答して、フレームレートバージョンに最も一致するものを選択するか、またはそのＩフレームスキッピングレートを持つバージョンを動的に生成することができる。サーバーは次に、プレイアウトのために、決定したトリックプレイトラックをクライアントにストリーム配信しうる。
【００８２】
上述のこの実施およびその他の実施で、述べたとおり、トリックプレイトラックには元のビデオのＩフレームのみが含まれうるが、そのため元のビデオの全てのＰフレームおよびＢフレームは除外されうる。代替的に、トリックプレイトラックはいくらかのＰフレームおよびＢフレームも含みうる。
【００８３】
さらに、当然のことながら、本書で使用する時「ビットレート」という用語は、限定的ではなく、任意の尺度のデータレートを広く含むことが意図され、毎秒のビット数またはその他の単位時間、毎秒のバイト数またはその他の単位時間、およびこれに類するものを含むがこれに限定されない。同様に、本書で使用する時「帯域幅」という用語は、こうした任意の尺度のデータレートを含みうる。帯域幅がビットレートと比較されている場合、比較は同一のデータ単位および時間の単位に関したものであることが最適であるが、比較を促進するために倍率が適用される場合はこの限りではない。
【図１】
0005899334.tif 000002
【図２】
0005899334.tif 000003
【図３】
0005899334.tif 000004
【図４】
0005899334.tif 000005
【図５】
0005899334.tif 000006
【図６】
0005899334.tif 000007
【図７】
0005899334.tif 000008