(57)【特許請求の範囲】
【請求項１】
クライアント装置により受信されるブロードキャストビデオストリームの巻戻しを提供する方法であって、
コンピュータサーバーによって、ブロードキャストビデオストリームについてのリクエストを前記クライアント装置から受信するステップと、
前記コンピュータサーバーによって、前記リクエストが前記ブロードキャストビデオストリームを巻き戻すリクエストであることを判定するステップであって、前記リクエストが、前記ブロードキャストビデオストリームのストリーム識別情報と、前記ビデオストリームの巻戻す部分を指示するタイミング情報とを含む、前記ステップと、
前記コンピュータサーバーによって、１以上の基準に基づいて、前記リクエストに応ずるために複数のストリーミングデータセンタの内の１つを選択するステップであって、該１つのストリーミングデータセンタは、該ストリーミングデータセンタのローカルの記憶装置または別のストリーミングデータセンタのいずれかによって前記リクエストに応ずる、前記ステップと、
前記選択されたストリーミングデータセンタがローカルの記憶装置からの前記ビデオストリームを取り扱うことに応答して、前記コンピュータサーバーによって、該選択されたストリーミングデータセンタの該ローカルの記憶装置から前記リクエストされたビデオストリームを読み出すステップと、
前記選択されたストリーミングデータセンタが前記ローカルの記憶装置からの前記ビデオストリームを取り扱うことに応答して、前記コンピュータサーバーによって、前記リクエスト内の前記タイミング情報に対応する前記リクエストされたビデオストリーム内のファイルオフセットを決定するステップであって、前記ファイルオフセットは、前記リクエストされたビデオストリーム内の複数のファイルオフセットを前記リクエストされたビデオストリームのタイミング情報に関連付けるインデックスファイルによって決定され、該インデックスファイルは、前記ローカルの記憶装置内に記憶されている、前記ステップと、
前記選択されたストリーミングデータセンタが前記ローカルの記憶装置からの前記ビデオストリームを取り扱うことに応答して、前記コンピュータサーバーによって、前記決定したファイルオフセットから始まる前記リクエストされたビデオストリームを前記クライアント装置へストリーム出力するステップ、
を具備する方法。
【請求項２】
前記コンピュータサーバーによって、ビデオソースから前記ビデオストリームを受信するステップを更に具備する、請求項１の方法。
【請求項３】
前記ビデオソースがライブ入力からのものである、請求項２の方法。
【請求項４】
前記ビデオソースが録画されたビデオストリームからのものである、請求項２の方法。
【請求項５】
ネットワーク記憶装置システム内に前記ビデオストリームをアーカイブするステップを更に具備し、該アーカイブされたビデオストリームは前記ストリーム識別情報により識別される、請求項１の方法。
【請求項６】
前記ビデオストリームをアーカイブするステップは、前記ビデオストリームの各イントラフレーム毎にインデックスを格納するステップを更に含み、前記各イントラフレーム毎の前記インデックスは、前記ストリーム識別情報と、当該イントラフレームが前記ビデオストリーム内に配置される場所を指示するファイルオフセットと、当該イントラフレームが前記ビデオストリーム内で再生を開始する時間を指示するタイムスタンプとを含む、請求項５の方法。
【請求項７】
前記ビデオストリームをアーカイブするステップは、前記ビデオストリームのピクチャーグループの最初のイントラフレーム毎にインデックスを格納するステップを更に含み、該インデックスは、ストリーム識別情報と、ファイルオフセットと、タイムスタンプとを含む、請求項６の方法。
【請求項８】
前記リクエスト内の前記タイミング情報に対応する前記ファイルオフセットを決定する前記ステップは、前記タイミング情報内の前記時間値に最も近いタイムスタンプを有するインデックスを選択するステップを更に含む、請求項１の方法。
【請求項９】
前記リクエストされたビデオストリームをストリーム出力する前記ステップは、選択したインデックスの前記ファイルオフセットに対応するファイルオフセットを持つイントラフレームを読出すステップを更に含む、請求項１の方法。
【請求項１０】
クライアント装置により受信されるブロードキャストビデオストリームの巻戻しを提供するためのコンピュータによって実行可能なプログラム命令を記録してなるコンピュータ読取可能な記憶媒体であって、前記コンピュータによって実行可能なプログラム命令は、コンピュータサーバーに、
ブロードキャストビデオストリームについてのリクエストを前記クライアント装置から受信する手順と、
前記リクエストが前記ブロードキャストビデオストリームを巻き戻すリクエストであることを判定する手順であって、前記リクエストが、前記ブロードキャストビデオストリームのストリーム識別情報と、前記ビデオストリームの巻戻す部分を指示するタイミング情報とを含む、前記手順と、
１以上の基準に基づいて、前記リクエストに応ずるために複数のストリーミングデータセンタの内の１つを選択する手順であって、該１つのストリーミングデータセンタは、該ストリーミングデータセンタのローカルの記憶装置または別のストリーミングデータセンタのいずれかによって前記リクエストに応ずる、前記手順と、
前記選択されたストリーミングデータセンタがローカルの記憶装置からの前記ビデオストリームを取り扱うことに応答して、該選択されたストリーミングデータセンタの該ローカルの記憶装置から前記リクエストされたビデオストリームを読み出す手順と、
前記選択されたストリーミングデータセンタが前記ローカルの記憶装置からの前記ビデオストリームを取り扱うことに応答して、前記リクエスト内の前記タイミング情報に対応する前記リクエストされたビデオストリーム内のファイルオフセットを決定する手順であって、前記ファイルオフセットは、前記リクエストされたビデオストリーム内の複数のファイルオフセットを前記リクエストされたビデオストリームのタイミング情報に関連付けるインデックスファイルによって決定され、該インデックスファイルは、前記ローカルの記憶装置内に記憶されている、前記手順と、
前記選択されたストリーミングデータセンタが前記ローカルの記憶装置からの前記ビデオストリームを取り扱うことに応答して、前記決定されたファイルオフセットから始まる前記リクエストされたビデオストリームを前記クライアント装置へストリーム出力する手順と、
を実行させることを特徴とするコンピュータ読取可能な記憶媒体。
【請求項１１】
前記コンピュータによって実行可能なプログラム命令は、前記コンピュータサーバーに、更に、ビデオソースから前記ビデオストリームを受信する手順を実行させることを含む、請求項１０のコンピュータ読取可能な記憶媒体。
【請求項１２】
前記ビデオソースは、ライブ入力からのものである、請求項１１のコンピュータ読取可能な記憶媒体。
【請求項１３】
前記ビデオソースは、録画されたビデオストリームからのものである、請求項１１のコンピュータ読取可能な記憶媒体。
【請求項１４】
前記コンピュータによって実行可能なプログラム命令は、前記コンピュータサーバーに、更に、ネットワーク記憶装置システム内の前記ビデオストリームをアーカイブする手順を実行させることを含み、前記アーカイブされたビデオストリームは、前記ストリーム識別情報により識別される、請求項１０のコンピュータ読取可能な記憶媒体。
【請求項１５】
前記ビデオストリームをアーカイブする前記手順は、前記コンピュータサーバーに、前記ビデオストリームの各イントラフレーム毎にインデックスを格納する手順を実行させることを含み、前記各イントラフレーム毎の前記インデックスは、前記ストリーム識別情報と、当該イントラフレームが前記ビデオストリーム内に配置されている場所を指示するファイルオフセットと、当該イントラフレームが前記ビデオストリーム内で再生を開始する時間を指示するタイムスタンプとを含む、請求項１４のコンピュータ読取可能な記憶媒体。
【請求項１６】
前記ビデオストリームをアーカイブする前記手順は、前記コンピュータサーバーに、更に、前記ビデオストリームのピクチャーグループの最初のイントラフレーム毎にインデックスを格納する手順を実行させることを含み、該インデックスは、前記ストリーム識別情報と、ファイルオフセットと、タイムスタンプとを含む、請求項１５のコンピュータ読取可能な記憶媒体。
【請求項１７】
前記コンピュータによって実行可能なプログラム命令は、前記コンピュータサーバーに、更に、前記タイミング情報中の前記時間値に最も近い時間を有するインデックスを選択する手順を実行させることを含む、請求項１０のコンピュータ読取可能な記憶媒体。
【請求項１８】
前記リクエストされたビデオストリームを前記クライアント装置へストリーム出力する前記手順は、前記コンピュータサーバーに、選択したインデックスの前記ファイルオフセットと対応するファイルオフセットを持つイントラフレームを読出す手順を実行させることを含む、請求項１０のコンピュータ読取可能な記憶媒体。
【請求項１９】
クライアント装置により受信されるブロードキャストビデオストリームの巻戻しを提供するコンピュータシステムであって、
プロセッサと、
プロセッサで実行可能なプログラム命令を格納するコンピュータ読取可能な記憶媒体と、
を備え、前記プログラム命令によって、前記コンピュータシステムが、
前記ブロードキャストビデオストリームについてのリクエストを前記クライアント装置から受信し、
前記リクエストが前記ブロードキャストビデオストリームを巻き戻すためのリクエストであることを判定し、ここで、前記リクエストが、前記ブロードキャストビデオストリームのストリーム識別情報と、前記ビデオストリームの巻き戻し部分を指示するタイミング情報とを含み、
１以上の基準に基づいて、前記リクエストに応ずるために複数のストリーミングデータセンタの内の１つを選択し、ここで、該１つのストリーミングデータセンタは、該ストリーミングデータセンタのローカルの記憶装置または別のストリーミングデータセンタのいずれかによって前記リクエストに応じ、
前記選択されたストリーミングデータセンタがローカルの記憶装置からの前記ビデオストリームを取り扱うことに応答して、該選択されたストリーミングデータセンタの該ローカルの記憶装置から前記リクエストされたビデオストリームを読み出し、
前記選択されたストリーミングデータセンタが前記ローカルの記憶装置からの前記ビデオストリームを取り扱うことに応答して、前記リクエスト内の前記タイミング情報に対応する前記リクエストされたビデオストリーム内のファイルオフセットを決定し、ここで、前記ファイルオフセットは、前記リクエストされたビデオストリーム内の複数のファイルオフセットを前記リクエストされたビデオストリームのタイミング情報に関連付けるインデックスファイルによって決定され、該インデックスファイルは、前記ローカルの記憶装置内に記憶されており、
前記選択されたストリーミングデータセンタが前記ローカルの記憶装置からの前記ビデオストリームを取り扱うことに応答して、前記決定されたファイルオフセットから開始する前記リクエストされたビデオストリームを、前記クライアント装置へストリーム出力する、
ように構成されてなる、コンピュータシステム。
【請求項２０】
ビデオソースから前記ビデオストリームを受信するよう更に構成されてなる、請求項１９のシステム。
【請求項２１】
前記ビデオソースがライブ入力からのものである、請求項２０のシステム。
【請求項２２】
前記ビデオソースが録画されたビデオストリームからのものである、請求項２０のシステム。
【請求項２３】
ネットワーク記憶装置システム内に前記ビデオストリームをアーカイブするように更に構成され、前記アーカイブされたビデオストリームは前記ストリーム識別情報により識別される、請求項１９のシステム。
【請求項２４】
前記ビデオストリームの各イントラフレーム毎のインデックスを格納するよう更に構成され、前記各イントラフレーム毎の前記インデックスは、前記ストリーム識別情報と、当該イントラフレームが前記ビデオストリーム内に配置された場所を指示するファイルオフセットと、当該イントラフレームが前記ビデオストリーム内で再生を開始する時間を指示するタイムスタンプとを含む、請求項２３のシステム。
【請求項２５】
前記ビデオストリームのピクチャーグループの最初のイントラフレーム毎のインデックスを格納するよう更に構成され、前記インデックスは前記ストリーム識別情報と、ファイルオフセットと、タイムスタンプとを含む、請求項２４のシステム。
【請求項２６】
前記タイミング情報内の前記時間値に最も近いタイムスタンプを有するインデックスを選択するように更に構成されてなる、請求項１９のシステム。
【請求項２７】
イントラフレームのファイルオフセットが前記選択されたインデックスの前記ファイルオフセットに対応するイントラフレームを読出すよう更に構成されてなる、請求項１９のシステム。
【請求項２８】
前記複数のストリーミングデータセンタの内の１ストリーミングデータセンタが有する前記ローカルの記憶装置は、前記ビデオストリームを記憶し、且つ、該記憶したビデオストリームのローカルなインデックス情報と前記複数のストリーミングデータセンタによって共有されるグローバルなインデックス情報のコピーとを記憶する、請求項１の方法。
【請求項２９】
前記選択されたストリーミングデータセンタが前記ローカルの記憶装置内に前記リクエストされたビデオストリームを記憶していないことに応答して、前記コンピュータサーバーによって、 前記選択されたストリーミングデータセンタの前記ローカルの記憶装置内に記憶されたインデックス情報に少なくとも基づいて、前記複数のストリーミングデータセンタの内どのストリーミングデータセンタが前記リクエストされたビデオストリームを持っているかを判定し、 前記判定したストリーミングデータセンタから前記リクエストされたビデオストリームを取得して、該取得したビデオストリームを前記選択されたストリーミングデータセンタの前記ローカルの記憶装置内に記憶し、 前記リクエストされたビデオストリームを前記選択されたストリーミングデータセンタから前記クライアント装置へストリーム出力する、ステップを更に具備する、請求項１の方法。
【請求項３０】
前記選択されたストリーミングデータセンタが前記ローカルの記憶装置内に前記リクエストされたビデオストリームを記憶していないことに応答して、前記コンピュータサーバーに、 前記選択されたストリーミングデータセンタの前記ローカルの記憶装置内に記憶されたインデックス情報に少なくとも基づいて、前記複数のストリーミングデータセンタの内どのストリーミングデータセンタが前記リクエストされたビデオストリームを持っているかを判定し、 前記判定したストリーミングデータセンタから前記リクエストされたビデオストリームを取得して、該取得したビデオストリームを前記選択されたストリーミングデータセンタの前記ローカルの記憶装置内に記憶し、 前記リクエストされたビデオストリームを前記選択されたストリーミングデータセンタから前記クライアント装置へストリーム出力する、手順を更に実行させる、請求項１０のコンピュータ読取可能な記憶媒体。
【請求項３１】
前記選択されたストリーミングデータセンタが前記ローカルの記憶装置内に前記リクエストされたビデオストリームを記憶していないことに応答して、 前記選択されたストリーミングデータセンタの前記ローカルの記憶装置内に記憶されたインデックス情報に少なくとも基づいて、前記複数のストリーミングデータセンタの内どのストリーミングデータセンタが前記リクエストされたビデオストリームを持っているかを判定し、 前記判定したストリーミングデータセンタから前記リクエストされたビデオストリームを取得して、該取得したビデオストリームを前記選択されたストリーミングデータセンタの前記ローカルの記憶装置内に記憶し、 前記リクエストされたビデオストリームを前記選択されたストリーミングデータセンタから前記クライアント装置へストリーム出力する、ように更に構成されてなる、請求項１９のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にインターネット等の遠隔通信ネットワーク上で行うビデオコンテンツのストリーミングに関し、詳細には、ライブビデオストリーム等のシームレスな巻戻しおよび再生のためのサーバー側サポートを提供する方法に関する。
【背景技術】
【０００２】
ビデオストリーミングシステムは、インターネットベースのブロードキャスト型サービスを通じて、ライブビデオストリームを多数のユーザーに配布できる。従来のビデオストリーミングシステムは、クライアントマシン上で実行されるビデオプレーヤをユーザーに提供する。ビデオプレーヤは、クライアントマシンのローカルメモリ内にライブビデオストリームを受け入れ、バッファーメモリに収納する。ライブビデオストリームを巻き戻してから再生するというユーザーリクエストに応じて、ビデオプレーヤは、ローカルメモリからバッファーメモリに収納されたビデオにアクセスする。ビデオストリームを巻き戻すためのこのクライアント側サポートは、ストリーミングサーバーから受信したビデオストリームを格納するために、そして後続のストリーミングデータパケットの受信を続けながら巻戻しのためのタイミング要件を計算するために、高速中央処理ユニット(ＣＰＵ)、十分なメモリ、およびディスクスペース等、大量のクライアント側計算リソースを必要とする。その結果、ユーザーは処理の遅れを被り、性能が低下したストリーミングサービスに悩まされるのが常である。
【０００３】
ライブビデオストリームを巻き戻すための、クライアント側サポートの既存の実装が直面する別の問題は、ビデオストリーミングシステムに拡張性を欠くことである。ライブビデオストリームは、一般に、何千人もの視聴者−潜在的には何百万人もの視聴者−に向けて同時にブロードキャストされる。ビデオストリーミングシステムは多数のサブシステムを備えることが多く、各サブシステムには、ライブビデオ／オーディオ入力を受信する多数の着信ストリーミングサーバー、ライブビデオストリームを処理する多数のストリームハンドラ、およびリクエストされたビデオストリームを視聴者に提供する多数のビデオストリーミングサーバーが含まれる。ユーザー体験の質を低下させずに、これら多数のサブシステムを横断してアーカイブ化し、読出すために、更に効率のよい、ビデオストリームのアーカイブ化／読出しおよびビデオストリーミングシステムのサーバー側での拡張性サポートが求められる。
【発明の概要】
【０００４】
方法、システムおよびコンピュータプログラム製品により、ビデオストリームのシームレスな巻戻しおよび再生のためのサーバー側サポートが提供される。
【０００５】
ビデオストリーミングコンピュータシステムの実施の形態は、複数のストリーミングデータセンターコンピュータシステムを含む。ストリーミングデータセンターコンピュータシステムは、着信ストリーミングサーバーコンピュータシステム、１つ以上のストリームハンドラ、ストリームアーカイビングデータベースシステム、ローカルのインデックスデータベースシステムおよび１つ以上のストリーミングサーバーシステムを備える。ストリーミングデータセンターコンピュータシステムは、各種ビデオ入力から着信ビデオ／オーディオストリームを、ネットワーク接続を経由して収集し、アーカイブ化およびインデックス化するためにストリームハンドラにビデオストリームを配布する。ストリーミングデータセンタは、ユーザーのクライアント装置からもストリーミングリクエストを受信し、リクエストされたサービスをユーザーに提供する。
【０００６】
ストリームアーカイビングデータベースシステムは、ストリーミングデータセンタが提供するビデオストリームインデックス化情報を格納する。一の実施の形態では、ストリーミングデータセンタからのビデオストリーム毎に、ビデオストリームの各ＧＯＰのインデックスを格納するＧＯＰレベルインデックスファイルがある。別の実施の形態では、ビデオストリーム毎に、ビデオストリームの各イントラフレームのインデックスを格納するフレームレベルインデックスファイルがある。
【０００７】
方法の一の実施の形態は、クライアント装置からのストリーミングリクエストを受信するステップと、そのリクエストに応じるストリームハンドラを識別するステップとを含む。ビデオストリームをブロードキャストしながら、巻戻しリクエストに応じる際の方法は、巻戻し時間要件を抽出するステップと、巻戻し時間要件に対応するファイルオフセットを計算するステップと、リクエストされたビデオストリームをストリーム出力するステップとを含む。時間要件は、ビデオブロードキャストの開始時間を基準とする巻戻しリクエストから決定する。その時間に対応するビデオ部分のビデオに入るオフセットは、インデックスにより決定する。そのビデオ部分に対応するデータが読出され、クライアント装置にストリーム出力される。
【０００８】
本明細書に記載する特徴および利点はそれらが全てではなく、更に多くの特徴および利点は、図面、明細書および特許請求の範囲により当業者にとって明らかになるであろう。更に、注意すべきは、明細書に使用する用語は、原則として可読性と説明の容易さを目的に選択し、開示する主題を制限または束縛するために選択したものではない。
【図面の簡単な説明】
【０００９】
【図１】ライブビデオストリームのシームレスな巻戻しおよび再生のためのサーバー側サポートのストリーミングシステムを有する環境を説明するブロック図である。
【００１０】
【図２Ａ】ライブビデオストリームのシームレスな巻戻しおよび再生のためのストリーミングデータセンタを示すブロック図である。
【００１１】
【図２Ｂ】ビデオストリームを申し込むストリーミングリクエストを扱うためのストリーミングデータセンタを示すブロック図である。
【００１２】
【図３】着信ストリーミングサーバーのブロック図である。
【００１３】
【図４】ライブビデオストリームのシームレスな巻戻しおよび再生のためのストリームハンドラのブロック図である。
【００１４】
【図５】ストリーミングデータセンタがビデオストリームを処理するフロー図である。
【００１５】
【図６】ストリーミングデータセンタがストリーミングリクエストに応じるフロー図である。
【００１６】
【図７】強化された拡張性を有する多数のストリーミングデータセンタを横断してビデオストリーミングリクエストに応じるフロー図である。
【発明を実施するための形態】
【００１７】
図面には専ら説明を目的に本発明の様々な実施の形態を示すが、本発明は、図示のこれら実施の形態に制限されるものではない。以下の説明から、当業者には言うまでもなく、本明細書に説明する構造および方法のその他の実施の形態を、本明細書に記載する本発明の原理から逸脱することなく利用できる。
【００１８】
図１は、一の実施の形態による、クライアント（クライアント装置）１１０からのビデオストリーミングリクエストを受信し、リクエストされたストリーミングデータを送信するストリーミングシステム１００を有する環境を説明するブロック図である。システム１００は、データセンタ発送コンピュータシステム１１４（「データセンタ発送部１１４」）と、共有インデックスデータベースコンピュータシステム１１８（「共有インデックスデータベース１１８」）と、１つ以上のストリーミングデータセンターコンピュータシステム２００Ａ〜２００Ｎ（「ストリーミングデータセンタ２００」）とを含む。これらコンピュータシステムはそれぞれ、１つ以上のプロセッサと、大規模な高性能ディスク格納アレイ（例えば１Ｔｂ）と、利用可能なメモリ（例えば１Ｇｂ）とを有する、好ましくはサーバー級コンピュータである１つ以上のコンピュータを備える。クライアント１１０およびストリーミングデータセンタ２００は、インターネット等のコンピュータネットワーク１１２を経由して相互接続されている。データセンタ発送部１１４は、クライアント１１０およびストリーミングデータセンタ２００と通信する。各ストリーミングデータセンタ２００は、共有インデックスデータベース１１８にビデオストリームインデックス化情報を書込み、共有インデックスデータベース１１８からビデオストリームインデックス化情報を取り出し、１つ以上のクライアント１１０へ各ビデオストリームを提供することにより、複数のビデオストリームを処理する。図を簡単かつ明瞭にするために２つのクライアント１１０および４つのストリーミングセンタ２００だけを図１に示すが、実際には、更に多くのクライアント１１０が含まれ、ストリーミングデータセンタ２００を運用できる。
【００１９】
図示の環境は、ストリーミングデータセンタ２００が提供するビデオストリーミングサービスを多数のユーザー／視聴者が申し込んでいる典型的な局面を表す。この局面において、ユーザーは、クライアント１１０を用いて、ビデオストリーミングサービスリクエストを、データセンタ発送部１１４を経由してストリーミングデータセンタ２００に送信し、リクエストされたサービスをストリーミングデータセンタ２００から直接に受信する（すなわち、データセンタ発送部１１４を通さずに）。データセンタ発送部１１４は、各ストリーミングデータセンタの負荷等、いくつかの基準に基づいて、ストリーミングデータセンタ２００の内の１つにストリーミングサービスリクエストを発送する。データセンタ発送部１１４により選択されたストリーミングデータセンタ２００は、クライアントからのストリーミングサービスリクエストを受信し、ネットワーク１１２を経由してクライアント１１０へ、リクエストされたサービスを提供する。
【００２０】
図１に示す個々のエンティティ（実体、装置）に転ずると、ユーザーは各クライアント１１０を使用してビデオストリーミングサービスをリクエストする。例えば、ユーザーは、クライアント１１０を用いて、ブロードキャストされるビデオストリームを申し込んで、ビデオストリームを再生したり、ビデオストリームを一時停止したり、またはビデオがまだブロードキャストされている間に、ビデオストリームを指定の時間ポイントまで巻き戻したりする。クライアント１１０は、パソコン等の任意の種類のコンピュータ装置（例えば、デスクトップ型、ノート型、ラップトップ型）、および、携帯電話、携帯情報端末、ＩＰ可能ビデオプレーヤ等の装置であってよい。クライアント１１０は、典型的には、プロセッサ、ディスプレイ装置（またはディスプレイ装置への出力）、タスク実行の際にユーザーが使用するデータをユーザーが格納するハードディスクドライブまたはフラッシュメモリデバイス等のローカルの記憶装置、およびネットワーク１１２を経由してシステム１００に接続するためのネットワークインターフェースを含む。
【００２１】
クライアント１１０は、ビデオストリームを再生するためのビデオプレーヤ１２０（例えば、Ａｄｏｂｅ  Ｓｙｓｔｅｍ，  Ｉｎｃ．のＦｒａｓｈ（登録商標）プレーヤまたは独自規格のもの）も有する。ビデオプレーヤ１２０は、スタンドアロンアプリケーションであっても、ネットワークブラウザ等の別のアプリケーションへのプラグインであってもよい。クライアント１１０が汎用装置である場合（例えばデスクトップコンピュータや携帯電話）、プレーヤ１２０は、コンピュータが実行するソフトウエアとして実装されるのが普通である。クライアント１１０が専用装置（例えば専用ビデオプレーヤ）である場合、プレーヤ１２０はハードウエアであっても、ハードウエアとソフトウエアとの組合せであってもよい。これらの実装は全て、本発明に関して機能的に均等である。プレーヤ１２０は、ビデオ送り、開始、停止、およびビデオ送りの巻戻しを選択するためのユーザーインターフェース制御（および対応するアプリケーションプログラミングインターフェース）を含む。プレーヤ１２０には、そのユーザーインターフェース内に、ビデオストリーミングの進度、例えば、ビデオストリームの全時間（既知であれば）に対する再生の現在時間、を指示するように構成されるタイムラインスライダ（時間系列スライド器）を含めることができる。タイムラインスライダは、それをユーザーインターフェース内でユーザーが直接に操作することにより、ビデオストリームをどれ位（例えば分単位で）巻き戻して以前のブロードキャスト部分を視聴したいのか、指定できるように更に構成できよう。他の種類のユーザーインターフェース制御装置（例えば、ボタン、キーボード制御装置）を用いて、プレーヤ１２０の再生および巻き戻しの機能を制御できる。
【００２２】
ネットワーク１１２により、クライアント１１０とストリーミングデータセンタ２００との間の通信が可能になる。一の実施の形態では、ネットワーク１１２はインターネットであり、クライアント１１０がストリーミングデータセンタ２００との間で通信できるように、既知の、または継続して開発されている標準化された相互ネットワーク通信技術およびプロトコルを使用している。
【００２３】
説明に過ぎないが、ビデオストリームは、インターネット上のストリーミングメディアコンテンツプロバイダによりブロードキャストされる生中継のスポーツ、音楽、ニュース、およびエンターテイメント等のライブビデオ入力からのビデオストリームである。このビデオストリームは、録画されたライブコンサート等の、録画入力からのビデオストリーム、およびインターネット上のストリーミングメディアコンテンツプロバイダによる再ブロードキャストされるＴＶ番組または映画も含む。各ビデオストリームはストリーム識別情報（Identification: ＩＤ）で識別される。ビデオストリームは多数のイントラフレーム（Intra: Ｉフレーム）および予測フレーム（Predictive: Ｐフレーム）を含み、コーデックに依存して双方向予測フレーム（Bi-directionally predicted: Ｂフレーム）を含んでもよい。ビデオストリームの多数のビデオフレームは、更に、ピクチャーグループ（Group of Pictures: ＧＯＰ）にグループ化することができ、各ＧＯＰは少なくとも１つのイントラフレームを含む。ビデオストリームはそれぞれが複数のオーディオ／ビデオデータパケットを含む１つ以上の関連ファイルとして、ネットワーク記憶装置に格納される。ビデオの入力／ソース（ＴＶ放送局、またはインターネットベースのビデオストリームプロバイダ等）は符号器に接続される。符号器は、受信されたビデオストリームを取得して、２値化し、それを圧縮して、得られたデータを更に処理するためにビデオサーバーに渡す役割を担う。
【００２４】
データセンタ発送部１１４は、クライアント１１０から送信されるユーザーのストリームリクエストが、ドメインネームサーバ（Domain Name Server: ＤＮＳ）の参照を要求する場合に使用されるのが一般的である。例えば、ユーザーからリクエストされたストリームは「http://host.com/stream_id」に置かれる。ユーザーに代わってクライアント１１０はデータ発送部１１４と通信することにより、ストリーム「stream_id」をホストしているホストサーバー「host.com」のインターネットプロトコル（ＩＰ）アドレスを見つけ出す。データセンタ発送部１１４は、各ストリーミングデータセンタの負荷等、いくつかの基準に基づいてストリーミングデータセンタ２００の内の１つへストリーミングサービスリクエストを発送する。各ストリーミングデータセンタの負荷は、１データセンタあたりの帯域幅使用量および各ストリーミングデータセンタに割当てられた帯域幅容量値に基づいて計算できる。データセンタ発送部１１４は、帯域幅使用量が全容量に近いストリーミングデータセンタにストリーミングリクエストを送信するのを避けることで負荷をバランスさせる。当業者であれば他の負荷バランス化メカニズムを容易に利用できよう。
【００２５】
共有インデックスデータベース１１８は、ブロードキャストビデオストリームを巻き戻すためにストリーミングデータセンタ２００が提供するビデオストリームインデックス化情報を格納する。一の実施の形態では、ストリーミングデータセンタ２００からのビデオストリーム毎に、ビデオストリームの各ＧＯＰのインデックスを格納するＧＯＰレベルインデックスファイルがある。具体的には、ＧＯＰレベルインデックスファイルが、各ＧＯＰの第１イントラフレームのインデックスをタプル（stream_ID、file_offset、time_stamp）内に保持する。別の実施の形態では、ビデオストリーム毎に、ビデオストリームの各イントラフレームのインデックスを格納するフレームレベルインデックスファイルがある。このインデックスは、イントラフレーム毎にタプル（stream_ID、file_offset、time_stamp）を格納する。「stream_ID」によりイントラフレームが属するビデオストリームを識別する。「file_offset」は、ビデオストリームファイルのバイトで見たときのイントラフレームが開始される場所を指示する。「file_offset」の値は、アーカイブされたファイルの開始（すなわちバイト０）からカウントした完全な数値である。「time_stamp」は、ビデオストリームのアーカイブされたファイル内でイントラフレームが開始した時間を指示する。「time_stamp」の値は、ビデオストリームの再生開始時間（すなわち０ミリ秒）からカウントした完全な数値である。
【００２６】
一の実施の形態では、インデックス化情報は、グローバルのビデオストリームインデックスファイルとして格納される。グローバルのビデオストリームインデックスファイルは、ストリーミングデータセンタ２００が処理するビデオストリーム毎のインデックスを含む。特定のストリーミングデータセンタ２００からのインデックスは、ストリーミングデータセンタ識別情報により更に識別できる。インデックス情報は、拡張性を有する多数のストリーミングデータセンタ２００間でユーザーのストリーミングリクエストに応じるために、ストリーミングデータセンタ２００により共有される。ストリーミングデータセンタ２００および共有ビデオストリームインデックス化データベース１１８の実施の形態について、図３および図４に関連して更に以下で説明する。
【００２７】
図２Ａは、一の実施の形態による、ビデオストリーミングのシームレスな巻戻しおよび再生のためのサーバー側サポートのストリーミングデータセンタ２００を示すブロック図である。ストリーミングデータセンタ２００は、着信ストリーミングサーバー２１０、１つ以上のストリームハンドラ２２０、ストリームアーカイビングデータベース２３０、図１の共有データベース１１８のローカルコピーであるローカルのインデックスデータベース２４０および１つ以上のストリーミングサーバー２５０を備える。
【００２８】
図２Ａに示すように、着信サーバー２１０は、それに接続される複数のストリームハンドラ２２０を有し、各ストリームハンドラ２２０はストリームハンドラＩＤを有する。着信ビデオストリーム毎に着信サーバー２１０は、ストリームハンドラ２２０の内の１つを選択し、この着信ビデオストリームの全てのデータパケットを、選択したストリームハンドラ２２０に導く。
【００２９】
ストリーミングデータセンタ２００には、クライアントからのストリーミングリクエストを取り扱う複数のストリーミングサーバー２５０も含まれる。ストリーミングサーバー２５０は、２種類のストリーミングリクエスト、すなわち、ブロードキャストビデオストリームを申し込むためのリクエストと、ブロードキャストストリームを巻き戻すためのリクエストとを取り扱う。ブロードキャストビデオストリームを申し込むためのストリーミングリクエスト（申込リクエスト）は、巻戻しのタイミング情報を含まない。ブロードキャストストリームを巻き戻すためのストリーミングリクエスト（巻戻しリクエスト）には、ビデオストリームをブロードキャストしながらビデオストリームを巻き戻すための所望の量／オフセットに関するタイミング情報が含まれる。従って、ストリーミングサーバー２５０は、リクエスト中のタイミング情報の有無により２種類のリクエストを識別する。他の形式のプログラム動作は不要である。
【００３０】
巻戻しリクエストに応じて、ストリーミングサーバー２５０は、ローカルのインデックスデータベース２４０をチェックすることにより、リクエストされたタイミング情報に対応する或るファイルオフセット（ファイル内の位置）を調べ、ストリーミングアーカイブデータベース２３０内に格納されているビデオストリームの当該ファイルオフセットから開始される、リクエストされたビデオストリームのデータパケットを読出す。
【００３１】
例えば、クライアント１１０のプレーヤ１２０は、ブロードキャストされているビデオストリームのタイムラインビュー（時間系列表示）をユーザーに提供する。ユーザーは、タイムラインスライダ内の場所をマウスで選択できる。プレーヤ１２０は、タイムラインスライダ上の選択された場所を、対応するタイミング情報にマッピングする。例えば、ライブブロードキャストビデオの長さが２時間で、開始点と終了点間の丁度中間のタイムラインスライダ上の場所をユーザーが選択したと仮定すると、この場所は１：００にマッピングされる。このタイミング情報は、ビデオストリーミングリクエストに含まれ、処理のためにストリーミングサーバーへ送られる。
【００３２】
例示の巻戻しリクエストは、http://www.hostserver.com/play?id=StreamID&time=timestampのようなＵＲＬ形式であり、ここで、streamIDは、リクエストされたストリームのストリームＩＤであり、timestampは、ビデオストリームの始点を基準とした開始時間の時間値を表す数値である。例えば、ユーザーは、以下のＵＲＬを有するビデオストリームリクエストを発行してもよい：
「http://www.hostserver.com/lplay?id=Stream12&time=600」
これは、ストリームＩＤ番号「Stream12」により識別されるビデオストリームをリクエストし、ビデオストリームを６００秒まで巻き戻す（すなわち、１０分間の終わり）。タイミング情報（例えばタイムスタンプ値）は、ビデオストリームがライブビデオ入力（例えば、ライブのブロードキャスト）由来か、または録画されたビデオソース（例えば、録画されたライブイベントの再ブロードキャスト）由来かどうかに関わらず、ユーザーの巻戻しリクエストを示す。一の実施の形態では、早送りリクエストはサポートされない。
【００３３】
上記のストリーミングリクエストおよび応答を更に説明するための以下の疑似コードは、ストリーミングリクエスト／応答のデータを格納するストリーミングサーバー２５０により使用されるデータ構造例を表す。
【数１】
0005666477.tif 000002
【００３４】
ブロードキャストビデオストリームを申し込むための申込リクエストは、タイミング情報を含んでいない。各ストリーミングサーバー２５０は、複数のストリームハンドラ２２０と直接に通信を行える。クライアントからのストリーミングリクエストはストリームＩＤを含んでいる。ストリームＩＤが与えられると、ストリーミングサーバー２５０は、そのストリームＩＤ用のローカルのインデックスデータベース２４０をチェックすることにより、リクエストされたビデオストリームをどのストリームハンドラ２２０が受け持つかを調べ、識別されたストリームハンドラ２２０に申し込み、ビデオストリームの始点から始まるリクエストされたビデオストリームのデータパケットを要求する。図２Ｂは、上記説明に従って、リクエストされたビデオを直接にストリームハンドラからストリーム出力するためのストリーミングデータセンタを示すブロック図である。
【００３５】
図３に移ると、一の実施の形態では、ストリーミングデータセンタ２００の着信ストリーミングサーバー２１０は、プロトコル解釈モジュール２１２、データ抽出モジュール２１４、および負荷バランサ２１６を備える。着信ストリーミングサーバー２１０は、ビデオストリーム入力３１０からのビデオストリームを受信し、モジュール２１２、２１４および２１６によりビデオストリームを処理し、更にインデックス化し、アーカイビングするために選択されたストリームハンドラ２２０に処理済みのビデオストリームデータ３２０を送信する。着信ストリーミングサーバー２１０は、ストリーミングサーバー、例えば、ＷＯＷＺＡ（登録商標）のＭｅｄｉａ  Ｓｅｒｖｅｒ（メディアサーバー）またはＡｄｏｂｅ（登録商標）のＦｌａｓｈ（登録商標）  Ｍｅｄｉａ  Ｓｅｒｖｅｒ（Ｆｌａｓｈメディアサーバー）でもよい。着信ストリーミングサーバー２１０は、Ｒｅａｌ  Ｔｉｍｅ  Ｓｔｒｅａｍｉｎｇ  Ｐｒｏｔｏｃｏｌ（ＲＴＳＰ）等の標準のビデオストリーミングプロトコル、またはＦｌａｓｈ（登録商標）  Ｐｌａｙｅｒ（Ｆｌａｓｈプレーヤ）とストリーミングサーバーとの間のインターネット上のオーディオ／ビデオデータをストリーミングするためのＡｄｏｂｅ  Ｓｙｓｔｅｍｓ（登録商標）が開発したＲｅａｌ  Ｔｉｍｅ  Ｍｅｓｓａｇｉｎｇ  Ｐｒｏｔｏｃｏｌ（ＲＴＭＰ）等の独自規格プロトコルを用いてビデオストリームを受け入れることができる。
【００３６】
プロトコル解釈モジュール２１２は、ビデオストリーム内で使用されているストリーミングプロトコルを識別することにより、ビデオストリーム入力３１０から受け取ったビデオストリームを処理する。例えば、着信ストリーミングサーバー２１０は、ＲＴＭＰプロトコルを用いるビデオストリームを受け入れ、フラッシュプレーヤがＲＴＭＰプロトコルでビデオストリームを再生することを許容するストリーミングサーバーである。プロトコル解釈モジュール２１２は、受信したビデオストリーム内のＲＴＭＰストリーミングプロトコルを識別し、ビデオストリーム情報の一部としてのプロトコル情報を１つ以上のストリームハンドラ２２０へ送る。
【００３７】
データ抽出モジュール２１４は、受信したビデオストリームからオーディオ／ビデオデータを抽出し、抽出したオーディオ／ビデオデータをオーディオ／ビデオデータパケットに変形し、抽出したオーディオ／ビデオデータパケットを１つ以上の複数のストリームハンドラ２２０へ送る。一の実施の形態では、オーディオ／ビデオパケットは標準のネットワークデータパケットであって、ユーザーデータグラムプロトコル（ＵＤＰ）を用いてストリームハンドラ２２０に送信される。他の実施の形態において、受信したビデオストリームを他のインターネットプロトコルを用いるネットワークパケットに抽出してもよい。
【００３８】
負荷バランサ２１６は、着信ビデオストリームに対して、どのストリームハンドラ２２０がアーカイブ化およびインデックス化のためにビデオストリームを受信するかを、負荷バランスアルゴリズムを用いて決定する。一の実施の形態では、負荷バランサ２１６は、各ストリームハンドラ２２０のトラフィック負荷に基づいて、複数のストリームハンドラ２２０の中から１つのストリームハンドラ２２０を着信ビデオストリーム用に選択する。負荷バランサ２１６は、トラフィック負荷が最も少ないストリームハンドラ２２０を選択して受信されたビデオストリームを処理してもよい。他の実施の形態では、負荷バランサが、ストリームを区別する番号、プロセッサの利用、またはパケットハンドリングレートの尺度等、他の決定因子を含めることができるようにして、受信ビデオストリームを処理するためのストリームハンドラ２２０を選択してもよい。
【００３９】
ストリームハンドラ２２０は、処理を続けるために、着信ストリーミングサーバー２１０から送られたビデオストリームの複数のオーディオ／ビデオデータパケットを受信する。図４は、図２Ａに示すストリームハンドラ２２０のブロック図である。ストリームハンドラ２２０は、ストリームアーカイビングモジュール２２２およびリクエスト処理モジュール２２４を含む。ストリームアーカイビングモジュール２２２は、共有インデックスデータベース１１８にストリームインデックス化情報４２０を書き込み、ストリームアーカイビングデータベース２３０に、受信したオーディオ／ビデオデータパケットをアーカイブ／格納する。巻戻しリクエストに対しては、リクエスト処理モジュール２２４が、巻戻しリクエスト内のタイミング情報に基づいて、ローカルのインデックスデータベース２４０からファイルオフセット情報を読出し、ストリーミングサーバー２５０にファイルオフセット情報を送出する。ビデオストリームに申し込むためのストリームリクエストに対しては、処理モジュール２２４は、着信ストリーミングサーバー２１０から受信したリクエストビデオストリームのデータパケットを、ストリーミングサーバー２５０へ直接に送出する。
【００４０】
ストリームアーカイビングモジュール２２２は、ビデオストリームおよび／またはビデオストリーム情報（例えば、ビデオストリーミングプロトコル）の複数のオーディオ／ビデオデータパケットを受信し、ストリームアーカイビングデータベース２３０にデータパケットを格納する。一の実施の形態では、１つのビデオストリーム全体を１つのアーカイブファイルとして、ストリームアーカイビングデータベース２３０に格納する。アーカイブされたビデオストリームは、ストリームＩＤを介してストリームアーカイビングデータベース２３０から読出すことができる。所与のビデオストリームに属する全てのデータパケットは、アーカイブおよび読出しのための同一ストリームＩＤを共有する。
【００４１】
ストリームアーカイビングモジュール２２２は、共有インデックスデータベース１１８にアーカイブされたファイルのインデックス化情報を書き込む。アーカイブされたビデオストリームをインデックス化するのは、一の実施の形態では、アーカイビングモジュール２２２が、ビデオストリームの各イントラフレームのインデックスをインデックスファイルに格納する。インデックスは、イントラフレーム毎にタプル（stream_ID、file_offset、time_stamp）を格納する。例えば、１２３バイト目に位置し、21,000ミリ秒で再生を開始するイントラフレームでは、インデックスはインデックスファイル内の（stream12, 123, 21000）となる。同様に、３４５バイト目に位置し、24,000 ミリ秒で再生を開始する同じビデオストリームの別のイントラフレームでは、そのインデックスは（stream12, 345, 24000）となる。ビデオストリーム全体のインデックスファイルは、インデックスリストであり、各インデックスはビデオストリームのイントラフレームに対応する。インデックスは、ビデオストリームのイントラフレームの処理順に従って順番が付けられる。
【００４２】
別の実施の形態では、高速化のために、インデックス化情報は、共有インデックスデータベース１１８に書き込まれ、ストリームアーカイビングモジュール２２２が、ビデオストリームの各ＧＯＰのインデックスをインデックスファイルに保持する。詳細には、ストリームアーカイビングモジュール２２２は、（stream_ID、file_offset、time_stamp）のフォーマットで各ＧＯＰの最初のイントラフレームのインデックスを保持している。例えば、各ＧＯＰが最初のイントラフレームにより表される、５ＧＯＰを有するビデオストリームでは、ビデオストリームのインデックスファイルは下表のようになる。
【００４３】
【表１】
0005666477.tif 000003
【００４４】
１つのビデオストリームがアーカイビングデータベースに格納する多数の関連ファイルを生成して、各関連ファイルをビデオストリームの一部に対応させることが可能であり、その場合、多数の関連ファイルは同一ストリームＩＤを共有する。１つのビデオストリームに対して生成された多数のファイルを関連付けるために、各ファイルに、ビデオストリームのこの部分のタイムオフセットを指示するタイムスタンプによるタグを更に付けてもよく、このタイムスタンプは、ビデオストリームの最初のデータパケットの始点から連続的にカウントされる（例えば、ビデオストリーム内の１０分）。
【００４５】
ビデオストリームをブロードキャストしたまま、ユーザーが指定したタイムポイントまでビデオストリームを巻き戻すのを支援するために、ビデオストリームのインデックス化は、アーカイビングおよび読出しの効率を高める必要がある。ストリームアーカイビングモジュール２２２は、ビデオストリーム毎にデータ読出用のインデックス化情報を保持する。一の実施の形態では、ストリームアーカイビングモジュール２２２は、格納されたビデオファイルのヘッダ内に、ビデオストリームのインデックス化情報を含んでいる。これにより、ストリームアーカイビングモジュール２２２は、ストリームＩＤに基づいて、格納されたファイルに先ずアクセスした後、このヘッダを読出すことにより、ユーザーが要求するタイムポイントのファイルに入って、対応する所望のオフセットにアクセスできる。
【００４６】
別の実施の形態では、アーカイビングモジュール２２２は、アーカイビングデータベース２３０に格納されている各ビデオストリームのインデックス化情報を、多数のストリーミングデータセンタ２００が共有するグローバル記憶装置（例えば、図１の共有インデックスデータベース１１８）に書き込む。共有インデックスデータベース１１８は、ストリーミングセンタ識別情報により特定のストリーミングデータセンタからの各インデックス化情報を識別する。ストリーミングセンタが処理するビデオストリームのフレームレベルインデックス化情報は、ビデオストリームのイントラフレーム毎のインデックスのリストである。インデックスは、タプル（DC_ID、stream_ID、file_offset、time_stamp）を持つことができ、ここで、「DC_ID」はストリーミングデータセンタを識別する。共有インデックスデータベース１１８内のインデックス化情報は、ストリーミングデータセンタ２００が受信した新しいインデックス化情報に応じて、定期的に、または要求に応じて更新される。各ストリーミングデータセンタ２００は、共有インデックスデータベース１１８に格納されたインデックス化情報の複製を格納するので、各ストリーミングデータセンタは、他のストリーミングデータセンタに何のビデオストリームがアーカイブされているかを知ることができる。
【００４７】
インデックス化情報の共有は、多数のストリーミングデータセンタ２００を横断する拡張可能なビデオストリーミングのために多様な利点をもたらす。インデックス化情報の共有により、多数の因子に基づいて効率的にビデオストリームを配布できるようになる。例えば、ストリーミングシステムは、特定のストリーミングデータセンタ２００を指定して人気のない（すなわち、クライアントのリクエストが少ない）ビデオストリームを取り扱い、指定されたストリーミングセンタ２００だけに人気のないビデオストリームをアーカイブすることができる。そうすることにより、他のストリーミングデータセンタは、ユーザーリクエストに応えて人気のないビデオストリームを取りに行く場所の必要情報を持ちながら、リクエストが多いビデオストリームを処理するためだけに計算リソースを提供できる。ビデオストリームの人気度判定は設計パラメータである。例えば、ビデオストリームの人気度は、ユーザーの申込数に基づくものであってもよい。
【００４８】
多数のストリーミングデータセンタ２００によるインデックス化情報の共有により、ストリーミングデータセンタ２００の性能も向上する。ストリーミングデータセンタ２００は、どのビデオストリームをアーカイブすべきか、どのビデオストリームが他のストリーミングデータセンタで利用できるかというフレキシビリティを備えるのである。ストリーミングデータセンタ２００（サービスするストリーミングデータセンタ）がローカルにアーカイブされていないビデオストリームに対するクライアントからの巻き戻しリクエストを受信した場合、サービスするストリーミングデータセンタは、共有インデックス化情報のローカルの複製から、他のどのストリーミングデータセンタ（ソースのストリーミングデータセンタ）が、そのリクエストされたビデオストリームを扱っているかを判定する。リクエストされたストリームを、ソースのストリーミングデータセンタからサービスするストリーミングデータセンタに、次いでクライアントにストリーム出力する代わりに、サービスするストリーミングデータセンタは、ビデオストリームをローカルにキャッシュして、ローカルキャッシュからビデオストリームをクライアントに送る。このように、データセンタ間の多数のクロスストリーミングが減少し、結果として、全体の性能が向上する。
【００４９】
図４を参照すると、リクエスト処理モジュール２２４は、ビデオストリーミングサーバー２５０からストリーミングリクエストを受信し、ストリーミングリクエストを処理し、リクエストされたビデオストリームを読出し、リクエストされたビデオストリームをビデオストリーミングサーバーへ送出する。
【００５０】
図２Ｂのストリーミングサーバー２５０に関して既に説明したように、申込リクエストはタイミング情報をもっていないので、クライアントがビデオストリームの初期申込みをリクエストしていることがストリーミングサーバー２５０に指示される。ストリーミングサーバー２５０は、ローカルのインデックスデータベース２４０をチェックして、どのストリームハンドラ２２０がそのリクエストを処理すべきかを識別し、識別されたストリームハンドラ２２０にそのリクエストを渡す。識別されたストリームハンドラのリクエスト処理モジュール２２４は、着信ストリーミングサーバー２１０から受信したリクエストストリームのデータパケットを、連続的にストリーミングサーバー２５０へ送出し始める。
【００５１】
巻き戻しリクエストに応えて、ストリーミングサーバー２５０は、巻き戻しが必要とされているかどうかを判定する。一の実施の形態では、ストリーミングサーバー２５０は、リクエストからタイミング情報を抽出し、リクエスト内の要求された開始時間の値をチェックする。ストリーミングサーバー２５０は、処理を続けるために、要求された開始時間およびストリームＩＤを処理モジュール２２４に送る。それに応じて、処理モジュール２２４は、抽出されたタイミング情報に基づいてファイルオフセットを計算する。一の実施の形態では、処理モジュール２２４は、ローカルのインデックスファイルをチェックすることにより、相対的な開始時間を、対応するファイルオフセットにマッピングして、相対的な開始時間に最も近いtime_stamp値を調べる。代替として、ストリーミングサーバー２５０は、リクエストからの相対的な開始時間値を、現在時刻を基準とする絶対開始時間値に変換してもよく、その場合、処理モジュール２２４は、絶対開始時間値を、対応するファイルオフセットにマッピングする。ここで、ストリーミングサーバー２５０は、ストリーミングサーバー２５０が使用する現在時刻から相対的な開始時間を減算することにより、絶対時間値を計算する。処理モジュール２２４は、ローカルのインデックスファイルをチェックして、計算した絶対時間値に基づいてtime_stamp値を見つける。ストリーミングサーバー２５０は、time_stampに最も近いファイルオフセットのイントラフレームを読出し、クライアント１２０にそのイントラフレームのデータパケットを送る。
【００５２】
例えば、ストリームハンドラ２２０のリクエスト処理モジュール２２４は、次のようなＵＲＬでストリーミングリクエストをビデオストリーミングサーバー２５０から受信する：「http://www.hostserver.com/play?id=Stream12&time=600000」このリクエストには、相対的な開始時間情報、すなわち「時間＝600000」が含まれている。要求された開始時間は、６００，０００ミリ秒の相対的な開始タイミング値である（すなわち、そのビデオストリームの始点から１０分）。処理モジュール２２４は、ローカルのインデックスデータベース２４０をチェックし、最も近い一致時間値、例えば、（Stream12,900,600000）を持つインデックスレコードを見つける。値「９００」は、ここでは、ビデオストリームの開始時間に対する６００，０００ミリ秒の時間値に対応するイントラフレームのバイトオフセットを示す。代替として、ストリーミングサーバー２５０は、相対的な開始時間値６００，０００を現在時刻に対する絶対時間値に変換する。ビデオストリームが１，８００，０００ミリ秒前（すなわち、３０分前）にブロードキャストされたと仮定すると、ストリーミングサーバー２５０は、現在時刻から巻き戻す絶対時間は１，２００，０００ミリ秒（２０分）であると決定する。処理モジュール２２４は、ローカルのインデックスデータベース２４０をチェックし、最も近い一致時間値、例えば、（Stream12,900,600000）を持つインデックスレコードを見つける。ストリーミングサーバー２５０は、アーカイブされたストリームのファイルオフセット９００で開始するイントラフレームのデータパケットを読出し、そのファイルオフセットからのデータパケットのクライアント１２０への送出を開始する。
【００５３】
別の実施の形態では、クライアント１１０は、ユーザーリクエスト内のタイミング情報を絶対時間のtime_stampに変換し、ストリーム識別情報と併せて、ストリーミングサーバー２５０にそのtime_stampを送る。処理モジュール２２４は、ローカルのインデックスファイルをチェックして、受信した絶対時間のtime_stamp値に最も近いtime_stamp値を見つけ出す。処理モジュール２２４は、time_stampに最も近いファイルオフセットのイントラフレームを読出し、イントラフレームのデータパケットを送出する。
【００５４】
図５は、ライブストリームを処理するためのストリーミングデータセンタ２００の動作フロー図である。最初に、ストリーミングデータセンタ２００の着信ストリーミングサーバー２１０は、ライブ入力からビデオストリームを受信する（５１０）。着信ストリーミングサーバー２１０は、プロトコル解釈モジュール２１２によりビデオストリーム内のストリーミングプロトコルを解釈し（５１２）、データ抽出モジュール２１４によりビデオストリームからオーディオ／ビデオデータを抽出する（５１４）。着信ストリーミングサーバー２１０は、ビデオストリームの処理を続けるためにストリームハンドラ２２０を更に識別し（５１６）、アーカイビングおよびインデックス化のために、抽出したストリームデータをストリームハンドラ２２０に配布する（５１８）。
【００５５】
図６は、クライアント装置からのストリーミングリクエストに応えるストリーミングデータセンタの動作フロー図である。最初に、ストリーミングデータセンタ２００のストリーミングサーバー２５０の内の１つが、ユーザーのクライアント装置からストリーミングリクエストを受信する（６１０）。ストリーミングリクエストには、ユーザーがリクエストするビデオストリームを識別するストリームＩＤが少なくとも含まれる。タイミング情報を含まないリクエストへの応答に対しては、ストリーミングサーバー２５０は、どのストリームハンドラ２２０が、リクエストされたビデオストリームを有するかを、ローカルのインデックスデータベース２４０に対してストリームＩＤをチェックすることにより識別し（６１２）、現在時刻から開始されるリクエストされたストリームのデータパケットを読出す。タイミング情報を含むリクエストへの応答に対しては、ストリームハンドラ２２０は、リクエスト内容がビデオストリームを巻き戻すためのものかどうかを判定する。リクエストが巻き戻し要求である場合、ストリーミングサーバー２５０は、リクエストからタイミング情報を抽出し（６１４）、処理モジュール２２４が、タイミング情報に対応するファイルオフセットを計算する（６１６）。ストリーミングサーバー２５０は、リクエストされたストリームを読出し（６１８）、得られたファイルオフセットから開始されるビデオストリームをクライアント１２０へ送出する（６２０）。
【００５６】  分散したビデオストリーミングシステムの典型的な実装は、図１で説明したように、多数のストリーミングデータセンタを含んでいる。図７に、ストリームをブロードキャストしながらのシームレスなビデオストリームの巻戻しのためのサーバー側サポート、および多数のストリーミングデータセンタ２００を横断する拡張可能なシステム性能を更に示す。図７は、多数のストリーミングデータセンタ２００を横断するビデオストリーミングリクエストに応じるための、つまり強化された拡張性を提供するための動作のフロー図である。先ず、データセンタ発送部１１４がクライアントからストリーミングリクエストを受信する（７１０）。発送部１１４は、利用可能なストリーミングデータセンタ２００のトラフィック負荷等、１つ以上の決定因子に基づいてストリーミングデータセンタ２００の内の１つにリクエストを発送する（７１２）。選択されたストリーミングデータセンタ２００は、リクエストのストリームＩＤに基づいてローカルのインデックスデータベースをチェックする。選択されたデータセンタ２００のローカルのアーカイブデータベース２３０内で利用可能なリクエストデータに応答して、ストリーミングデータセンタ２００は、図２〜図４に関係して説明したように、ストリーミングリクエストを処理する（７２０）。ローカルに利用できないリクエストデータに応答して、ストリーミングデータセンタ２００は、全てのストリーミングデータセンタが共有するグローバルなインデックスファイルの複製を含むローカルのインデックスデータベース２４０をチェックする。グローバルのインデックス化ファイルに基づいて、ストリーミングデータセンタ２００は、他のどのストリーミングデータセンタ２００がリクエストストリームをもっているかを識別する（７１６）。ストリーミングリクエストが巻戻しリクエストの場合、ストリーミングデータセンタ２００は、リクエストストリームの複製を得て、ローカルのキャッシュに格納する（７１８）。ストリーミングデータセンタ２００はストリーミングリクエストの処理を継続する（７２０）。ストリーミングリクエストの処理は、ストリームハンドラを識別する（６１２）、巻戻し時間要件を抽出する（６１４）、アーカイブファイルオフセットを計算する（６１６）、およびリクエストビデオストリームをストリーム出力する（６１８）等の、図６に記載する処理ステップを含む。ストリーミングリクエストが申込みである場合、ストリーミングデータセンタ２００は、そのリクエストを、識別されたストリーミングデータセンタへリダイレクトする。識別されたストリーミングデータセンタは、そのローカルインデックスデータベース２０４をチェックして、どのストリームハンドラ２２０がリクエストされたストリームのデータパケットを扱うかを探し、識別されたそのストリームハンドラ２２０から、リクエストされたストリームのデータパケットを送出する。
【００５７】
上記説明には好ましい実施の形態の動作の説明が含まれるが、本発明の範囲の限定を意味するものではない。本発明の範囲は、以下の特許請求の範囲によってのみ制限される。上記説明から、本発明の精神および範囲に包含される多くの変形は、当業者には明らかとなろう。
【００５８】
可能性のある一の実施の形態に関係して特に詳細に本発明を説明してきた。当業者には言うまでもなく、本発明を他の実施の形態で実施することもできる。第一に、構成要素に特有なネーミング、用語の大文字使用、属性、データ構造、または何らかの他のプログラミングもしくは構造的な側面は、必須でも重要でもなく、本発明またはその特徴を実施するメカニズムは、異なる名称、フォーマット、またはプロトコルをもっていてもよい。更にシステムは上記のように、ハードウエアとソフトウエアとの組合せを介して実装してもよく、あるいは全体をハードウエア要素で実装してもよい。また、本明細書に記載する各種のシステム構成要素間における機能性の特定な分割は単なる例示であって、必須ではなく、単一のシステム構成要素が実行する機能を、それに代わる多数の構成要素で実行してもよく、多数の構成要素が実行する機能を、それに代わる単一の構成要素で実行してもよい。
【００５９】
上記説明の何ヶ所かは、アルゴリズムの観点から見た本発明の特徴および情報に対する操作を象徴的に表現している。これらのアルゴリズム的な記述および表現は、データ処理分野に精通する者が使用して最も効率的に自らの業務を他に伝えるために使用される手段である。これらの動作は、機能的または論理的に記述されるが、コンピュータプログラムにより実装されることは言うまでもない。更に、モジュールとして、または関数名により、これらの動作の編成を参照することも、一般性を欠くことなく、時々に便利であることが明らかになっている。
【００６０】
上記検討から明らかなように、特に指定の無い限り、ここでの説明を通じて、「処理」、「演算」、「計算」、「判定」または「表示」等の用語を使った検討は、コンピュータシステムメモリまたはレジスタまたは他のそのような情報記憶装置、通信装置またはディスプレイ装置内の物理量（電子量）として表されるデータを操作し、これを変換するコンピュータシステムまたは類似の電子演算装置の動作およびプロセスを指す。
【００６１】
本発明の特定の態様には、本明細書でアルゴリズム形式にて説明される処理ステップおよび命令が含まれる。注意すべきは、本発明の処理ステップおよび命令は、ソフトウエア、ファームウエアまたはハードウエアで実装でき、ソフトウエアで実装する場合はダウンロードして常駐させ、リアルタイム・ネットワークオペレーティングシステムにより使用される各種のプラットフォームから操作できるという点である。
【００６２】
本発明は、また、ここに記載の操作を実行するための装置にも関する。この装置は、必要な目的のために専ら構築されてもよく、さもなければコンピュータがアクセス可能なコンピュータ読取可能媒体に格納されたコンピュータプログラムにより選択的に起動されるか、または再構成される汎用コンピュータを備えてもよい。このようなコンピュータプログラムは、限定はしないが、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気または光カード、特定用途向け集積回路（ＡＳＩＣ）、または、電子命令の格納に適する任意の形式の媒体およびコンピュータシステムバスに接続されるそれぞれの媒体を含む任意の形式のディスク等の、コンピュータ読取可能格納媒体内に格納してもよい。更に、本明細書内で参照するコンピュータは単一プロセッサを含んでもよく、あるいは計算能力を増強するためにマルチプロセッサ設計を利用したアーキテクチャであってもよい。
【００６３】
本明細書で提示するアルゴリズムおよび操作は、いずれの特定のコンピュータにも、その他の装置とも本質的に無関係である。本明細書の教示によるプログラムをもつ各種汎用システムを使用してもよい。あるいは、もっと専用化した装置を構築して、必要な方法ステップを実行するのが便利かもしれない。多様性に富むこれらのシステムに要求される構造は、均等な変更とともに、当業者には明らかであろう。更に、本発明の記述は、何らかの特定のプログラミング言語に準拠しない。各種のプログラミング言語を用いて本明細書で説明したように本発明の教示を実装することができ、特定の言語への何らかの参照は、本発明の可能性および最良の態様を開示するためである。
【００６４】
本発明は、多数のトポロジ上で成り立つコンピュータネットワークシステムに良好に適合する。この分野では、大規模なネットワークの構成および管理に、インターネット等のネットワーク上の異種のコンピュータおよび記憶装置に通信で結合される記憶装置およびコンピュータが含まれる。
【００６５】
最後に、本明細書で使用する言語は、原則として可読性および説明の容易さを目的に選定され、本発明の主題を限定したり、束縛したりするために選定されたものではないことに留意されたい。従って、本発明の開示は本発明の範囲を説明するためのものであり、それを制限するのではなく、その範囲は以下の特許請求の範囲で記述される。
【図１】
0005666477.tif 000004
【図２Ａ】
0005666477.tif 000005
【図２Ｂ】
0005666477.tif 000006
【図３】
0005666477.tif 000007
【図４】
0005666477.tif 000008
【図５】
0005666477.tif 000009
【図６】
0005666477.tif 000010
【図７】
0005666477.tif 000011