(57)【要約】【課題】ストリーミングメディアコンテンツのクライアント側でのキャッシングの技術を提供する。【解決手段】ストリーミングメディアコンテンツに関する各種の機能をユーザが利用できるようにする。そのような機能には、メディアコンテンツをそのコンテンツの符号化ビットレートに依存しないレートでストリーミングすることにより、ユーザが各種のシャトルコントロールオプション（例えば一時停止、停止、早送り、シーク、巻き戻しなど）を選択した際でも、コンテンツのストリーミングを継続することを可能にする、また後の時間に再生するためにストリーミングコンテンツを記録することを可能にする、また時間をずらしてストリーミングコンテンツを再生することを可能にする、のいずれか１つまたは複数が含まれる。【選択図】　　　　図２
2004054930.tif 000002
【特許請求の範囲】
【請求項１】
クライアントデバイスの１つまたは複数のプロセッサによって実行されるときに、前記１つまたは複数のプロセッサにより、
サーバデバイスから、ストリーミングメディアコンテンツを該ストリーミングメディアコンテンツの符号化ビットレートに依存しないレートで受信させる
複数の命令が格納されていることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項２】
前記複数の命令は、さらに前記１つまたは複数のプロセッサに、
前記受信したストリーミングメディアコンテンツを不揮発性の記憶装置に保存させる
ことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３】
前記サーバデバイスはプロキシサーバを含むことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４】
前記複数の命令はさらに前記１つまたは複数のプロセッサに、
前記ストリーミングメディアコンテンツについて要求されたレートを指示する速度要求を前記サーバデバイスに送信させ、
前記ストリーミングメディアコンテンツの前記レートの指示を前記サーバデバイスから受信させる
ことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項５】
前記要求されたレートは値ｘで表され、前記速度要求は、
プラグマ：速度＝ｘ
を含むストリーミング速度メッセージヘッダであることを特徴とする請求項４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項６】
前記要求されたレートは値ｘで表され、前記速度要求は、
速度＝ｘ
を含むストリーミング速度メッセージヘッダであることを特徴とする請求項４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項７】
サーバデバイスで実施される方法であって、
ストリーミングメディアコンテンツに対する要求をクライアントデバイスから受信することと、
前記メディアコンテンツを前記コンテンツの符号化ビットレートに依存しないレートで前記クライアントデバイスにストリーミングすることと
を含むことを特徴とする方法。
【請求項８】
前記ストリーミングメディアコンテンツに対する要求をユーザから受信することと、
前記ユーザの要求に応答して、前記サーバデバイスに前記ストリーミングメディアコンテンツを要求することと
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記受信したストリーミングメディアコンテンツをキャッシュすること
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１０】
前記サーバデバイスは、プロキシサーバを含むことを特徴とする請求項７に記載の方法。
【請求項１１】
前記ストリーミングメディアコンテンツに要求されたレートを指示する速度要求を前記サーバデバイスに送信することと、
前記ストリーミングメディアコンテンツの前記レートの指示を前記サーバデバイスから受信することと
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１２】
前記要求されたレートは値ｘで表され、前記速度要求は、
プラグマ：速度＝ｘ
を含むストリーミング速度メッセージヘッダであることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記要求されたレートは値ｘで表され、前記速度要求は、速度＝ｘ
を含むストリーミング速度メッセージヘッダであることを特徴とする請求項１１に記載の方法。
【請求項１４】
クライアントデバイスの１つまたは複数のプロセッサによって実行されると、前記１つまたは複数のプロセッサに、
ストリーミングメディアコンテンツの再生を少なくとも一時的に停止する要求を受信させ、
前記クライアントデバイスにおける前記ストリーミングメディアコンテンツの再生を停止させ、
前記ストリーミングメディアコンテンツの再生を停止させる要求に関わらず、前記ストリーミングメディアコンテンツの受信を継続させる
複数の命令が格納されていることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１５】
前記要求は停止コマンドを含むことを特徴とする請求項１４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１６】
前記要求は一時停止コマンドを含むことを特徴とする請求項１４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１７】
前記複数の命令はさらに、前記１つまたは複数のプロセッサに前記受信したストリーミングメディアコンテンツをキャッシュさせることを特徴とする請求項１４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１８】
サーバからストリーミングメディアコンテンツを受信することと、
ユーザからシャトルコントロールオプションを受信することと、
前記サーバに前記シャトルコントロールオプションを指示せずに、前記シャトルコントロールオプションに従って前記ストリーミングメディアコンテンツの再生を変更することと
を含むことを特徴とする方法。
【請求項１９】
前記シャトルコントロールオプションは停止コマンドを含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記シャトルコントロールオプションは一時停止コマンドを含むことを特徴とする請求項１８に記載の方法。
【請求項２１】
前記シャトルコントロールオプションは巻き戻しコマンドを含むことを特徴とする請求項１８に記載の方法。
【請求項２２】
前記シャトルコントロールオプションは早送りコマンドを含むことを特徴とする請求項１８に記載の方法。
【請求項２３】
前記サーバから受信すると前記ストリーミングメディアコンテンツをキャッシュすること
をさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２４】
クライアントデバイスの１つまたは複数のプロセッサによって実行されると、前記１つまたは複数のプロセッサに、
サーバデバイスからストリーミングメディアコンテンツを受信させ、
前記受信したストリーミングメディアコンテンツを前記クライアントデバイスの不揮発性記憶装置に保存させる
複数の命令が格納されていることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項２５】
前記サーバデバイスはプロキシサーバを含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２６】
前記不揮発性記憶装置はハードディスクドライブを含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２７】
前記不揮発性記憶装置は、光ディスクおよび光ディスクドライブを含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２８】
前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる前記命令は、コンテンツをキャッシュすることが許される旨の指示を前記サーバデバイスから受信した場合にのみ、前記１つまたは複数のプロセッサに、その受信したストリーミングメディアコンテンツを保存させる命令を含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２９】
前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる前記命令は、ストリーミングメディアコンテンツのキャッシングが前記サーバデバイスによってサポートされることを示すサポートヘッダを含むメッセージを前記サーバデバイスから受信した場合にのみ、前記１つまたは複数のプロセッサに、その受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる命令を含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３０】
前記サポートヘッダは、ストリーミングメディアコンテンツのクライアントでのキャッシングが前記サーバデバイスによってサポートされることを示す機能名を含み、前記機能名は、
ｃｏｍ．ｍｉｃｒｏｓｏｆｔ．ｗｍ．ｆａｓｔｃａｃｈｅ
を含むことを特徴とする請求項２９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３１】
前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる前記命令は、キャッシュ制御指示に関連のストリーミングメディアコンテンツをキャッシュすることが前記クライアントデバイスに許されることを示すキャッシュ制御指示を含むメッセージを前記サーバデバイスから受信した場合にのみ、前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる命令を含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３２】
前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる前記命令は、前記ストリーミングメディアコンテンツのキャッシュが許されることが、前記ストリーミングメディアコンテンツの識別子によって示されている場合にのみ、前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる命令を含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３３】
前記識別子はＵＲＬ（Ｕｎｉｆｏｒｍ　ＲｅｓｏｕｒｃｅＬｏｃａｔｏｒ）を含むことを特徴とする請求項３２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３４】
前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる前記命令は、ユーザがストリーミングメディアコンテンツのクライアントでのキャッシングを使用禁止にしていない場合にのみ、前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる命令を含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３５】
前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる前記命令は、前記クライアントデバイスのメディアプレーヤがストリーミングメディアコンテンツのクライアントでのキャッシングを使用禁止にしていない場合にのみ、前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる命令を含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３６】
前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる前記命令は、前記ストリーミングメディアコンテンツのタイプがキャッシュ可能タイプである場合にのみ、前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存させる命令を含むことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３７】
前記複数の命令はさらに前記１つまたは複数のプロセッサに、
前記ストリーミングメディアコンテンツに対する事後の要求を受信させ、
前記事後の要求に応答して、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置から取得させる
ことを特徴とする請求項２４に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３８】
前記複数の命令はさらに前記１つまたは複数のプロセッサに、
前記ストリーミングメディアコンテンツの有効期限が切れているかどうかを調べさせ、
前記ストリーミングメディアコンテンツの有効期限が切れていない場合にのみ、前記事後の要求に応答して、前記不揮発性記憶装置から前記ストリーミングメディアコンテンツを取得させる
ことを特徴とする請求項３７に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３９】
前記複数の命令はさらに前記１つまたは複数のプロセッサに、
前記ストリーミングメディアコンテンツの有効期限が切れているかどうかを調べさせ、
前記ストリーミングメディアコンテンツの有効期限が切れている場合は、前記ストリーミングメディアコンテンツを再確認させる
ことを特徴とする請求項３７に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４０】
前記複数の命令はさらに前記１つまたは複数のプロセッサに、
前記不揮発性記憶装置からの前記ストリーミングメディアコンテンツの再生に係わるロギング情報を含むメッセージを生成させ、前記メッセージは、データ構造のメッセージ本体部分に前記ロギングが含まれることを示すロギング情報ヘッダを含む
ことを特徴とする請求項３７に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４１】
前記ロギング情報ヘッダは、
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：ａｐｐｌｉｃａｔｉｏｎ／ｘ−ｗｍｓ−ｓｅｎｄｅｖｅｎｔ
を含むことを特徴とする請求項４０に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４２】
不揮発性記憶装置と、
システム上で再生するためにストリーミングメディアコンテンツをサーバデバイスから受信するように構成され、さらに、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置に記憶するように構成されたストリーミングメディアプレーヤコンポーネントと
を備えることを特徴とするシステム。
【請求項４３】
前記ストリーミングメディアプレーヤコンポーネントはさらに、ストリーミングメディアコンテンツのキャッシングが前記サーバデバイスによってサポートされることを示すサポートヘッダを含むメッセージを前記サーバデバイスから受信した場合にのみ、前記受信したストリーミングメディアコンテンツを前記不揮発性記憶装置に保存するように構成されることを特徴とする請求項４２に記載のシステム。
【請求項４４】
前記サポートヘッダは、ストリーミングメディアコンテンツのクライアントでのキャッシングが前記サーバデバイスによってサポートされることを示す機能名を含み、前記機能名は、
ｃｏｍ．ｍｉｃｒｏｓｏｆｔ．ｗｍ．ｆａｓｔｃａｃｈｅ
を含むことを特徴とする請求項４３に記載のシステム。
【請求項４５】
前記ストリーミングメディアプレーヤコンポーネントはさらに、前記コンテンツのキャッシングが許されることを示す指示を前記サーバデバイスから受信した場合にのみ、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置に記憶するように構成されることを特徴とする請求項４２に記載のシステム。
【請求項４６】
前記ストリーミングメディアプレーヤコンポーネントはさらに、キャッシュ制御指示に関連のストリーミングメディアコンテンツをキャッシュすることが前記システムに許されることを示すキャッシュ制御指示を含むメッセージを前記サーバデバイスから受信した場合にのみ、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置に記憶するように構成されることを特徴とする請求項４２に記載のシステム。
【請求項４７】
前記ストリーミングメディアプレーヤコンポーネントはさらに、前記ストリーミングメディアコンテンツのキャッシングが許されることが、前記ストリーミングメディアコンテンツの識別子によって示されている場合にのみ、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置に記憶するように構成されることを特徴とする請求項４２に記載のシステム。
【請求項４８】
前記識別子はＵＲＬ（Ｕｎｉｆｏｒｍ　Ｒｅｓｏｕｒｃｅ
Ｌｏｃａｔｏｒ）を含むことを特徴とする請求項４７に記載のシステム。
【請求項４９】
前記ストリーミングメディアプレーヤコンポーネントはさらに、ユーザがストリーミングメディアコンテンツのクライアントでのキャッシングを使用禁止にしていない場合にのみ、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置に記憶するように構成されることを特徴とする請求項４２に記載のシステム。
【請求項５０】
前記ストリーミングメディアプレーヤコンポーネントはさらに、前記ストリーミングメディアプレーヤがストリーミングメディアコンテンツのクライアントでのキャッシングを使用禁止にしていない場合にのみ、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置に記憶するように構成されることを特徴とする請求項４２に記載のシステム。
【請求項５１】
前記ストリーミングメディアプレーヤコンポーネントはさらに、前記ストリーミングメディアコンテンツのタイプがキャッシュ可能タイプである場合にのみ、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置に記憶するように構成されることを特徴とする請求項４２に記載のシステム。
【請求項５２】
前記ストリーミングメディアプレーヤコンポーネントはさらに、
前記ストリーミングメディアコンテンツに対する事後の要求を受信し、
前記事後の要求に応答して、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置から取得する
ように構成されることを特徴とする請求項４２に記載のシステム。
【請求項５３】
前記ストリーミングメディアプレーヤコンポーネントはさらに、
前記ストリーミングメディアコンテンツの有効期限が切れているかどうかを調べ、
前記ストリーミングメディアコンテンツの有効期限が切れていない場合にのみ、前記事後の要求に応答して、前記ストリーミングメディアコンテンツを前記不揮発性記憶装置から取得する
ように構成されることを特徴とする請求項５２に記載のシステム。
【請求項５４】
前記ストリーミングメディアプレーヤコンポーネントはさらに、
前記ストリーミングメディアコンテンツの有効期限が切れているかどうかを調べ、
前記ストリーミングメディアコンテンツの有効期限が切れている場合は、前記ストリーミングメディアコンテンツを再確認する
ように構成されることを特徴とする請求項５２に記載のシステム。
【請求項５５】
前記ストリーミングメディアプレーヤコンポーネントはさらに、
前記不揮発性記憶装置からの前記ストリーミングメディアコンテンツの再生に係わるロギング情報を含むメッセージを生成し、前記メッセージは、データ構造のメッセージ本体部分に前記ロギング情報が含まれることを示すロギング情報ヘッダを含む
ように構成されることを特徴とする請求項５２に記載のシステム。
【請求項５６】
前記ロギング情報ヘッダは、
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：ａｐｐｌｉｃａｔｉｏｎ／ｘ−ｗｍｓ−ｓｅｎｄｅｖｅｎｔ
を含むことを特徴とする請求項５５に記載のシステム。
【請求項５７】
クライアントデバイスの１つまたは複数のプロセッサによって実行されると、前記１つまたは複数のプロセッサに、
サーバデバイスからストリーミングメディアコンテンツを受信させ、
後の時間に再生するために、前記受信したストリーミングメディアコンテンツを前記クライアントデバイスでキャッシュさせる
複数の命令が格納されていることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項５８】
前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツをキャッシュさせる前記命令は、コンテンツのキャッシングが許される旨の指示を前記サーバデバイスから受信した場合にのみ、前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツを保存させる命令を含むことを特徴とする請求項５７に記載の１つまたは複数のコンピュータ可読媒体。
【請求項５９】
前記後の時間は、前記ストリーミングメディアコンテンツすべてを前記サーバデバイスから受信した後の時間を含むことを特徴とする請求項５７に記載の１つまたは複数のコンピュータ可読媒体。
【請求項６０】
クライアントデバイスの１つまたは複数のプロセッサによって実行されると、前記１つまたは複数のプロセッサに、
サーバデバイスからストリーミングメディアコンテンツを受信させ、
前記ストリーミングメディアコンテンツの再生の時間をずらすことを可能にさせる
複数の命令が格納されていることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項６１】
前記複数の命令はさらに、前記１つまたは複数のプロセッサに、前記受信したストリーミングメディアコンテンツをキャッシュさせることを特徴とする請求項６０に記載の１つまたは複数のコンピュータ可読媒体。
【請求項６２】
不揮発性記憶装置と、
ストリーミングメディアコンテンツの符号化ビットレートに依存しないレートで前記ストリーミングメディアコンテンツをサーバデバイスから受信し、
前記ストリーミングメディアコンテンツを前記不揮発性記憶装置に記憶し、
前記ストリーミングメディアコンテンツの後の時間の再生を可能にし、
前記ストリーミングメディアコンテンツの時間をずらした再生を可能にし、
受け取ったシャトルコントロールオプションを前記サーバデバイスに指示することなく、前記シャトルコントロールオプションに従って、前記ストリーミングメディアコンテンツの再生を変更し、
ストリーミングメディアコンテンツの再生を少なくとも一時的に停止する要求を受信し、
前記システムにおける前記ストリーミングメディアコンテンツの再生を停止し、
前記ストリーミングメディアコンテンツの再生を停止させる要求に関わらず、前記ストリーミングメディアコンテンツの受信を継続する
ように構成されたストリーミングメディア再生コンポーネントと
を備えることを特徴とするシステム。
【請求項６３】
データ構造が格納されたコンピュータ可読媒体であって、
データ構造タイプを識別するデータを含む第１の部分と、
１つまたは複数のヘッダを識別するデータを含む第２の部分であって、前記１つまたは複数のヘッダは、ストリーミングメディアコンテンツのクライアントでのキャッシングが、前記ストリーミングメディアコンテンツのソースによってサポートされるかどうかを示すサポートヘッダを含む第２の部分と、
前記データ構造中の前記第２の部分の終わりを識別するデータを含む第３の部分と
を備えることを特徴とするコンピュータ可読媒体。
【請求項６４】
前記サポートヘッダは、ストリーミングメディアコンテンツのクライアントでのキャッシングが前記ソースによってサポートされることを示す機能名を含み、前記機能名は、
ｃｏｍ．ｍｉｃｒｏｓｏｆｔ．ｗｍ．ｆａｓｔｃａｃｈｅ
を含むことを特徴とする請求項６３に記載のコンピュータ可読媒体。
【請求項６５】
データ構造が格納されたコンピュータ可読媒体であって、
データ構造タイプを識別するデータを含む第１の部分と、
キャッシュ制御指示に関連のストリーミングメディアコンテンツをクライアントデバイスがキャッシュできるかどうかを示すキャッシュ制御指示を識別するデータを含む第２の部分と、
前記データ構造中の前記第２の部分の終わりを識別するデータを含む第３の部分と
を備えることを特徴とするコンピュータ可読媒体。
【請求項６６】
前記キャッシュ制御指示はさらに、プロキシデバイスが前記ストリーミングメディアコンテンツをキャッシュできるかどうかを示すことを特徴とする請求項６５に記載のコンピュータ可読媒体。
【請求項６７】
前記キャッシュ制御指示はさらに、ストリーミングメディアコンテンツのキャッシングをサポートしないキャッシングデバイスが前記ストリーミングメディアコンテンツをキャッシュできるかどうかを示すことを特徴とする請求項６５に記載のコンピュータ可読媒体。
【請求項６８】
前記クライアントデバイスがストリーミングメディアコンテンツをキャッシュできることを示すのに、キャッシュ制御指示を使用しないことを特徴とする請求項６５に記載のコンピュータ可読媒体。
【請求項６９】
前記クライアントデバイスのストリーミングメディアプレーヤが前記ストリーミングメディアコンテンツをキャッシュできることを示すキャッシュ制御指示は、
ｎｏ−ｃａｃｈｅ，　ｕｓｅｒ−ｐｕｂｌｉｃ
を含むことを特徴とする請求項６５に記載のコンピュータ可読媒体。
【請求項７０】
前記クライアントデバイスのストリーミングメディアプレーヤが前記ストリーミングメディアコンテンツをキャッシュできないことを示すキャッシュ制御指示は、
ｎｏ−ｕｓｅｒ−ｃａｃｈｅ
を含むことを特徴とする請求項６５に記載のコンピュータ可読媒体。
【請求項７１】
データ構造が格納されたコンピュータ可読媒体であって、
データ構造タイプを識別するデータを含む第１の部分と、
１つまたは複数のヘッダを識別するデータを含む第２の部分であって、前記１つまたは複数のヘッダは、ストリーミングメディアコンテンツをストリーミングする速度を示すストリーミング速度ヘッダを含み、前記ストリーミングメディアコンテンツをストリーミングする速度は、前記ストリーミングメディアコンテンツの符号化ビットレートに依存しない第２の部分と、
前記データ構造中の前記第２の部分の終わりを識別するデータを含む第３の部分と
を備えることを特徴とするコンピュータ可読媒体。
【請求項７２】
前記ストリーミングメディアコンテンツをストリーミングする速度は値ｘによって表され、前記ストリーミング速度ヘッダは、
プラグマ：速度＝ｘ
を含むことを特徴とする請求項７１に記載のコンピュータ可読媒体。
【請求項７３】
前記ストリーミングメディアコンテンツをストリーミングする速度は値ｘによって表され、前記ストリーミング速度ヘッダは、
速度＝ｘ
を含むことを特徴とする請求項７１に記載のコンピュータ可読媒体。
【請求項７４】
前記ストリーミングメディアコンテンツをストリーミングする速度は、前記ストリーミングメディアコンテンツを受信するクライアントデバイスによって要求された速度であることを特徴とする請求項７１に記載のコンピュータ可読媒体。
【請求項７５】
データ構造が格納されたコンピュータ可読媒体であって、
データ構造タイプを識別するデータを含む第１の部分と、
１つまたは複数のヘッダを識別するデータを含む第２の部分であって、前記１つまたは複数のヘッダは、前記データ構造のメッセージ本体部分に、クライアントデバイスキャッシュからのストリーミングメディアコンテンツの再生に係わるロギング情報が含まれることを示すロギング情報ヘッダを含む第２の部分と、
前記データ構造中の前記第２の部分の終わりを識別するデータを含む第３の部分と
を備えることを特徴とするコンピュータ可読媒体。
【請求項７６】
前記ロギング情報ヘッダは、
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：ａｐｐｌｉｃａｔｉｏｎ／ｘ−ｗｍｓ−ｓｅｎｄｅｖｅｎｔ
を含むことを特徴とする請求項７５に記載のコンピュータ可読媒体。
【請求項７７】
前記複数の命令が、さらに前記１つまたは複数のプロセッサに、
前記ストリーミングメディアコンテンツに対する要求をユーザから受信させ、前記ユーザの要求に応答して前記サーバデバイスに対して前記ストリーミングメディアコンテンツを要求させる
ことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ストリーミングメディアに関し、詳細には、ストリーミングメディアコンテンツのクライアント側でのキャッシングに関する。
【０００２】
【従来の技術】
オーディオ、ビデオ、および／またはテキストメディアコンテンツのストリーミングなどのコンテンツストリーミングが次第に普及しつつある。一般に、用語「ストリーミング」とは、メディアを表すデータがネットワークを通じてクライアントコンピュータに提供され、クライアントコンピュータは、「ファイル」全体が配信されるのを待つのではなく、それをネットワークサーバから受信しながらストリーミングコンテンツをレンダリングすることを意味する。
【０００３】
ストリーミングメディアコンテンツの利用性が高まることにより、以前にはインターネットまたは他のコンピュータネットワークを介しては入手できなかった様々な情報コンテンツの入手が可能になっている。ライブコンテンツは、そのようなコンテンツの顕著な一例である。ストリーミングメディアコンテンツを使用すると、注目すべきイベントのオーディオ、ビデオ、またはオーディオ／ビジュアルの対象を、その進行と同時にインターネットを通じて放送することができる。同様に、テレビ局またはラジオ局は、インターネットを通じて各自のライブコンテンツを伝送することができる。
【０００４】
現在、ストリーミングメディアコンテンツは、「ジャストインタイム（ちょうど間に合う）配信」の概念を使用してストリーミングされている。コンテンツは、クライアントで再生するためにそのコンテンツの符号化ビットレートでクライアントに配信される。ストリームメディアコンテンツには、（例えば、再送する必要のある損失データやその他のネットワークの不整合を考慮に入れて）いくらかのバッファリングを行う。しかし、現在のクライアントシステムは通例、クライアントで行うバッファリング量を最小に抑え、それによりクライアントにおけるメモリ要件を低減し、またバッファリングによる始動待ち時間も短縮することを試みている。
【０００５】
【発明が解決しようとする課題】
しかし、現在のストリーミングメディアコンテンツおよびバッファリングシステムは、他タイプのコンテンツ再生システムに備わる機能を持たないことにより損をしている。例えばＶＣＲ（ビデオカセットレコーダ）で録画したテレビ番組はユーザによって巻き戻すことができ、すでに見た部分を容易に繰り返し見ることができ、あるいはユーザの必要に応じて後の時間に見ることができる。これに対し、現在のストリーミングメディアコンテンツシナリオでは、そのような動作をユーザによって行うことができない。ストリームメディアコンテンツを巻き戻すには、コンテンツのストリーミングを停止し、新しい位置で再開する（そしてしたがってその新しい位置から開始するストリームを再度バッファリングする）必要があり、通例ユーザは、ストリーミングメディアコンテンツを後の時間に見ることができない。すなわち、コンテンツは受信と同時にユーザに対して再生され、ユーザがコンテンツを後の時間に見たい場合はその後の時間にコンテンツをストリーミングしなければならない。
【０００６】
【課題を解決するための手段】
本発明による下記のストリーミングメディアコンテンツのクライアント側でのキャッシングは、上記の課題およびその他の課題を解決することができる。
【０００７】
以下、本発明によるストリーミングメディアコンテンツのクライアント側でのキャッシングについて説明する。
【０００８】
本発明の一実施形態によれば、ストリーミングメディアコンテンツを、コンテンツの符号化ビットレートに依存しないレートでストリーミングすることができる。
【０００９】
本発明の他の実施形態によれば、ユーザが様々なシャトルコントロールオプション（例えば一時停止、停止、早送り、シーク、巻き戻しなど）を選択した場合でも、ストリーミングメディアコンテンツのストリーミングを継続することができる。
【００１０】
本発明のさらに他の実施形態によれば、後の時間に再生するためにストリーミングメディアコンテンツを記録することができる。
【００１１】
本発明のさらに別の実施形態によれば、ストリーミングメディアコンテンツを時間をずらして再生する（ｔｉｍｅ−ｓｈｉｆｔ）ことができる。
【００１２】
追加的な実施形態によれば、サーバデバイスから受信したストリーミングメディアコンテンツをクライアントデバイスにキャッシュ（キャッシュメモリに格納）することができる。そしてクライアントデバイスのストリーミングメディアコンテンツに対する事後の要求は、サーバデバイスからそのストリーミングメディアコンテンツを再度ストリーミングするのではなく、キャッシュされたストリーミングメディアコンテンツを使用して満たすことができる。
【００１３】
本明細書の記述を通じて、同様の構成要素および／または特徴を参照する際は同じ参照符号を使用することとする。
【００１４】
【発明の実施の形態】
図面を参照して、本発明によるストリーミングメディアコンテンツのクライアント側でのキャッシングの実施の形態を以下に詳述する。ストリーミングメディアコンテンツをキャッシュすることにより、従来は利用できなかった様々な機能をユーザが利用できるようにすることができる。そのような機能の例には、コンテンツの符号化ビットレートに依存しないレートでメディアコンテンツをストリーミングすることにより、ユーザが各種のシャトル（ｓｈｕｔｔｌｅ）コントロールオプション（例えば一時停止、停止、早送り、シーク、巻き戻しなど）を選択した際でもコンテンツのストリーミングを継続することが可能になる、後の時間に再生するためにストリーミングコンテンツを記録することが可能になる、ストリーミングコンテンツを時間をずらして再生することが可能になることが含まれる。ストリーミングメディアコンテンツのクライアント側でのキャッシングの様々な実施形態は、これらの機能のうち異なる機能、あるいはこれらの機能の異なる機能の組合せを含むことができる。
【００１５】
図１に、ストリーミングメディアコンテンツのクライアント側でのキャッシングを用いることができる例示的なネットワーク環境１００を示す。環境１００では、複数の（ｘ個の）クライアントコンピューティングデバイス１０２（１）、１０２（２）、．．．、１０２（ｘ）が、ネットワーク１０６を介して複数（ｙ個）のオリジンサーバコンピューティングデバイス１０４（１）、１０４（２）、．．．、１０４（ｙ）に結合されている。ネットワーク１０６は、各種の従来のネットワークプロトコル（公開プロトコルおよび／または独自仕様のプロトコルを含む）のうち任意のプロトコルを用いる、各種の従来のネットワークトポロジおよびタイプ（光ネットワーク、配線および／または無線ネットワークを含む）の任意のネットワークを表すものとする。ネットワーク１０６は、例えば、インターネット、また可能性としては１つまたは複数のローカルエリアネットワーク（ＬＡＮ）および／または広域ネットワーク（ＷＡＮ）の少なくとも一部を含むことができる。
【００１６】
オリジンサーバデバイス１０４から利用可能なストリーミングメディアコンテンツを要求する際に、その要求は、クライアントデバイス１０２からネットワーク１０６を介してサーバデバイス１０４に送られる。オリジンサーバデバイス１０４はその要求を受信し、ネットワーク１０６を介して要求元のクライアントデバイス１０２にその要求されたコンテンツを返送する。１つまたは複数のプロキシサーバ（図示せず）がネットワーク１０６の一部であってよく、クライアントデバイス１０２からの要求およびクライアントデバイス１０２への応答は、実際のサーバデバイス１０４ではなく、そのようなプロキシサーバに送信し、そこから受信してもよい。クライアントデバイス１０２にメディアコンテンツをストリーミングするデバイス（オリジンサーバ、プロキシサーバ、あるいはその他のデバイス）はいずれも、そのストリームメディアコンテンツのソースデバイスと呼ばれる。
【００１７】
コンピューティングデバイス１０２および１０４はそれぞれ、各種の従来のコンピューティングデバイスのいずれであってもよく、これにはデスクトップＰＣ（パーソナルコンピュータ、パソコン）、ノートブック型または携帯型コンピュータ、ワークステーション、メインフレームコンピュータ（大型コンピュータ）、インターネット機器、ゲームコンソール、ハンドヘルド（手持ちサイズ）ＰＣ、携帯電話、携帯情報端末（ＰＤＡ）、これらの組合せなどが含まれる。デバイス１０２および１０４の１つまたは複数は、同じタイプのデバイスでも、あるいは異なるタイプのデバイスであってもよい。
【００１８】
サーバデバイス１０４は、各種のデータをクライアント１０２にストリーミング可能な状態にすることができる。用語「ストリーミング」は、メディア（マスコミ媒体）を表すデータがネットワークを通じてクライアントデバイスに提供され、そのコンテンツが完全に配信される前にコンテンツの再生を開始できることを指し示すのに使用される。データは、公開で利用可能としても、あるいは限定にしてもよい（例えば、特定のユーザだけに制限する、適切な料金を支払った場合のみ利用可能とするなど）。データは、オーディオ、ビデオ、テキスト、アニメーションなど、１つまたは複数の各種タイプのコンテンツのいずれであってもよい。さらに、データは「オンデマンド」式（例えば予め記録されており、サイズが分かっているもの）であっても、あるいは「ブロードキャスト」（例えば、演奏と同時に記録され、記録後すぐにストリーミングが可能な状態とされるコンサートのデジタル表現など、予めサイズが分からないもの）してもよい。
【００１９】
図２に、例示的なクライアントデバイスおよびサーバデバイスを示す。クライアントデバイス１０２は、ソースサーバデバイス１４６のストリーミングモジュール１４４にアクセスするように構成されたストリーミングメディアプレーヤ１４２を含む。ソースサーバデバイス１４６は、例えば、図１のオリジンサーバデバイス１０４か、あるいは別のデバイス（例えばプロキシデバイス）である。ソースサーバデバイス１４６はまた（例えばプレーヤ１４２へのユーザ入力に基づいて）メディアプレーヤ１４２によりその中から選択を行うことができる１つまたは複数のストリーミングメディアコンテンツファイル１４８、および選択されてプレーヤ１４２にストリーミングされたコンテンツファイルを含む。ストリーミングメディアコンテンツは、受信されるとすぐに不揮発性の記憶装置１５０に保存することにより、クライアントデバイスでキャッシュされることができる。図２には示されていないが、１つまたは複数の追加的なデバイス（例えばファイアウォール、ルータ、ゲートウェイ、ブリッジ、複数のプロキシサーバなど）が、クライアントデバイス１０２とサーバデバイス１４６の間に位置してもよい。説明を簡潔にするために図２には単一のクライアント１０２とサーバ１４６しか図示していないが、サーバ１４６には複数のクライアント１０２がアクセスすることができ、また単一のクライアント１０２が複数のサーバ１４６にアクセスできることに留意されたい。
【００２０】
不揮発性の記憶装置１５０は、電源障害が生じた際でもその状態を維持するという点で不揮発性である。したがって、不揮発性記憶装置１５０に保存されたストリーミングメディアコンテンツは、クライアント１０２に電力損失が生じた際（例えばクライアント１０２の電源を切った際）でも消えずに存続する。デバイス１５０としては、磁気ディスクおよびディスクドライブ（例えば従来のハードディスク）、光ディスクおよびディスクドライブ、フラッシュメモリなど、各種の異なる不揮発性ストレージのタイプを使用することができる。
【００２１】
デバイス１０２と１４６間の通信は、各種の異なる従来のプロトコルを使用して行うことができる。一実装では、デバイス１０２と１４６間の通信は、バージョン１．１（ＨＴＴＰ１．１）など、あるバージョンのハイパーテキスト伝送プロトコル（ＨＴＴＰ）を使用して行われる。別の実装では、デバイス１０２と１４６間の通信は、リアルタイムストリーミングプロトコル（ＲＴＳＰ）を使用して行われる。あるいは、セッション開始プロトコル（ＳＩＰ）、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）など、他のプロトコルを使用してもよい。
【００２２】
また、ストリーミングメディアコンテンツは、各種の異なるストリーミングメディアフォーマットの任意のものに従って記憶し、ストリーミングすることができる。例示的な一実装では、メディアは、ＡＳＦフォーマット（Ａｄｖａｎｃｅｄ　Ｓｙｓｔｅｍｓ　ＦｏｒｍａｔあるいはＡｄｖａｎｃｅｄ　Ｓｔｒｅａｍｉｎｇ　Ｆｏｒｍａｔ）に基づいてストリーミングされる。ＡＳＦに関するさらなる情報は、ワシントン州レドモンドのマイクロソフト（登録商標）社から得ることができる。これと同じ技術は、ＭＰＥＧ（Ｍｏｖｉｎｇ　Ｐｉｃｔｕｒｅｓ　Ｅｘｐｅｒｔｓ　Ｇｒｏｕｐ）１、ＭＰＥＧ２、ＭＰＥＧ４、Ｑｕｉｃｋｔｉｍｅ（クイックタイム）など、他のフォーマットにも適用することができる。
【００２３】
図３に、ストリーミング媒体データを通信する際に使用できる例示的なメッセージフォーマットを示す。ＨＴＴＰ１．１メッセージやＲＴＳＰメッセージなどのメッセージのデータ構造１８０は、スタートラインフィールドまたは部分１８２、１つまたは複数のヘッダフィールドまたは部分１８４、空のラインフィールドまたは部分１８６、および任意選択のメッセージ本体フィールドまたは部分１８８を含む。スタートライン部分１８２は、メッセージまたはデータ構造タイプを識別するデータを含み、これはリクエストライン（例えばＨＴＴＰ１．１のＧＥＴ要求や、ＲＴＳＰのＧＥＴ＿ＰＡＲＡＭＥＴＥＲ要求など）であっても、ステータスライン（例えばＨＴＴＰ１．１　２００のＯＫ応答やＲＴＳＰ１．０　２００のＯＫ応答など）であってもよい。メッセージに関する情報を表すデータを含む１つまたは複数のヘッダ１８４も含まれる。空ライン部分１８６は、ヘッダ１８４の終わりを識別するのに使用する。メッセージ本体部分１８８には任意選択で追加的なデータを含めることができる。この説明では、各種の指示をヘッダ１８４に含めるが、それらの指示はあるいはメッセージ本体１８８に位置してもよい。
【００２４】
図２のデバイス１０２と１４６間では、データ構造１８０を備えるデータを使用して、制御情報（例えばメディアコンテンツのストリーミングをセットアップする）や、データ（例えばストリーミングメディアコンテンツ）が適宜通信される。したがって、これらのメッセージは、ストリーミングされるメディアコンテンツに対応するか、または関連付けられる。
【００２５】
図２を参照すると、クライアントデバイス１０２のキャッシュマネジャ１５２は、オリジンサーバ１４６からストリーミングメディアプレーヤ１４２によって受信されたストリーミングメディアコンテンツのキャッシングを管理する。ストリーミングメディアプレーヤ１４２は、コンテンツを受信し、そのコンテンツをキャッシュすべきであると判断した際は、そのコンテンツを記憶するためにキャッシュマネジャ１５２に転送する。ストリーミングメディアプレーヤ１４２はこの判定を独自に行っても、あるいはキャッシュマネジャ１５２から受け取る情報（例えばキャッシュに利用可能な空間があるかどうかなど）に部分的に基づいて判定してもよい。
【００２６】
ストリーミングメディアプレーヤ１４２によるストリーミングメディアコンテンツのキャッシングは、ストリーミングメディアコンテンツのバッファリングとは異なることに留意されたい。キャッシングとバッファリングには様々な違いがあるが、通例その違いには次の１つまたは複数が含まれる：キャッシュされたコンテンツは、揮発性メモリではなく不揮発性の記憶装置に記憶される；キャッシュされたコンテンツは、すでに再生されたコンテンツを含むことができる；キャッシュされたコンテンツは、（例えば「ジャストインタイム」配信のように）直ちに再生されるのではなく、長時間再生されないコンテンツを含むことができる。
【００２７】
図２には異なるストリーミングメディアコンテンツを異なるファイル１４８として示しているが、これに代えて、１つのストリーミングメディアコンテンツを複数のファイルとして記憶してもよい（あるいはブロードキャストコンテンツの場合はファイルがなくともよい）。「１つの」コンテンツを定義する方式は、実装と媒体のタイプによって異なる可能性がある。例えば、音楽を扱うオーディオおよび／またはビデオコンテンツの場合は、１つの歌を１つのコンテンツとすることができる。コンテンツは、固有の境界（例えば異なる歌）に沿って複数部分に区分するか、あるいはその他の任意の方式で（例えばコンテンツを５分ごとに１コンテンツとするなど）区分することができる。
【００２８】
クライアントデバイス１０２の一部である従来のコンポーネントを任意選択で強化して、キャッシュ管理機能を行わせることができる。例示的な一実装では、マイクロソフト（登録商標）社のインターネットエクスプローラブラウザプログラムがキャッシュ管理機能を含み、ストリーミングメディアプレーヤ１４２はこの機能を強化し、使用することができる。
【００２９】
各メディアコンテンツは、ともに単一のファイルとして記憶することができるにも関わらず複数のストリームを含むことができる。そのようなストリームはそれぞれ、特定タイプのメディア（例えばオーディオ、ビデオ、テキストなど）を通例は特定の符号化ビットレートで表す。符号化ビットレートは、再生のためにメディアコンテンツを符号化するレート（処理速度）である。符号化ビットレートは、ユーザによって知覚されるコンテンツの再生速度とは無関係であることに留意されたい（例えば、通例は、通常のコンテンツストリームと、ユーザがその通常ストリームの再生速度の２倍と知覚する早送りのコンテンツストリームは、どちらも同じ符号化ビットレートである）。
【００３０】
同一タイプのメディアの複数のバージョン（例えば複数のオーディオバージョン、複数のビデオバージョンなど）をメディアコンテンツに含め、メディアプレーヤ１４２による再生のためにそれらのストリームの異なる組合せを選択できるようにすることができる。これらの異なるバージョンはそれぞれ、通例は異なるビットレートで符号化される（通例はビットレートが高いほどコンテンツの品質が高くなる）。ストリームのどの組合せをストリーミングメディアコンテンツに含めるかは各種の方式で選択することができ、これには、ユーザの嗜好（例えばより高い品質のコンテンツを望むか、あるいはより低い品質のコンテンツを望むか）、利用可能なネットワーク帯域幅、特定コンテンツに望まれるビットレート（例えば、あるビットレートをコンテンツ作成者または配信者が設定し、ストリーミングメディアコンテンツの識別子に含めて、ユーザがその識別子を選択するとストリーミングメディアプレーヤ１４２が（任意選択でユーザの嗜好に基づいて）その求められるビットレートに可能な限り近いストリームを選択するなど）などがある。
【００３１】
コンテンツをキャッシュする際は、キャッシュマネジャ１５２が、ストリーミングメディアコンテンツとしてサーバデバイス１４６から受信した（ストリーミングメディアプレーヤ１４２によって要求された）特定のストリームを不揮発性記憶装置１５０に格納する。同じメディアコンテンツについての異なるストリームの組合せをキャッシュマネジャ１５２によってキャッシュすることができる。あるいは、キャッシュマネジャ１５２は、特定のメディアコンテンツについてのすべてのストリームをサーバデバイス１４６から取得し、そのストリームすべてをキャッシュすることが可能だが、メディアプレーヤ１４２へは要求されたストリームだけを再生することができる。
【００３２】
複数のコンテンツをいっしょに再生リストにまとめることもでき、この再生リストは、それぞれがストリーミングされる特定のコンテンツである、１つまたは複数の項目からなるリストである。これらの異なるコンテンツを（例えばユーザまたはその他の者によって）選択していっしょに再生リストにまとめ、ユーザが単に再生リストを選択するだけでレンダリングのためにそれらのコンテンツすべてを選択できるようにすることができる。例として、ユーザは自分の好きな歌から２０曲を選んで再生リストの一部とし、その後は再生リストの再生を選択することによりそれらの歌を再生させることができる。
【００３３】
クライアント１０２でストリーミングメディアコンテンツをキャッシュすることにより、ストリーミングメディアプレーヤ１４２が各種の機能、およびしたがってユーザ体験の機能強化を提供することが可能になる。これらには、コンテンツの符号化ビットレートに依存しないレートでメディアコンテンツをストリーミングすることにより、ユーザが各種のシャトルコントロールオプション（例えば一時停止、停止、早送り、シーク、巻き戻しなど）を選択した際でもコンテンツのストリーミングを継続することが可能になる、後の時間に再生するためにストリーミングコンテンツを記録することが可能になる、時間をずらしてストリーミングコンテンツを再生することが可能になることが含まれる。
【００３４】
クライアント１０２でストリーミングメディアコンテンツをキャッシュすることにより、符号化ビットレートに依存しないレートでサーバデバイス１４６からクライアントデバイス１０２にメディアコンテンツをストリーミングすることが可能になる。ストリーミングレートが符号化ビットレートと同じになる状況が生じる可能性があるが、ストリーミングレートは、符号化ビットレートよりも高く、または低くすることができる。ストリーミングメディアプレーヤ１４２によって受信されたストリーミングメディアコンテンツはキャッシュメモリに記憶され、コンテンツを再生する際は、メディアプレーヤ１４２は、そのコンテンツを再生のためにキャッシュメモリから取り出し、それと同時にサーバデバイス１４６からストリーミングされてくるコンテンツの続きの部分をキャッシュメモリに入れ続ける。ストリーミングレートが符号化ビットレートを下回る例示的な状況では、メディアプレーヤ１４２は、キャッシュされたコンテンツの量、符号化ビットレート、およびストリーミングレートに基づいて、ストリーミングされるコンテンツの再生に補足的な遅延を課す。例えば符号化ビットレートが３００ｋｂｐｓでストリーミングレートが１５０ｋｂｐｓである場合、メディアプレーヤ１４２は、十分なコンテンツが記憶され、ユーザが気づくような中断を生じずにコンテンツを始めから終わりまで完全に再生できるようになるまでコンテンツ再生の開始を遅らせる。
【００３５】
一実装では、メディアプレーヤ１４２は、ストリーミングモジュール１４４にストリーミングコンテンツを要求する際に、ストリーミングモジュール１４４に速度の要求も伝達する。この速度要求は、メディアプレーヤ１４２がメディアコンテンツをストリーミングさせたいレート（速度）を指示する。ストリーミングモジュール１４４は要求されたレート（速度）を受け入れ、続いてその要求されたレート（速度）でメディアコンテンツをメディアプレーヤ１４２にストリーミングするか、あるいはそのレート（速度）を変更することができる。例えば、ストリーミングモジュール１４４は、要求されたレートでコンテンツをストリーミングできない場合がある（例えばサーバポリシー（サーバの方針）、サーバのハードウェアおよび／またはソフトウェアの限界、サーバの現在の負荷などの原因による）。ストリーミングモジュール１４４は、どれだけのストリーミングレートになるかについての指示をメディアプレーヤ１４２に送信する（あるいは、ストリーミングモジュール１４４が特に指示しない場合は、ストリーミングレートはメディアプレーヤ１４２が要求するレートでよい）。さらに、ストリーミングモジュール１４４は、（新たな速度要求をストリーミングモジュール１４４に送信することにより）コンテンツのストリーミング中にストリーミングレートの変更を試みることができ、ストリーミングモジュール１４４は、（新たな速度指示をメディアプレーヤ１４２に送信することにより）コンテンツのストリーミング中にストリーミングレートを変更することができる。
【００３６】
メディアプレーヤ１４２は、自身が求めるストリーミングレート、すなわちそれがストリーミングモジュール１４４に要求するレートを各種の異なる要因に基づいて決定することができる。この決定は、コンテンツ単位で行うことができる。一実装では、メディアプレーヤ１４２は、メディアプレーヤ１４２とストリーミングモジュール１４４間の現在利用可能な帯域幅の割り出しを試みる。これは各種の従来の方法で割り出しすることができ、この方法には、デバイス１０２と１４６間でテストメッセージを送信する、デバイス１０２と１４６間の接続の現在および過去の振る舞いを監視する、ストリーミングモジュール１４４から利用可能な帯域幅の指示を受け取るなどがある。現在利用可能な帯域幅を知ると、メディアプレーヤ１４２は、まず現在利用可能な帯域幅よりも小さい特定の量であるストリーミングレートを要求する。この特定の量は、固定された量（例えば常に５０ｋｂｐｓ）でも、動的な量（例えば現在利用可能な帯域幅の１５％、あるいは現在利用可能な帯域幅の５％〜２５％の間など）であってもよい。
【００３７】
メディアプレーヤ１４２からストリーミングモジュール１４４に送信されるストリーミング速度要求は、メディアプレーヤ１４２がいろいろな任意の方法のいずれかでデータをストリーミングさせたいレートを示すことができる。一実装では、このレートは、コンテンツの符号化ビットレートに比例する速度係数で表される（例えば、３．２の速度係数は、ストリーミングレートがコンテンツの符号化ビットレートに比べて３．２倍速いことを意味し、０．５の速度係数は、ストリーミングレートがコンテンツの符号化ビットレートの半分であることを意味する）。別の実装では、速度は、単に所望のストリーミングビットレート（例えば３００ｋｂｐｓ、５００ｋｂｐｓ、２０ｋｂｐｓなど）を指定することによって示される。
【００３８】
速度要求の指示は、各種の異なる方式でメディアプレーヤ１４２からストリーミングモジュール１４４に送信することができる。ＲＴＳＰを使用してデバイス１０２と１４６間の通信を行う一実装では、ストリーミングメディアプレーヤ１４２からストリーミングモジュール１４４に送信されるメッセージに次のＲＴＳＰヘッダを（例えば図３のヘッダ１８４として）付加する。
速度：ｘ
ｘは、コンテンツの符号化ビットレートに比例する要求された速度係数を表す。値ｘは、整数でも実数でもよい（任意選択で小数点以下の桁数を制限することができ、通例は小数点第１位または第２位までに制限するが、他の値を使用することもできる）。このヘッダは様々なメッセージに付加することができ、一実装では、ストリーミングメディアプレーヤ１４２からストリーミングモジュール１４４に送信される、メディアコンテンツのストリーミングを要求するメッセージに含める。
【００３９】
ストリーミングモジュール１４４がその要求に応答する際には、ＲＴＳＰ　ＰＬＡＹ応答メッセージに類似のヘッダ（速度：ｙ）を入れてストリーミングメディアプレーヤ１４２に返送する。ｙは、ストリーミングモジュール１４４が要求されたコンテンツをストリーミングする（コンテンツの符号化ビットレートに比例する）速度を表す（ｙは、値ｘと同じでも同じでなくともよい）。値ｘと同様に、値ｙは、整数または実数とすることができる（小数点以下の桁数は任意選択で制限してもよく、通例は小数点第１位または第２位までに制限するが、他の値も使用することができる）。
【００４０】
ＨＴＴＰを使用してデバイス１０２と１４６間の通信を行う別の一実装では、ストリーミングメディアプレーヤ１４２からストリーミングモジュール１４４に送信されるメッセージに（例えば図３のヘッダ１８４として）次のＨＴＴＰヘッダを付加する。
プラグマ：速度＝ｘ
ｘは、コンテンツの符号化ビットレートに比例する要求された速度係数を表す。プラグマ（ｐｒｏｇｍａ）ヘッダは、実装に固有の指示を含めるためにＨＴＴＰで使用される一般ヘッダフィールドである。上述のＲＴＳＰスピードヘッダと同様に、このヘッダは様々なメッセージに付加することができ、一実装では、ストリーミングメディアプレーヤ１４２からストリーミングモジュール１４４に送信される、メディアコンテンツのストリーミングを要求するメッセージに含められる。
【００４１】
ストリーミングモジュール１４４は、この要求に応答する際には、ＨＴＴＰ　ＧＥＴ応答メッセージに同様のヘッダ（プラグマ：速度＝ｙ）を入れてストリーミングメディアプレーヤ１４２に返送する。ｙは、ストリーミングモジュール１４４が要求のコンテンツをストリーミングする（コンテンツの符号化ビットレートに比例する）速度を表す（ｙは、値ｘと同じでも同じでなくともよい）。値ｘと同様に、値ｙは整数でも実数でもよい（小数点以下の桁数を任意選択で制限することができ、通例は小数点第１位または第２位までに制限するが、他の値を使用してもよい）。
【００４２】
コンテンツのストリーミングレートは、符号化ビットレートを参照して識別することができるが、この識別は単にそれが容易な基準点であるために行うことに留意されたい。ストリーミングレートはなお符号化ビットレートには依存せず、実質的にどのような速度係数でも要求および／または選択することができ、その速度係数を識別する方式は符号化ビットレートを基準とする。
【００４３】
図４に、サーバからクライアントにメディアコンテンツをストリーミングする例示的プロセス２００を表すフローチャートを示す。プロセス２００は、図２のデバイス１０２および１４６などのクライアントデバイスおよびサーバデバイスによって実施され、またソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで行うことができる。
【００４４】
初めに、コンテンツの符号化ビットレートに依存しない、メディアコンテンツをストリーミングするときのストリーミングレートをクライアントデバイスとサーバデバイス間でネゴシエートする（動作２０２）。このネゴシエーションは、例えば、上述のようにクライアントによる要求速度の提出と、ストリーミング速度の戻し通知とすることができる。あるいは、このネゴシエーションは他の形を取ることもでき、サーバデバイス（または何らかの他のデバイス）によって開始し、クライアントデバイスがそのストリーミングレートに対して所望の変更を要求する、クライアントデバイスまたはサーバデバイスによって変更可能なデフォルトのレートを使用する、ストリーミングメディアコンテンツの識別子によって示され、クライアントデバイスまたはサーバデバイスによって変更することが可能なレートを使用する、などがある。ストリーミングレートをネゴシエートすると、ネゴシエートされたストリーミングレートでサーバデバイスからクライアントデバイスにメディアコンテンツをストリーミングする（動作２０４）。ストリーミングレートは、任意選択であって、後にコンテンツのストリーミング中に再度ネゴシエートすることができる（これを開始するのはクライアントデバイス、サーバデバイス、あるいは何らかの他のデバイスである）。
【００４５】
図２に戻ると、通例、ストリーミングモジュール１４４は、ストリーミングメディアプレーヤ１４２に対してコンテンツファイル１４８全体をストリーミングメディアコンテンツとして転送することはない。通例は、ファイルヘッダや索引付け情報などの特定の情報は、ストリーミングメディアコンテンツの一部としてストリーミングメディアプレーヤ１４２に対して転送されない。この情報の厳密な性質は、ストリーミングモジュール１４４の設計方式と、メディアコンテンツのストリーミングに使用するフォーマットとに基づいて異なる可能性がある。そのような情報がクライアントデバイス１０２に転送されない場合は、ストリーミングメディアプレーヤ１４２（あるいはキャッシュマネジャ１５２）がその情報を生成し、その情報をキャッシュ１５０に追加する。したがってこの適切な情報はキャッシュ内コンテンツの一部として取得可能になり、キャッシュからストリーミングメディアコンテンツを再生する際にストリーミングメディアプレーヤ１４２によって使用することができる。
【００４６】
ストリーミングメディアプレーヤ１４２は、ストリーミングメディアコンテンツの再生要求を受け取ると、キャッシュマネジャ１５２を介して、要求されたコンテンツがキャッシュ１５０内にあるかどうかを調べる。コンテンツがキャッシュ１５０にある場合（これを「キャッシュヒット」と呼ぶ）、ストリーミングメディアプレーヤ１４２は、サーバデバイス１４６ではなくキャッシュ１５０から要求されたストリーミングメディアコンテンツを取得する。ただし、コンテンツがキャッシュ１５０にない場合（これを「キャッシュミス」と呼ぶ）、ストリーミングメディアプレーヤ１４２は、要求されたストリーミングメディアコンテンツをサーバデバイス１４６から取得する。キャッシュが一杯になり、それ以上のストリーミングメディアコンテンツを入れるだけの記憶空間がなくなった場合には、新たなコンテンツを入れるスペースを作るためにすでにキャッシュされているコンテンツをキャッシュから削除（これをしばしばキャッシュから追い出すという）できることに留意されたい。各種ある従来のキャッシュ置換アルゴリズムを使用して、キャッシュから追い出すコンテンツを決定することができる。
【００４７】
状況によっては、コンテンツファイル１４８に、符号化ビットレートが異なる複数の異なるストリーム（例えば、５６ｋｂｐｓで符号化された低品質のストリームと、３００ｋｂｐｓで符号化された高品質のストリームなど）が含まれる可能性がある。このようなファイルをしばしばマルチプルビットレートファイルと呼ぶ。そのような状況では、通例は１つのストリーム（例えば低品質のストリームまたは高品質のストリーム）だけをクライアントデバイス１０２にストリーミングし、そのストリームをキャッシュ１５０にキャッシュイングする。それと符号化ビットレートが同じである同一コンテンツに対する事後の要求は、キャッシュ１５０から満たすことができる（すなわちキャッシュヒットになる）が、別の符号化ビットレートに対する要求はキャッシュ１５０からは満たすことができない（キャッシュミスとなる）。あるいは、ストリーミングメディアプレーヤ１４２が、ストリーミングモジュール１４４からストリーミングされた符号化ビットレートをすべて備え、それによりそれらのレートすべてをキャッシュ１５０に記憶しておいてもよい。
【００４８】
ストリーミングモジュール１４４は任意選択で、ストリーミングメディアコンテンツの満了時間（有効期限）を含んでもよい。この満了時間は、比例する時間（例えばコンテンツを送信してから５分後）であっても、固定された時間（例えば特定の日時）であってもよい。ストリーミングメディアコンテンツの満了時間は、各種の異なる方式で示すことができる。一実装では、ＨＴＴＰのｍａｘ−ａｇｅキャッシュ制御指示を使用して満了時間を指示する。別の実装では、ＨＴＴＰまたはＲＴＳＰのＥｘｐｉｒｅｓヘッダを使用して満了時間を指示する。
【００４９】
期限が満了すると、ストリーミングメディアプレーヤ１４２は、キャッシュからコンテンツを再生する前にコンテンツを再確認する。この再確認は、通例、ストリーミングメディアプレーヤ１４２でコンテンツ要求（例えばコンテンツの再生を求めるユーザの要求）を受信したときに行っても、あるいは他のときに行ってもよい（例えば、そのコンテンツが要求されているかどうかに関係なく、ストリーミングメディアプレーヤ１４２またはキャッシュマネジャ１５２がキャッシュを監視して、満了時間が経過するとその期限切れを検出するということが可能である）。コンテンツの期限が満了すると、ストリーミングメディアプレーヤ１４２は、そのコンテンツを記述する新しい情報（それによりストリーミングメディアプレーヤ１４２はそのコンテンツに変化があるかどうかを判定することができる）と、新しい満了時間を回復する。
【００５０】
コンテンツが変化していない場合、ストリーミングメディアプレーヤ１４２は、単にそのコンテンツの満了時間を新しい期限日に更新することができ、キャッシュ内のコンテンツには変更を行う必要がない。ただし、コンテンツが変化している場合は、ストリーミングメディアプレーヤ１４２は、そのコンテンツをキャッシュから取得するのではなく、要求されたそのコンテンツをストリーミングモジュール１４４からストリーミングする。あるいは、ストリーミングメディアプレーヤ１４２は、コンテンツの何が変化したのかを判断し、変化した部分だけをストリーミングモジュール１４４からストリーミングし、残りの部分はキャッシュから得ることを試みることもできる。
【００５１】
ストリーミングメディアプレーヤ１４２は、記述オペレーションを使用して、サーバデバイス１４６から取得できる特定のコンテンツを記述した情報を得ることができる。ストリーミングモジュール１４４は、記述要求に応答して、ヘッダ情報（例えば、コンテンツについての書誌学的な（ｂｉｂｌｉｏｇｒａｐｈｉｃ）情報、コンテンツのストリームの特徴、そのコンテンツのインデックスを再生成するのに必要な情報などを含む）、コンテンツに関連のメタデータ、コンテンツの一部として取得可能なストリームのリストなど、識別されるメディアコンテンツを記述する各種の情報を返送する。返送された正確な情報は、ストリーミングモジュール１４４の実装方式と、メディアコンテンツをストリーミングするのに使用する特定のフォーマットとに応じて異なる可能性がある。この情報を使用してコンテンツを再確認することができる。
【００５２】
一実装では、特定のコンテンツストリームのヘッダ情報は、コンテンツが変更された場合にコンテンツ作成者によって変更されるＧＵＩＤ（Ｇｌｏｂａｌｌｙ　Ｕｎｉｑｕｅ　ＩＤ：グローバル一意識別子）を含む。この値は、「ＭＭＳタイプ」属性として知られる。コンテンツの変更はこのＧＵＩＤ値を調べることによって検出することができ、値が変化していなければコンテンツは変化しておらず、ＧＵＩＤ値が変化していればコンテンツが変化していることになる。
【００５３】
あるいは、別の情報を調べてコンテンツが変化しているかどうかを判定することができる。一実装では、コンテンツ記述情報は、最後に修正された日付の指示を含む（例えば図３のヘッダ１８４とすることができる）。新たに受け取った最後に修正された日付が、以前に受け取った最後に修正された日付と異なる場合、ストリーミングメディアプレーヤ１４２は、コンテンツが変化していると判断する。調べることが可能なこの他の情報は、コンテンツのハッシュ（ｈａｓｈ）である。従来の各種のハッシングアルゴリズムを使用してコンテンツのハッシュ値を生成することができ、一般にはコンテンツを変更するとそのコンテンツのハッシュ値が変化する。ハッシュ値が変化している場合、ストリーミングメディアプレーヤ１４２は、コンテンツが変更されたと判断する。
【００５４】
上述のように、ストリーミングメディアコンテンツは、複数コンテンツからなる再生リストとすることができる。メディアコンテンツの再生リストがキャッシュされている場合、ストリーミングメディアプレーヤ１４２は、再生リストの各メディアコンテンツを必要に応じて再確認する。キャッシュされた時点から変化しているコンテンツは、キャッシュから取得するのではなく、ストリーミングモジュール１４４からストリーミングする。また、再生リストのメディアコンテンツのすべてがクライアントデバイス１０２でキャッシュされてはいない状況が生じる場合がある。そのような状況では、キャッシュされていないコンテンツは、キャッシュから取得するのではなくストリーミングモジュール１４４からストリーミングする。
【００５５】
また、再生リストに関しては、ストリーミングメディアプレーヤ１４２が、再生リスト中の次のコンテンツについての準備が整ったことをストリーミングモジュール１４４に指示する状況が生じる可能性がある。この指示は、「次のエントリのストリーム（ｓｔｒｅａｍ　ｎｅｘｔ　ｅｎｔｒｙ）」のコマンドをストリーミングモジュール１４４に通信することによって、あるいは、単にそのコンテンツがキャッシュから取得できる場合でも、現在のコンテンツをストリーミングモジュール１４４からストリーミングさせることによって、行うことができる（ストリーミングモジュール１４４は、現在のコンテンツの最後に達すると次のコンテンツのストリーミングを開始する時間であることを知る）。
【００５６】
ストリーミングメディアコンテンツをキャッシングすることにより、ユーザが各種のシャトルコントロールオプション（例えば停止、一時停止、早送り、シーク、巻き戻しなど）を選択した場合でもコンテンツのストリーミングを継続することも可能になる。ストリーミングメディアプレーヤ１４２は、プレーヤ１４２のユーザにシャトルコントロールオプションが利用できるようにし、それによりユーザが必要に応じてストリーミングモジュール１４４の再生を制御できるようにする。ユーザが特定のシャトルコントロールコマンドを入力した際、ストリーミングメディアプレーヤ１４２の振る舞いは、入力されたコマンドに応じて異なる。ただし、多くの場合、ストリーミングメディアプレーヤ１４２は、ストリーミングモジュール１４４からのメディアコンテンツのストリーミングを継続する。
【００５７】
ユーザが停止コマンドを入力した場合、ストリーミングメディアプレーヤ１４２は、ストリーミングメディアコンテンツの再生を中止するが、ストリーミングモジュール１４４からのコンテンツのストリーミングとキャッシュを継続する。同様に、ユーザが一時停止コマンドを入力した場合、ストリーミングメディアプレーヤ１４２は、ストリーミングメディアコンテンツの再生を一時停止するが、ストリーミングモジュール１４４からのコンテンツのストリーミングとキャッシングを継続する。さらに、ユーザが巻き戻しコマンドを入力した場合は、ストリーミングメディアプレーヤ１４２は、ストリーミングメディアコンテンツの巻き戻しを開始するが、引き続きストリーミングモジュール１４４からコンテンツをストリーミングし、キャッシュする。さらに、ユーザが早送りコマンドを入力した場合は、ストリーミングメディアプレーヤ１４２は、すでにキャッシュされたコンテンツ部分を通じてストリーミングメディアコンテンツの早送りを開始し、必要な範囲までコンテンツをストリーミングし、キャッシュし続ける。
【００５８】
図５に、サーバからクライアントにメディアコンテンツをストリーミングし、同時にシャトルコントロールコマンドを受け取る例示的プロセス２３０を説明するフローチャートを示す。プロセス２３０は、図２のクライアントデバイス１０２のストリーミングメディアプレーヤ１４２など、クライアントデバイスのストリーミングメディアプレーヤによって実施され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実行することができる。
【００５９】
初めに、ストリーミングメディアコンテンツの再生に係わるシャトルコントロール要求をストリーミングメディアプレーヤで受け取る（動作２３２）。ストリーミングメディアプレーヤは、要求に従ってストリーミングメディアコンテンツの再生を変える（動作２３４）が、ストリーミングメディアコンテンツの受信を継続する（動作２３６）。ストリーミングメディアプレーヤは、ユーザアクションを詳述する以後のログ提出を除いてはシャトルコントロールコマンドをサーバデバイスに知らせる必要はなく、通例は指示しないことに留意されたい。
【００６０】
また、ユーザがシャトルコントロールコマンドを使用してストリーミングメディアコンテンツの再生をナビゲート（操縦）または制御する能力は、特定のコンテンツ（あるいは特定コンテンツの一部）に対しては制限されることもある。例えば、ユーザは、ストリーミングメディアコンテンツの特定の部分（例えば広告）では早送りできない場合がある。そのような制限の指示は、ストリーミングモジュール１４４からストリーミングメディアプレーヤによって受信され、ストリーミングメディアコンテンツとともにキャッシュされる。したがって、キャッシュからストリーミングメディアコンテンツを再生する際には、そのような制限も実施される。
【００６１】
ストリーミングメディアコンテンツをキャッシュすることにより、さらに、後の時間に再生するためにコンテンツを記録することが可能になる。コンテンツの少なくとも一部は、コンテンツがストリーミングされ、キャッシュされるのと同時にユーザに対して再生することができ、あるいは、コンテンツのどの部分も後の時間まで再生しないことも可能である（例えば、コンテンツのキャッシングが完了してからしばらく経ってから再生するなど）。例えば、ユーザは、複数のストリーミングメディアコンテンツをキャッシュする要求をストリーミングメディアプレーヤ１４２に入力し、後の時間（例えば同じ日の後の時間、翌日、翌週、翌月など）にそれらのコンテンツを再生することができる。そのような要求は、例えば具体的な「コンテンツのキャッシュ」要求であるか、あるいは単に再生要求である。ストリーミングメディアプレーヤ１４２は、そのような要求を受信すると、ストリーミングモジュール１４４と通信して、ストリーミングメディアプレーヤ１４２がユーザのためにそのコンテンツを再生する場合と同じ方式で、要求されたコンテンツをストリーミングさせる。ただし、コンテンツをクライアントデバイス１０２で受信した場合は、ストリーミングメディアプレーヤ１４２は、そのコンテンツを不揮発性記憶装置１５０にキャッシュし、（ユーザから要求されない限りは）そのコンテンツをその時間には再生しない。ユーザが後にそのコンテンツの再生を要求すると、ストリーミングメディアプレーヤ１４２は、そのコンテンツをキャッシュメモリから入手する（ただし、コンテンツの期限が切れていないことを前提とする。または、コンテンツの期限が切れている場合はコンテンツが変更されていないことを前提とする）。
【００６２】
ストリーミングメディアコンテンツをキャッシュすることにより、さらに、時間をずらしたストリーミングメディアコンテンツの再生が可能になる。時間をずらした再生では、ユーザは、ストリーミングと同時にストリーミングコンテンツをナビゲートし、制御することができる（例えば一時停止、巻き戻し、早送りなどのコマンドの入力により）。例えば、ユーザはストリーミングメディアコンテンツの再生を特定の位置で一時停止し、数分後にその位置から再生を再開することができ、再生が一時停止されていた間にさらなるコンテンツがクライアントデバイス１０２にストリーミングされていても、再生はなおユーザが再生を一時停止した位置から再開する。別の例として、ユーザは、コンテンツのある部分をもう一度（あるいはさらに複数回）見るために、ストリーミング中にストリーミングメディアコンテンツを巻き戻すことができる。ユーザが例えば３分だけコンテンツを巻き戻した場合、ユーザはその３分間をもう一度見ることができ、その３分間分先行するコンテンツが再度再生されていた間にさらなるコンテンツがクライアントデバイス１０２にストリーミングされていても、再生は、ユーザが巻き戻しコマンドを入力したコンテンツ中の時点から（再生にユーザが気づくような中断を生じずに）継続する。
【００６３】
図６に、後に再生するためにストリーミングメディアコンテンツを記録する例示的プロセス２６０を説明するフローチャートを示す。プロセス２６０は、図２のクライアントデバイス１０２のストリーミングメディアプレーヤ１４２など、クライアントデバイスのストリーミングメディアプレーヤによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで行うことができる。
【００６４】
初めに、サーバからストリーミングメディアコンテンツを受信する（動作２６２）。受信したストリーミングメディアコンテンツは、クライアントデバイスのキャッシュにローカルに記憶する（動作２６４）。ストリーミングメディアコンテンツを再生する要求を後の時間に受け取る（動作２６６）が、これはメディアコンテンツのストリーミングが完了した後でも、完了しない時点でもよい。再生要求に応答して、ローカルに保存されたストリーミングメディアコンテンツを再生する（動作２６８）。
【００６５】
また、ストリーミングメディアプレーヤ１４２がストリーミングメディアコンテンツを再生する際には、通例、ストリーミングメディアプレーヤ１４２からストリーミングモジュール１４４に各種のロギング情報が返送される。ストリーミングメディアプレーヤ１４２がストリーミングモジュール１４４ではなくクライアントデバイス１０２のキャッシュからストリーミングメディアコンテンツを取得する状況でも、このロギング情報をストリーミングモジュール１４４に返送しなければならない。ロギング情報は、ストリーミングメディアプレーヤ１４２がコンテンツの再生に費やした時間量、複数回再生されたコンテンツ部分、スキップされたコンテンツ部分、コンテンツの再生が一時停止されたか、もしそうであればコンテンツ中のどの点で一時停止が行われたか、ストリームコンテンツを受信したネットワーク接続に伴う問題など、各種の情報を含むことができる。
【００６６】
ロギング情報は、各種の異なる方式でサーバデバイス１４６に通信することができる。一実装では、追従のヘッダを使用してメッセージを送信して、メッセージ本体（図３の本体１８８）にロギング情報が含まれることを知らせる。
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：ａｐｐｌｉｃａｔｉｏｎ／ｘ−ｗｍｓ−ｓｅｎｄｅｖｅｎｔ
【００６７】
ただし、この代わりに異なるヘッダを送信してもよい。このメッセージは、例えば、ＲＴＳＰのＳＥＴ＿ＰＡＲＡＭＥＴＥＲメッセージ、またはＨＴＴＰのＰＯＳＴメッセージなどである。
【００６８】
すべてのストリーミングメディアコンテンツがクライアントデバイス１０２でキャッシュ可能であるとは限らないことに留意されたい。ストリーミングメディアコンテンツをクライアントデバイス１０２でキャッシュしない様々な状況がありうる。こうした状況には、例えば、サーバデバイスがキャッシングをサポートしない状況、コンテンツ作成者または配信者が特定のコンテンツをキャッシュすべきでないことを知らせている状況、クライアントデバイス１０２のユーザによってキャッシングが使用禁止にされている状況などがある。さらに、一部の実施形態では、ブロードキャストコンテンツなど特定のコンテンツはキャッシュするべきでないとしている（他の実施形態ではブロードキャストコンテンツをキャッシュすることができる）。ストリーミングメディアプレーヤ１４２は、特定のコンテンツをキャッシュすべきでないと判定した場合、そのコンテンツをキャッシュしない。
【００６９】
一実装では、ストリーミングメディアプレーヤ１４２がストリーミングモジュール１４４からコンテンツをストリーミングするように要求すると、ストリーミングモジュール１４４は、要求されたコンテンツのキャッシングがストリーミングモジュール１４４によってサポートされるかどうかの通知を返送する。この指示はメッセージヘッダ（例えば図３のヘッダ１８４）に含めることができ、「サポート（ｓｕｐｐｏｒｔｅｄ：支援）」ヘッダと称する。サポートヘッダ中の指示の一例を次に示す。
ｃｏｍ．ｍｉｃｒｏｓｏｆｔ．ｗｍ．ｆａｓｔｃａｃｈｅ
【００７０】
ただし、これに代えて他のヘッダを使用することもできる。このサポートヘッダがあるということは、ストリーミングモジュール１４４がクライアントデバイス１０２のキャッシングをサポート（支援）するということを示しており、それでストリーミングモジュール１４４は、例えば、メディアコンテンツを符号化ビットレートに依存しないレートでストリーミングし、キャッシュされたコンテンツについてのロギング情報を受信することなどを可能にする。このサポートヘッダがない場合は、ストリーミングメディアプレーヤ１４２は、メッセージに関連のストリーミングメディアコンテンツをキャッシュしない。
【００７１】
さらに、特定の部分のストリーミングメディアコンテンツのキャッシングを制御するのに、各種のキャッシュ制御指示を使用することができる。キャッシュ制御ヘッダは、キャッシュマネジャ１５２（また、キャッシュメモリを含むプロキシサーバなどの任意の仲介デバイス）が、関連のストリーミングメディアコンテンツのキャッシングをどのように処理するかを記述する情報を含む。キャッシュ制御ヘッダは、そのメッセージを受け取るすべてのキャッシング機構が従うべき指示を指定するのに使用される。ここでは述べないが、追加的なキャッシュ制御指示（例えば従来のＨＴＴＰまたはＲＴＳＰのキャッシュ制御指示）をキャッシュ制御ヘッダに含めてもよい。
【００７２】
使用するプロトコルに応じて、ストリーミングメディアプレーヤだけが関連のコンテンツをキャッシュできることを示すキャッシュ制御指示を含めてもよいし、含めなくともよい。ストリーミング媒体および非ストリーミング媒体（例えばＨＴＴＰ）両方に向けて設計されたプロトコルには、通例、ストリーミングメディアプレーヤ（一般的なＨＴＴＰコンポーネント（例えばウェブブラウザ）やプロキシデバイスではない）が関連のコンテンツをキャッシュできることを示す指示を使用する。ただし、ストリーミング媒体用に特に設計されたプロトコル（例えばＲＴＳＰ）には、ストリーミングメディアプレーヤだけが関連のコンテンツをキャッシュできるという指示は必要ない（したがって通例は使用しない）。
【００７３】
下記の表Ｉに、例示的なキャッシュ制御指示と、ストリーミング媒体用に特に設計されたプロトコル（例えばＲＴＳＰ）とでキャッシングが可能かどうかを示す。表ＩＩは、例示的なキャッシュ制御指示と、ストリーミング媒体向けでないプロトコル（例えばＨＴＴＰ）でキャッシングが可能かどうかを示す。
【００７４】
【表１】
2004054930.tif 000003
【００７５】
【表２】
2004054930.tif 000004
【００７６】
表ＩＩで、「ｕｓｅｒ−ｐｕｂｌｉｃ」の指示は、ストリーミングメディアプレーヤ１４２によって、関連のコンテンツをキャッシュできるものと理解されたく、また「ｎｏ−ｃａｃｈｅ」の指示を無効にするということに留意されたい。ただし、「ｕｓｅｒ−ｐｕｂｌｉｃ」の指示が含まれない場合は、「ｎｏ−ｃａｃｈｅ」の指示により、関連のコンテンツをキャッシュできないことがストリーミングメディアプレーヤ１４２に示される。さらに、一般的なＨＴＴＰキャッシュまたはプロキシデバイスは、「ｕｓｅｒ−ｐｕｂｌｉｃ」の指示を理解せず、したがって単に「ｎｏ−ｃａｃｈｅ」指示に従い、コンテンツをキャッシュしない。
【００７７】
特定の部位のコンテンツをキャッシュするかどうかを判定する際には、各種の他の要因も絡む可能性がある。一実装では、ＵＲＬ（Ｕｎｉｆｏｒｍ　Ｒｅｓｏｕｒｃｅ　Ｌｏｃａｔｏｒ）などのストリーミングメディアコンテンツ識別子が、コンテンツでのキャッシュが可能である、あるいは可能でないことを示す指示を含むことができる。例えば、値「？ＷＭＣａｃｈｅ＝０」を使用して、コンテンツのキャッシングを行わないことを示し、値「？ＷＭＣａｃｈｅ＝１」を使用してコンテンツのキャッシングを行うことを示すことができる。別の実装では、ストリーミングメディアプレーヤ１４２は、ユーザがストリーミングメディアコンテンツのクライアントでのキャッシングを明確に使用禁止にすることを可能にし、それに応じて、ストリーミングメディアコンテンツがストリーミングメディアプレーヤ１４２によってキャッシュされないこととなる。さらに別の実装では、ストリーミングメディアプレーヤ１４２は、どのストリーミングメディアコンテンツもキャッシュしないことを決定することができる（例えば、ストリーミングメディアプレーヤ１４２は、コンテンツをキャッシングするのに十分な記憶空間がない、あるいはコンテンツをそのキャッシュから再生した回数が閾値回数を下回るため、以降受信するストリーミングメディアコンテンツをキャッシュしないと決定することなどができる）。さらに別の実装では、特定タイプのストリーミングメディアコンテンツのみをキャッシュすることができる（例えばオンデマンドコンテンツはキャッシュ可能であるが、ブロードキャストコンテンツはキャッシュ可能でないなど）。
【００７８】
また、ストリーミングメディアプレーヤ１４２が、あるストリーミングメディアコンテンツをキャッシュすると決定した場合、そのキャッシングのために任意選択で各種の制約をストリーミングメディアプレーヤに課すことができる。例えば、そのコンテンツをキャッシュする場合にはストリームの間引き（ｔｈｉｎｎｉｎｇ）（例えば、帯域幅を節減するためにサーバデバイスからストリーミングするフレーム数を減らすなど）を要求しないようにストリーミングメディアプレーヤ１４２を設定することができる。
【００７９】
図７に、クライアントデバイスでストリーミングメディアコンテンツをキャッシュする例示的プロセス３００を説明するフローチャートを示す。プロセス３００は、図２のクライアントデバイス１０２のストリーミングメディアプレーヤ１４２などクライアントデバイスのストリーミングメディアプレーヤによって実施され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実行することができる。
【００８０】
初めに、サーバデバイスからストリーミングメディアコンテンツを受信する（動作３０２）。プロセス３００は、そのストリーミングメディアコンテンツのキャッシングが可能であるかどうか（動作３０４）に基づいて進行する。キャッシングが可能である場合はコンテンツを不揮発性の記憶装置に保存し（動作３０６）、ストリーミングメディアコンテンツを再生が可能な状態にする（動作３０８）。動作３０８でそのストリーミングメディアコンテンツをキャッシュした場合には、そのコンテンツのストリーミングと同時に、かつ／または後の時間に再生可能な状態にできることに留意されたい。ただしキャッシングが可能でない場合は、単にストリーミングメディアコンテンツを再生可能な状態とし（動作３０８）、すなわちキャッシュしない場合には、そのコンテンツは再度ストリーミングしなければ後の時間に再生することができない。
【００８１】
図８Ａおよび８Ｂは、クライアントデバイスでストリーミングメディアコンテンツをキャッシュするかどうかを判定する例示的プロセス３３０を説明するフローチャートである。プロセス３３０は、図２のクライアントデバイス１０２のストリーミングメディアプレーヤ１４２など、クライアントデバイスのストリーミングメディアプレーヤによって実施され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実行することができる。
【００８２】
初めに、ストリーミングメディアプレーヤは、サーバデバイスから取得可能なストリーミングメディアコンテンツにアクセスすることを試み（図８Ａの動作３３６）、サーバデバイスからそのストリーミングメディアコンテンツのヘッダ情報を取得する（動作３３８）。ストリーミングメディアプレーヤは次いで、ユーザがストリーミングメディアコンテンツのクライアントでのキャッシングを使用禁止にしているかどうかを調べる（動作３４０）。ユーザがストリーミングメディアコンテンツのクライアントでのキャッシングを使用禁止にしている場合は、クライアントでストリーミングメディアコンテンツをキャッシュメモリに入れない（動作３４２）。ただし、ユーザがストリーミングメディアコンテンツのクライアントでのキャッシングを使用禁止にしていない場合は、ストリーミングメディアプレーヤは、ストリーミングメディアコンテンツの識別子にそのコンテンツがキャッシングしないと示されているかどうかを調べる（動作３４４）。キャッシングしないと示されている場合は、ストリーミングメディアコンテンツをクライアントでキャッシュしない（動作３４２）。
【００８３】
ただし、ストリーミングメディアコンテンツの識別子にそのコンテンツがキャッシングしないと示されていない場合は、ストリーミングメディアプレーヤは、そのストリーミングメディアプレーヤが、ストリーミングメディアコンテンツのクライアントでのキャッシングを使用禁止にしているかどうかを調べる（動作３４６）。使用禁止にしている場合には、ストリーミングメディアコンテンツをクライアントでキャッシュメモリに入れない（動作３４２）。使用禁止でない場合には、ストリーミングメディアプレーヤは、ストリーミングメディアコンテンツ識別子がコンテンツビットレートの変更子を含むかどうかを調べる（動作３４８）。
【００８４】
コンテンツビットレートの変更子が含まれる場合には、ストリーミングメディアプレーヤは、そのコンテンツビットレート変更子の値を超えない最高のビットレートを有するストリームのセットを選択する（図８Ｂの動作３５２）。コンテンツビットレートの変更子が含まれない場合には、ストリーミングメディアプレーヤは、リンク帯域幅とも称するクライアントとサーバ間の帯域幅に基づいてストリームのセットを選択する（図８Ｂの動作３５０）。
【００８５】
ストリームを選択すると、ストリーミングメディアプレーヤは、ストリーミングメディアコンテンツの識別子がそのコンテンツをキャッシュすべきと示しているかどうかに基づいて進行する（動作３５４）。キャッシュすべきと示されていない場合には、ストリーミングメディアプレーヤは、リンク帯域幅が、選択したストリームのビットレートの合計の１．５倍を超えるか、または選択したストリームのビットレートの合計の０．９倍未満であるかどうかを調べる（動作３５６）。あるいは、動作３５６では１．５および０．９以外の値を使用してもよい。リンク帯域幅が、選択したストリームのビットレート合計の１．５倍を超えないか、または選択したストリームのビットレート合計の０．９倍未満でない場合には、クライアントでストリーミングメディアコンテンツをキャッシュしない（図８Ａの動作３４２）。ただし、リンク帯域幅が、選択したストリームのビットレート合計の１．５倍を超えるか、または、選択したストリームのビットレート合計の０．９倍未満である場合には、ストリーミングメディアプレーヤは、選択したプロトコルがストリーミングメディアコンテンツのクライアントでのキャッシングをサポートするかどうかを調べる（動作３５８）。例示的な一実装では、ＴＣＰ（伝送制御プロトコル）によるデータ配信を使用したＨＴＴＰ１．１およびＲＴＳＰで、ストリーミングメディアコンテンツのクライアントでのキャッシングがサポートされる。
【００８６】
プロトコルがストリーミングメディアコンテンツのクライアントでのキャッシングをサポートしない場合には、ストリーミングメディアコンテンツをクライアントでキャッシュしない（図８Ａの動作３４２）。プロトコルがストリーミングメディアコンテンツのクライアントでのキャッシングをサポートする場合、またはストリーミングメディアコンテンツの識別子がコンテンツをキャッシュすべきであると示す（動作３５４）場合には、ストリーミングメディアプレーヤは、サーバがクライアントでのキャッシングを許可するかどうかを調べる（動作３６０）。サーバがクライアントでのキャッシングを許可しない場合には、ストリーミングメディアコンテンツをクライアントでキャッシュしない（図８Ａの動作３４２）。ただしサーバでクライアントでのキャッシングが可能であるとしている場合には、ストリーミングメディアコンテンツを入れるだけの空間がキャッシュメモリにあるかどうかを調べる（動作３６２）。ストリーミングメディアコンテンツをキャッシュするのに必要な空間量は、例えば図８Ａの動作３３８で受信するヘッダ情報で識別することができる。必要な場合にはすでにキャッシュされているコンテンツを任意選択でキャッシュメモリから追い出して十分な空間を作成することもできる。キャッシュメモリに十分な空間がない場合には、ストリーミングメディアコンテンツをクライアントでキャッシュしない（図８Ａの動作３４２）。ただしキャッシュするのに十分な空間がある場合には、ストリーミングメディアコンテンツをクライアントでキャッシュする（動作３６４）。
【００８７】
ストリーミングメディアコンテンツがブロードキャストコンテンツである場合など、状況によっては、コンテンツのサイズが分からない場合には、そのためそのコンテンツのすべてに十分な空間がキャッシュにあるかどうかの判定（動作３６２）を行わない場合があることに留意されたい。そのような状況では、単にキャッシュにそれ以上コンテンツを入れるだけのメモリ空間がなくなるまでコンテンツをキャッシュして、空間がなくなった時点でストリーミングメディアコンテンツのキャッシングをやめるようにしてもよい。あるいは、図８Ａの動作３３８で受信するヘッダ情報に入れるなどにより、ストリーミングメディアコンテンツのおよそのサイズをストリーミングメディアプレーヤが取得できるようにしてもよい（例えば、予測されるブロードキャスト継続時間や、ブロードキャストストリーミングメディアコンテンツの符号化ビットレートなどからブロードキャストコンテンツのおよそのサイズを容易に判定することができる）。
【００８８】
図８Ａおよび８Ｂのプロセス３３０は、クライアントデバイスにストリーミングメディアコンテンツをキャッシュするかどうかを判定する例示的なプロセスであり、プロセス３３０には色々な修正を加えてよいことにも留意されたい。例えば、ブロードキャストコンテンツをキャッシュしない実施形態では、コンテンツがブロードキャストコンテンツであるかどうかを調べ、ブロードキャストコンテンツである場合にはコンテンツをキャッシュしない（動作３４２）ように、追加的な動作をプロセス３３０に含めることができる。別の実施形態では、コンテンツ識別子がコンテンツをキャッシュすべきと指示しているかどうかを調べることができ、キャッシュすべきとの場合は、その指示が他のデフォルト設定に優先することができる（例えば、デフォルトではブロードキャストコンテンツをキャッシュしないが、キャッシュが可能というコンテンツ識別子中の指示によってそれを無効にすることができる）。さらに別の実施形態では、ユーザはクライアントでのキャッシングを使用禁止にすることが許されず、したがって動作３４０をプロセス３３０に含める必要がない。さらに別の実施形態では、コンテンツをキャッシュすべきかどうかをコンテンツ識別子で示すことができず、したがって動作３４４をプロセス３３０に含める必要がない。
【００８９】
本明細書には各種のプロセスをフローチャートの形で例示している。これらのプロセスに伴う動作は、フローチャートに示す順序で行っても、あるいは別の順序で行ってもよいことに留意されたい。例えば図８Ａおよび８Ｂでは、動作を図の順序で行っても、あるいは動作３６０または動作３６２を動作３４０より前に行っても、動作３４６を動作３４４の前に行ってもよい。
【００９０】
図９に、本明細書に記載された本発明に係わる技術を実施するのに使用できる例示的な一般的コンピューティング環境４００を示す。コンピュータ環境４００はコンピューティング環境の一例に過ぎず、このコンピュータおよびネットワークアーキテクチャの使用または機能性の範囲について何らの制限を示唆するものではない。またコンピュータ環境４００は、例示的コンピュータ環境４００に示す構成要素の任意の１つまたは組合せに関連する依存関係または必要性を有するものとも解釈すべきでない。
【００９１】
コンピュータ環境４００は、コンピュータ４０２の形態の汎用コンピューティングデバイスを含む。コンピュータ４０２は、例えば図１のクライアント１０２またはサーバ１０４、または図２のクライアント１０２またはサーバ１４６である。コンピュータ４０２の構成要素には、これらに限定しないが、１つまたは複数のプロセッサまたは処理装置４０４、システムメモリ４０６、およびプロセッサ４０４を含む各種のシステムコンポーネントをシステムメモリ４０６に結合するシステムバス４０８が含まれる。
【００９２】
システムバス４０８は、各種のバスアーキテクチャの任意のものを使用したメモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックポート（ＡＧＰ）、およびプロセッサバスまたはローカルバスを含む数タイプのバス構造の任意の１つまたは複数を表す。例として、このようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ　Ｃｈａｎｎｅｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ　ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ　Ｅｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｉｏｎ）バス、およびメザニンバスとも称されるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バスが含まれる。
【００９３】
コンピュータ４０２は通例各種のコンピュータ可読媒体を含む。そのような媒体は、コンピュータ４０２がアクセスできる任意の利用可能媒体でよく、揮発性および不揮発性の媒体、取り外し可能および取り外し不能媒体が含まれる。
【００９４】
システムメモリ４０６は、ランダムアクセスメモリ（ＲＡＭ）４１０などの揮発性メモリの形態と、および／または読み取り専用メモリ（ＲＯＭ）４１２など不揮発性メモリの形態のコンピュータ可読媒体を含む。起動時などにコンピュータ４０２内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）４１４は、ＲＯＭ４１２に記憶される。ＲＡＭ４１０は通例、処理装置４０４から即座にアクセス可能な、かつ／または現在処理装置４０４によって操作中のデータおよび／またはプログラムモジュールを含む。
【００９５】
コンピュータ４０２は、この他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。例として、図９には、取り外し不能、不揮発性の磁気媒体（図示せず）の読み取りおよび書き込みを行うハードディスクドライブ４１６、取り外し可能、不揮発性の磁気ディスク４２０（例えば「フロッピー（登録商標）ディスク」）の読み取りおよび書き込みを行う磁気ディスクドライブ４１８、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、あるいは他の光媒体などの取り外し可能、不揮発性の光ディスク４２４の読み取りおよび書き込みを行う光ディスクドライブ４２２を示す。ハードディスクドライブ４１６、磁気ディスクドライブ４１８、および光ディスクドライブ４２２はそれぞれ、１つまたは複数のデータメディアインタフェース４２５によってシステムバス４０８に接続される。あるいは、ハードディスクドライブ４１６、磁気ディスクドライブ４１８、および光ディスクドライブ４２２は、１つまたは複数のインタフェース（図示せず）によってシステムバス４０８に接続することもできる。
【００９６】
これらのディスクドライブとそれに関連のコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ４０２のその他のデータの不揮発性の記憶を提供する。この例示としてハードディスク４１６、取り外し可能磁気ディスク４２０、および取り外し可能光ディスク４２４を図示しているが、これ以外に、磁気カセットまたはその他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）またはその他の光ストレージ、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的に消去可能なプログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）など、データを記憶することができ、コンピュータによるアクセスが可能な他のタイプのコンピュータ可読媒体をこの例示的コンピューティングシステムおよび環境の実装に利用できることも理解されたい。
【００９７】
ハードディスク４１６、磁気ディスク４２０、光ディスク４２４、ＲＯＭ４１２、および／またはＲＡＭ４１０には任意数のプログラムモジュールを格納することができ、この例には、オペレーティングシステム４２６、１つまたは複数のアプリケーションプログラム４２８、その他のプログラムモジュール４３０、およびプログラムデータ４３２が含まれる。そのようなオペレーティングシステム４２６、１つまたは複数のアプリケーションプログラム４２８、他のプログラムモジュール４３０、およびプログラムデータ４３２（またはこれらの何らかの組合せ）はそれぞれ、分散ファイルシステムをサポートする常駐コンポーネントのすべてまたは一部を実装することができる。
【００９８】
ユーザは、キーボード４３４やポインティングデバイス４３６（例えば「マウス」）などの入力装置を介して、コンピュータ４０２にコマンドと情報を入力することができる。この他の入力装置４３８（具体的には図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、シリアルポート、スキャナなどがある。これらおよびその他の入力装置は、システムバス４０８に結合された入出力インタフェース４４０を介して処理装置４０４に接続されるが、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス（ＵＳＢ）など、他のインタフェースおよびバス構造によって接続することもできる。
【００９９】
モニタ４４２またはその他のタイプの表示装置もビデオアダプタ４４４などのインタフェースを介してシステムバス４０８に接続することができる。モニタ４４２以外の他の出力周辺装置には、入出力インタフェース４４０を介してコンピュータ４０２に接続できるスピーカ（図示せず）やプリンタ４４６などのコンポーネントが含まれる。
【０１００】
コンピュータ４０２は、遠隔コンピュータ装置４４８など１つまたは複数の遠隔コンピュータへの論理結合を使用するネットワーク環境で動作することができる。例として、遠隔コンピュータ装置４４８は、パーソナルコンピュータ、携帯型コンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、あるいはその他の一般的なネットワークノードなどである。遠隔コンピュータ装置４４８は、ここでコンピュータ４０２との関連で挙げた要素および機能の多くまたはすべてを含むことが可能な携帯型コンピュータとして図示している。
【０１０１】
コンピュータ４０２と遠隔コンピュータ４４８間の論理接続は、ローカルエリアネットワーク（ＬＡＮ）４５０および一般的な広域ネットワーク（ＷＡＮ）４５２として図示している。このようなネットワーク環境は、オフィス、企業内のコンピュータネットワーク、イントラネット、およびインターネットに一般的に見られる。
【０１０２】
ＬＡＮネットワーク環境で実装する場合、コンピュータ４０２は、ネットワークインタフェースまたはアダプタ４５４を介してローカルネットワーク４５０に接続される。ＷＡＮネットワーク環境で実装する場合、コンピュータ４０２は通例、広域ネットワーク４５２を通じて通信を確立するためのモデム４５６またはその他の手段を含む。モデム４５６は、コンピュータ４０２の内部にあっても外部にあってもよく、入出力インタフェース４４０またはその他の適切な機構を介してシステムバス４０８に接続することができる。図のネットワーク接続は例示的なものであり、コンピュータ４０２と４４８の間に通信リンクを確立することのできる他の手段を用いてもよいことを理解されたい。
【０１０３】
コンピューティング環境４００で示すようにネットワークされた環境では、コンピュータ４０２との関連で図に示すプログラムモジュールまたはその一部は、遠隔のメモリ記憶装置に格納することができる。例として、リモートアプリケーションプログラム４５８が遠隔コンピュータ４４８のメモリ装置に常駐している。例示のために、アプリケーションプログラムおよびオペレーティングシステムなどのその他の実行可能なプログラムコンポーネントをここでは別個のブロックとして表しているが、そのようなプログラムおよびコンポーネントは、様々な時にコンピューティングデバイス４０２の別々のストレージコンポーネント（記憶構成要素）に常駐し、コンピュータのデータプロセッサによって実行されることが分かる。
【０１０４】
ここでは各種のモジュールおよび技術を、１つまたは複数のコンピュータまたは他のデバイスによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。通例、プログラムモジュールの機能は、各種の実施形態で必要に応じて組み合わせても分散させてもよい。
【０１０５】
こうしたモジュールおよび技術の実装は、何らかの形態のコンピュータ可読媒体に格納しても、そうしたコンピュータ可読媒体を通じて送信してもよい。コンピュータ可読媒体は、コンピュータによるアクセスが可能な任意の利用可能媒体でよい。例として、これに限定しないが、コンピュータ可読媒体は、「コンピュータ記憶媒体」と「通信媒体」を含むことができる。
【０１０６】
「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造、プログラムモジュール、あるいは他のデータなどの情報を記憶するための任意の方法または技術で実行される、揮発性および不揮発性、取り外し可能および取り外し不能の媒体が含まれる。コンピュータ記憶媒体には、これらに限定しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）またはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他の磁気記憶装置、あるいは所望の情報の記憶に使用することができ、コンピュータによってアクセスできる任意の他の媒体が含まれる。
【０１０７】
「通信媒体」は通例、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを搬送波やその他の移送機構などの変調データ信号で具現化する。通信媒体には、任意の情報伝達媒体も含まれる。用語「変調データ信号」とは、信号中に情報を符号化するような形でその特性の１つまたは複数を設定または変化させた信号を意味する。例として、通信媒体には、これらに限定しないが、配線ネットワークや直接配線接続などの配線媒体と、音響、ＲＦ（無線周波数）、赤外線、その他の無線媒体などの無線媒体が含まれる。上記の媒体の組合せもコンピュータ可読媒体の範囲に含まれる。
【０１０８】
上記の説明では、構造的特徴および／または方法論的な動作に固有の術語を使用しているが、頭記の特許請求の範囲に定義する本発明はここに記載する特定の特徴または動作に限定されないことを理解されたい。それら特定の特徴および動作は、本発明を実施する例示的形態として開示する。
【図面の簡単な説明】
【図１】ストリーミングメディアコンテンツのクライアント側でのキャッシングを用いることができる例示的なネットワーク環境を示す図である。
【図２】例示的なクライアントデバイスおよびサーバデバイスを示す図である。
【図３】ストリーミングメディアデータを通信する際に使用できる例示的なメッセージフォーマットを示す図である。
【図４】サーバからクライアントにメディアコンテンツをストリーミングする例示的プロセスを示すフローチャートである。
【図５】サーバからクライアントにメディアコンテンツをストリーミングするのと同時に、シャトルコントロールコマンドを受け付ける例示的プロセスを示すフローチャートである。
【図６】後の再生のためにストリーミングメディアコンテンツを記録する例示的プロセスを示すフローチャートである。
【図７】クライアントデバイスにストリーミングメディアコンテンツをキャッシュする例示的プロセスを示すフローチャートである。
【図８Ａ】ストリーミングメディアコンテンツをクライアントデバイスにキャッシュするかどうかを判定する例示的プロセスを示すフローチャートである。
【図８Ｂ】ストリーミングメディアコンテンツをクライアントデバイスにキャッシュするかどうかを判定する例示的プロセスを示すフローチャートである。
【図９】本発明に係わる技術を実施するのに使用できる例示的な一般的コンピュータ環境を示す図である。
【符号の説明】
１００　ネットワーク環境
１０２（１）、１０２（２）、１０２（ｘ）　クライアントデバイス
１０４（１）、１０４（２）、１０４（ｘ）　オリジンサーバデバイス
１０６　ネットワーク
１０８　キャッシングプロキシサーバ
１４２　ストリーミングメディアプレーヤ
１４４　ストリーミングモジュール
１４６　ソースサーバデバイス
１４８　コンテンツファイル
１５０　不揮発性記憶装置（キャッシュメモリ）
１５２　キャッシュマネジャ
１８０　データ構造
１８２　スタートライン部分
１８４　ヘッダ
１８６　空のライン
１８８　メッセージ本体
４００　コンピュータ環境
４０２　コンピュータ
４０４　処理装置
４０６　システムメモリ
４０８　システムバス
４１０　ＲＡＭ
４１２　ＲＯＭ
４１４　ＢＩＯＳ
４１６　ハードディスクドライブ
４１８　磁気ディスクドライブ
４２０　磁気ディスク
４２２　光ディスクドライブ
４２４　光ディスク
４２５　データメディアインタフェース
４２６　オペレーティングシステム
４２８　アプリケーションプログラム
４３０　プログラムモジュール
４３２　プログラムデータ
４３４　キーボード
４３６　ポインティングデバイス（マウス）
４３８　他の入力装置（他のデバイス）
４４０　入出力インターフェース
４４２　モニタ
４４４　ビデオアダプタ
４４６　プリンタ
４４８　遠隔コンピュータ装置
４５０　ＬＡＮ
４５２　ＷＡＮ（インターネット）
４５６　モデム
４５８　リモートアプリケーションプログラム
【図１】
2004054930.tif 000005
【図２】
2004054930.tif 000006
【図３】
2004054930.tif 000007
【図４】
2004054930.tif 000008
【図５】
2004054930.tif 000009
【図６】
2004054930.tif 000010
【図７】
2004054930.tif 000011
【図８Ａ】
2004054930.tif 000012
【図８Ｂ】
2004054930.tif 000013
【図９】
2004054930.tif 000014