(58)【調査した分野】(Int.Cl.,DB名)
前記第3のストリーミングセグメントを提供するステップが、前記第2のストリーミングセグメントの識別子に合致するように前記第3のストリーミングセグメントの識別子を修正するステップをさらに含む請求項1に記載の方法。
前記第3のストリーミングセグメントを提供するステップが、前記第3のストリーミングセグメントのデータファイルを前記クライアントデバイスに送信するステップを含む請求項1に記載の方法。
前記クライアントデバイスへの前記第3のストリーミングセグメントの前記データファイルの送信前に、前記第2のストリーミングセグメントのデータファイルのメタデータに合致するように前記第3のストリーミングセグメントの前記データファイルのメタデータを修正するステップをさらに含む請求項4に記載の方法。
前記ストリームコントローラが、前記第2のストリーミングセグメントの識別子に合致するように前記第3のストリーミングセグメントの識別子を修正するようにさらに構成される請求項10に記載のシステム。
前記ネットワークインターフェースが、前記第3のストリーミングセグメントのデータファイルを前記クライアントデバイスに送信するようにさらに構成される請求項10に記載のシステム。
前記ストリームコントローラが、前記クライアントデバイスへの前記第3のストリーミングセグメントの前記データファイルの送信前に、前記第2のストリーミングセグメントのデータファイルのメタデータに合致するように前記第3のストリーミングセグメントの前記データファイルのメタデータを修正するようにさらに構成される請求項13に記載のシステム。
前記ストリーミングサーバが、前記コンテンツ選択フラグを求める前記要求を前記コンテンツプロバイダに所定の周波数において送信するようにさらに構成される請求項16に記載のシステム。
【発明を実施するための形態】
【0008】
様々な図面内の同様の参照番号および名称は、同様の要素を示す。
【0009】
多くの場合のライブブロードキャストは、コマーシャル休止、放送局の宣伝または識別、さらには他のライブコンテンツなどの休止を含み、その間に、放送局は、ライブアクションから代替コンテンツに切り換え、または「場面転換する」。放送局は、スポーツイベント中のグラウンド上のプレーを示すカメラから、プレーが落ち着いている間にスタジオ内の話しているアナウンサを示すカメラに切り替わり得、またはコマーシャルもしくは他のコンテンツに切り替わり得る。典型的な地上波放送では、このカットまたは切替えは、信号の配布の前に制御室のライブオペレータによって実施され得る。オペレータは、他のコンテンツがオンエアで提示される間、(オフエアではあるが)ライブカメラフィードを監視し得、興味深い、または刺激的な何かが生じようとしている場合、オペレータは代替コンテンツを中断して、再びライブアクションに場面転換し、または切り換え得る。
【0010】
HTTPライブストリーミング(HLS)プロトコルなどの多くのマルチメディアストリーミングプロトコルは、周期的に各クライアントに送られ、または各クライアントによって検索されるマニフェストまたは索引を利用する。そのようなマニフェスト100の例示的実装が、
図1のブロック図に示されている。マニフェスト100は、ストリームの部分である1つまたは複数のメディアセグメントを(たとえば、一般にファイルアドレスまたはセグメントアドレス106と呼ばれるアドレス106a〜106nによって)特定し、クライアントデバイスは各メディアセグメントを順番に検索し、バッファリングし、再生し得る。マニフェストはまた、コンテンツの長さ、キュー、コンテンツタイプ、タイムスタンプ、または他のそのような情報などの、各セグメントについてのファイルメタデータまたはセグメントメタデータ104a〜104nをも含み得る。
【0011】
適応ビットレートストリーミングと呼ばれるいくつかの実装では、マニフェストは、同一のコンテンツに対応するが異なるビットレートの1つまたは複数の代替セグメント(たとえば、content1_256kbps.ts、content1_128kbps.tsなど)を特定し得る。クライアントは、異なる代替セグメントを単に要求することによって、必要に応じてメディアストリームの品質を向上または低下させるために、ネットワーク条件または特性(たとえば、帯域幅、待ち時間、損失率など)に基づいてビットレートを動的に調節し得る。そのような一実装では、クライアントは、各セグメントについて3つの代替ビットレートを有する、6つの10秒セグメントに分割された1分のメディアコンテンツを特定するマニフェストを検索し得る。クライアントは、最低のビットレートの第1のセグメント(たとえば、segment1_low_quality.ts)を要求し得、セグメントを検索するための時間に基づいて、次のビットレートの第2のセグメント(たとえば、segment2_mid_quality.ts)と、より高いビットレートの第3のセグメント(たとえば、segment3_high_quality.ts)とを要求することを決定し得る。ネットワークスループットまたは特性が低下する場合、クライアントは、より低品質のセグメントを要求し得る。セグメントは、あらかじめ検索され、バッファリングされ得る。クライアントがマニフェスト内で特定されるセグメントのそれぞれを要求したとき、クライアントは、検索のために別のセグメントを特定する、新しい、または更新後のマニフェストを要求し得る。マニフェストは、ライブブロードキャストコンテンツについて周期的に更新され得る。そのような一実装では、コンテンツプロデューサは、1分などのライブメディアストリームの一部を生成し、ストリームを符号化およびセグメントし、その一部のセグメント(たとえば、6つの10秒セグメント)を特定するマニフェストを準備および配布し得る。プロデューサは、引き続きストリームを生成し、符号化し、セグメント化し得、次の部分(たとえば、次の1分の6つの10秒セグメント)のセグメントを特定する後続の第2のマニフェストを準備および配布し得る。これが、ストリームが利用可能である限り続行し得る。
【0012】
上記で論じたように、いくつかの実装では、ライブストリームのプロデューサまたは発行者は、広告コンテンツや他のコンテンツなどの代替コンテンツを周期的にストリーム内に挿入し得、代替コンテンツはライブであり得、または事前記録され得、メインライブコンテンツの対語として「代替」コンテンツと呼ばれる。いくつかの実装では、代替コンテンツは、ストリームを受信するすべてのクライアントについて同一であり得、他の実装では、代替コンテンツは、異なるクライアントについて異なり得る。そのような一実装では、プロデューサは、2分などの所定の長さの休止をスケジューリングし得、発行者などのコンテンツ選択者は、休止中のクライアントへの配布のために、全体で所定の長さに等しい代替コンテンツの1つまたは複数の項目を選択し得る。コンテンツは、選択され、異なる領域、異なるデバイスタイプ、異なるユーザに配布され、または任意の他のそのようなクラスによって配布され得る。多くの実装では、コンテンツは、クライアントのためのマニフェストにコンテンツを追加することによって挿入され得る。クライアントは、マニフェストを検索し、マニフェスト内で特定される代替コンテンツのセグメントに達するまで、メインコンテンツのセグメント(たとえば、program1.ts、program 2.tsなど)を検索し得、次いで、代替コンテンツの特定されたセグメント(たとえば、station_break1.ts)を同様に検索し得る。いくつかの実装では、マニフェストは、所定の休止についてのコンテンツ選択を実施し得る、マニフェストマニピュレータと呼ばれることがある代替ソースによって提供され得、領域またはデバイス特有のメタデータおよびファイル識別子をマニフェスト内に挿入し、対応するクライアントにマニフェストを配布し得る。
【0013】
多くのマニフェストベースのストリーミングプロトコルでは、マニフェストがクライアントに配信されると、ストリーミングサーバまたはメディアマニピュレータによって変更することはできず、サーバは、マニフェスト更新をクライアントデバイスに「プッシュ」することができない。したがって、クライアントは、マニフェストを使い果たす(すなわち、マニフェスト内で特定される各セグメントを検索する)まで、タイマが満了し、クライアントが更新後のマニフェストを検索するまで、またはクライアントがストリームの表示を中止するまで、マニフェスト内で特定されるメディアのセグメントを引き続き検索し、それを表示する。そのようなプロトコルは、クライアントに配信された後はマニフェストを更新または変更することができず、システムはクライアントが新しいマニフェストを要求するのを待機しなければならないという点で、マニフェスト不可侵プロトコルまたは不可侵マニフェストプロトコルと呼ばれることがある。
【0014】
これは、休止を含まないコンテンツ、または所定の休止のみを含むコンテンツに対しては良いことがあり、そのような実装では、マニフェストが非常に長く、または多数のセグメントもしくは長い持続時間のセグメントを特定し得る。しかしながら、マニフェストが不可侵であるので、ストリームプロデューサは、休止を早期にやめてライブカメラに戻ることができない。この結果、クライアントデバイスのユーザはスポーツイベントのプレーを見逃し、演壇に近づいてきたばかりの立候補者の演説の始まりを見逃し、あるいは重要なコンテンツを見逃すことがあり、ユーザの不満を引き起こし得る。
【0015】
一実装では、システムは、マニフェストを修正するための力を有するクライアントエージェントを各クライアントデバイス上にインストールすることなどによって、マニフェストを非不可侵にすることによって中断を可能にし得る。クライアントエージェントは、サーバから「プッシュ」通知を受信して、新しいマニフェストを要求し得、プッシュ通知内の情報をマニフェストに追加し得、または新しいマニフェストを常に(たとえば、毎秒ごとに)要求し得る。しかしながら、これらの解決策を行うことは、各デバイス上へのクライアントエージェントのインストールを必要とするだけではなく(これは、ユーザにとって受け入れられないことがあり、デバイス上の追加のストレージ、およびダウンロードするための帯域幅を必要とすることがあり、ネットワーク聴取エージェントとしてセキュリティ脆弱性を生み出すことがある)、著しいネットワークまたはサーバリソースを消費し得る(数百または数千のクライアントデバイスに毎秒ごとに新しいマニフェストを提供しなければならないことなど)。
【0016】
したがって、本明細書でより詳細に論じられる他の実装では、以前にスケジューリングされたセグメントを中断して、ライブカットインまたはライブカメラフィードへの戻りを可能にするために、インテリジェントストリーミングサーバまたはエッジキャッシュが、クライアントの知識なしに、要求されたのとは異なるコンテンツを代用し得る。具体的には、いくつかのそのような実装では、クライアントが、セグメント(たとえば、prerecorded_break_1.ts)を要求し得、ストリーミングサーバが、その代わりにライブフィードからのセグメント(live_segment_6.ts)を配信し得る。置換セグメントは、要求されたセグメントと同一の長さを有し得、要求したファイルが適切にサービスされたとクライアントが信じるようにリネームされ得る(たとえば、live_segment_6.tsをprerecorded_break_1.tsとリネームする)。したがって、マニフェストを変更することなく、またはマニフェスト不可侵プロトコルの要件から逸脱することなく、かつクライアントのどんな機能も変更することなく、システムは、定期的にスケジューリングされたコンテンツの中断、および代替コンテンツのサービスを実現し得る。
【0017】
類似の実装では、マニフェストは、ライブセグメントまたはメインセグメントのみを特定し得、インテリジェントストリーミングサーバは、所定の休止時刻に、要求されたセグメントの代わりに、事前記録済みコンテンツまたは代替コンテンツを(上記で論じたようにファイル名または識別子を修正して)使用し得、指示されたときに、修正を中止してライブセグメントに戻る。
【0018】
そのような実装は、マニフェストを再送信し、または正しいコンテンツを再ダウンロードすることを必要とする、誤ったコンテンツをクライアントデバイスに提供して、帯域幅およびリソースを浪費することなく、クライアント上の事前記録済みコンテンツまたは代替コンテンツとライブコンテンツとの間の非常に高速な切替えを可能にし得る。これらの実装はまた、興味深いライブアクションを見逃すことがなくなるので、ユーザの不満も低減し得る。
【0019】
図2Aは、一実装によるコンテンツ配信環境200のブロック図である。ネットワーク205は、1つまたは複数のクライアントデバイス210A〜210N(全般的にクライアントデバイス210と呼ばれる)と、マニフェストサーバ212およびインテリジェントストリーミングサーバ214とを接続し得る。インテリジェントストリーミングサーバ214は、直接的に、またはネットワーク205を介して、全般的にコンテンツプロバイダ218と呼ばれる、ライブコンテンツプロバイダ218aや、事前記録済みまたは記憶済みコンテンツプロバイダ218bなどの1つまたは複数のコンテンツプロバイダからコンテンツを受信し得る。いくつかの実装では、マニフェストサーバ212、インテリジェントストリーミングサーバ214、およびコンテンツプロバイダ218のうちの1つまたは複数が、同一のサーバまたはデバイスによって提供され、逆に言えば、いくつかの実装では、マニフェストサーバ212、インテリジェントストリーミングサーバ214、およびコンテンツプロバイダ218は、クラウド、クラスタ、分散コンテンツ配信システム、または他のそのようなシステムなどの複数のデバイスを備え得る。したがって、ただ1つのインテリジェントストリーミングサーバ214が図示されているが、多くの実装では、複数のサーバが1つまたは複数のネットワーク205を介して通信し得る。
【0020】
なおも
図2Aをより詳細に参照すると、ネットワーク205は、クライアントデバイス210と、1つまたは複数のインテリジェントストリーミングサーバ214ならびに図示されていない他のデバイスとの間で情報を中継する、任意の形態のコンピュータネットワークまたはネットワークの組合せであり得る。ネットワーク205は、インターネット、および/またはローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、セルラーネットワーク、サテライトネットワーク、もしくは他のタイプのデータネットワークなどの他のタイプのデータネットワークを含み得る。ネットワーク205はまた、ネットワーク205内でデータを受信および/または送信するように構成される、任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)をも含み得る。ネットワーク205は、任意の数のハードワイヤードおよび/またはワイヤレス接続をさらに含み得る。クライアントデバイス210は、ネットワーク205内の他のコンピューティングデバイスに(たとえば、光ファイバケーブル、CAT5ケーブルなどを介して)ハードワイヤードされるトランシーバとワイヤレスに(たとえば、WiFi、セルラー、無線を介して)通信し得る。いくつかの実装では、ネットワーク205は、単一の物理マシンによって実行される複数の仮想マシン間の仮想ネットワークなどの仮想ネットワーク、または物理的に可動なメディアを介するデータのオフライン転送などの抽象ネットワーク(たとえば、テープメディア、CD-ROM、フラッシュメディア、外部ハードドライブ、フロッピィディスクなどを介してデータを転送するSneakernet)であり得る。
【0021】
クライアントデバイス210は、クライアント、デバイス、クライアントデバイス、コンピューティングデバイス、ユーザデバイス、または任意の他のそのような用語として様々に呼ばれることがあり、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ビデオゲームコンソール、スマートテレビジョンもしくはセットトップボックス、サーバ、ワークステーション、またはネットワーク205を介して通信することができる、任意の他のタイプまたは形態のコンピューティングデバイスであり得る。いくつかの実装では、クライアントデバイス210は、ウェブブラウザ、メールクライアント、ビデオプレーヤ、音楽プレーヤ、ビデオゲーム、または任意の他のそのようなアプリケーションなどの、ネットワーク205を介して通信するためのアプリケーション、サービス、サーバ、デーモン、ルーチン、または他の実行可能論理を実行し得る。そのようなアプリケーションは、コマンドラインインターフェース、グラフィカルユーザインターフェース、またはこれらのインターフェースもしくは他のインターフェースの任意の組合せを含み得る。クライアントデバイスがスマートテレビジョンまたはセットトップボックスである実装では、クライアントデバイスは、地上波放送、衛星放送、ケーブル放送などの第1のインターフェースを介してコンテンツを受信し得、イーサネット(登録商標)やWiFiインターフェースなどのネットワーク205を介する第2のインターフェースを介してオーディエンス測定サーバと通信し得る。他の実装では、クライアントデバイス210は、ネットワーク205を介してコンテンツを受信し得、ネットワーク205を介して対話の識別を送信し得る。
【0022】
コンテンツプロバイダ218は、直接的に、またはインテリジェントストリーミングサーバ214を介して、ネットワーク205に接続され、クライアント210にコンテンツを提供するように構成された1つまたは複数のコンピューティングデバイスを含み得る。コンテンツプロバイダ218は、コンテンツプロバイダ、サーバ、ウェブサーバ、データサーバ、発行者、サービスプロバイダとして、または他の類似の用語によって呼ばれることがある。多くの実装では、コンテンツプロバイダ218は、サーバファームまたはクラウドとして構成された複数のコンピューティングデバイスを含み得、ルータ、ロードバランサ、ネットワークアドレストランスレータ、ファイアウォール、または他のそのようなデバイスを含み得る。コンテンツプロバイダ218は、コンピュータサーバ(たとえば、FTPサーバ、ファイル共有サーバ、ウェブサーバなど)またはサーバの組合せ(たとえば、データセンタ、クラウドコンピューティングプラットフォームなど)であり得る。コンテンツプロバイダ218は、テキスト、イメージ、ビデオ、オーディオ、マルチメディア、もしくは他のデータ、またはこれらの任意の組合せを含む、任意のタイプおよび形態のコンテンツを提供し得る。コンテンツは、ライブメディアコンテンツ、事前記録済みメディアコンテンツ、レンダリング済みコンテンツ、ムービー、テレビジョンショー、ポッドキャスト、ビデオブログ、ビデオゲーム、もしくは他の対話式コンテンツ、任意のフォーマットの広告、ソーシャルメディア、または任意の他のタイプおよび形態のコンテンツを含み得る。インテリジェントストリーミングサーバ214に接続されるように示されているが、多くの実装では、コンテンツプロバイダは、ネットワーク205を介してインテリジェントストリーミングサーバ214と通信し得、ネットワーク205を介してクライアントデバイス210にコンテンツを配信し得る。他の実装では、インテリジェントストリーミングサーバ214は、コンテンツプロバイダ218からコンテンツを検索し得、クライアントデバイスへの配信のためにコンテンツをキャッシングし得る。したがって、インテリジェントストリーミングサーバ214は、1つまたは複数のエッジキャッシュまたは分散コンテンツサーバを備え得る。
【0023】
マニフェストサーバ212は、マニフェストマニピュレータ、マニフェストモディファイヤ、パーソナライズドマニフェストクリエータ、または任意の他のそのような用語として呼ばれることがあり、ネットワーク205に接続され、マニフェストを生成し、クライアントデバイス210と、いくつかの実装ではインテリジェントストリーミングサーバ214とにマニフェストを提供するように構成された1つまたは複数のコンピューティングデバイスを含み得る。マニフェストサーバ212は、ファイルサーバ、ウェブサーバ、データサーバ、または任意の類似のデータソースを含み得る。多くの実装では、マニフェストサーバ212は、サーバファームまたはクラウドとして構成された複数のコンピューティングデバイスを含み得、ルータ、ロードバランサ、ネットワークアドレストランスレータ、ファイアウォール、または他のそのようなデバイスを含み得る。いくつかの実装では、マニフェストサーバ212はコンテンツプロバイダ218であり得る。
【0024】
インテリジェントストリーミングサーバ214は、1つまたは複数のコンピューティングデバイス、アプライアンス、またはサーバファームやクラウドなどのサーバを備え得る。多くの実装では、インテリジェントストリーミングサーバ214は、特定の地理的領域にサービスするための、領域的に分散されたサーバまたはエッジキャッシュであり得る。いくつかの実装では、インテリジェントストリーミングサーバ214は、物理マシンによって実行される1つまたは複数の仮想サーバを備え得る。インテリジェントストリーミングサーバ214は、要求時にクライアントデバイス10にコンテンツセグメントを提供し得、上記で論じたように、要求されたコンテンツセグメントを提供すること、または代替コンテンツセグメントを代用することの間で動的に選択し得る。いくつかの実装では、インテリジェントストリーミングサーバ214は、マニフェストをも提供し得、マニフェストサーバ212の機能をサービスし得る。
【0025】
図2Bは、一実装による、
図2Aに示されるクライアントデバイスおよびサーバデバイスブロック図である。まずクライアントデバイス210を参照すると、クライアントデバイスは、ライブメディアストリームのクライアントまたはオーディエンスメンバのコンピューティングデバイスであり得る。クライアントデバイス210は、限定はしないが、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、スマートフォン、デジタルビデオレコーダ、テレビジョン用のセットトップボックス、ビデオゲームコンソール、または任意の他のタイプおよび形態のコンピューティングデバイスもしくはデバイスの組合せを含む、ネットワーク205を介して通信するように構成された任意の数の異なるタイプのユーザ電子デバイスであり得る。いくつかの実装では、クライアントデバイス210のタイプは、モバイルデバイス、デスクトップデバイス、または静止したままとなるように意図され、もしくはローカルエリアネットワークを介してネットワーク205に主にアクセスするように構成されたデバイス、またはメディア消費デバイスなどの別のカテゴリの電子デバイスとして分類され得る。
【0026】
多くの実装では、クライアントデバイス210は、プロセッサ222およびメモリ224を含む。メモリ224は、プロセッサ222によって実行されるとき、本明細書で説明される動作のうちの1つまたは複数をプロセッサ222に実施させる機械語命令を記憶し得る。プロセッサ222は、マイクロプロセッサ、ASIC、FPGAなど、またはそれらの組合せを含み得る。多くの実装では、プロセッサ222は、マルチコアプロセッサまたはプロセッサのアレイであり得る。メモリ224は、プロセッサ222にプログラム命令を提供することのできる電子記憶デバイス、光記憶デバイス、磁気記憶デバイス、または任意の他の記憶デバイスを含み得るが、それらに限定されない。メモリ224は、フロッピィディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ROM、RAM、EEPROM、EPROM、フラッシュメモリ、光メディア、またはプロセッサ222がそれから命令を読み取り得る任意の他の適切なメモリを含み得る。命令は、限定はしないが、C、C++、C#、Java(登録商標)、JavaScript(登録商標)、Perl、HTML、XML、Python、Visual Basicなどの任意の適切なコンピュータプログラミング言語のコードを含み得る。
【0027】
クライアントデバイス210は1つまたは複数のネットワークインターフェース226を含み得る。ネットワークインターフェース226は、10 Base T、100 Base T、または1000 Base T (「Gigabit」)を含むイーサネット(登録商標)を含む、任意のタイプおよび形態のインターフェース、802.11a、802.11b、802.11g、802.11n、802.11acなどの様々な802.11ワイヤレスのいずれか、CDMA、LTE、3G、または4Gセルラーを含むセルラー、Bluetooth(登録商標)または他の近距離ワイヤレス接続、あるいはネットワーク205と通信するためのこれらのインターフェースまたは他のインターフェースの任意の組合せを含み得る。多くの実装では、クライアントデバイス210は、様々なネットワーク205、または異なるサブネットワークを介するインターネットなどのネットワーク205への接続を可能にする、異なるタイプの複数のネットワークインターフェース226を含み得る。クライアントデバイス210はまた、上記で論じたように、地上波、衛星、またはケーブルのアナログまたはデジタル放送を受信するための他のインターフェースをも含み得る。
【0028】
クライアントデバイス210は1つまたは複数のユーザインターフェースデバイス228を含み得る。ユーザインターフェースデバイス228は、知覚情報(たとえば、ディスプレイ上の視覚化、1つまたは複数の音、触覚フィードバックなど)を生成することによってユーザにデータを伝達し、かつ/またはユーザから受信した知覚情報を電子信号に変換する任意の電子デバイス(たとえば、キーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクロフォンなど)であり得る。1つまたは複数のユーザインターフェースデバイスは、様々な実装に従って、内蔵ディスプレイ、タッチスクリーン、マイクロフォンなどの、クライアントデバイス210のハウジングの内部であり、またはクライアントデバイス210に接続されたモニタ、クライアントデバイス210に接続されたスピーカなどの、クライアントデバイス210のハウジングの外部であり得る。
【0029】
クライアントデバイス210は、メモリ224内にアプリケーション230を含み得、またはプロセッサ222でアプリケーション230を実行し得る。アプリケーション230は、マニフェスト100を受信し、特定されたコンテンツセグメント232を検索し、クライアントデバイスの出力インターフェース228(たとえば、ディスプレイ、スピーカなど)を介してコンテンツセグメントを表示または再生するためのアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、または他の実行可能論理であり得る。一実装では、アプリケーション230はウェブブラウザであり得る。アプリケーション230は、ネットワークインターフェース226を介して受信したコンテンツ、および/またはプロセッサ222によってローカルに生成されたコンテンツを表示するための機能を含み得る。いくつかの実装では、アプリケーション230はメディアプレーヤであり、またはウェブブラウザ内のプラグインやネイティブメディアプレーヤなどの組込みメディアプレーヤを含み得る。アプリケーション230は、スキップ制御、良くないね(dislike)ボタン、任意の類似のインターフェースなどのメディアプレーヤ内で再生されるコンテンツと対話するためのユーザインターフェースを提供し得る。
【0030】
クライアント210はデバイス識別子234を含み、またはデバイス識別子234で特定され得る。デバイス識別子234は、英数字文字列、データ文字列、シリアル番号、メディアアクセス制御(MAC)アドレス、インターネットプロトコル(IP)アドレス、ユーザ名もしくはアカウント名、グローバル一意識別子(GUID)、クッキー、乱数もしくは擬似乱数、またはこれらもしくは他の識別子の組合せを含む任意の他のタイプおよび形態の識別子であり得る。いくつかの実装では、デバイス識別子234は、製造業者シリアル番号やMACアドレスなど、デバイスに固定され、またはデバイス内で事前構成され得、他の実装では、デバイス識別子234は、クッキーやユーザ名など、コンテンツプロバイダ、ストリーミングサーバ、アプリケーション230、または他のエンティティによって動的に設定され得る。いくつかの実装では、固有の、または新しいデバイス識別子234がコンテンツプロバイダおよび/またはオーディエンス測定サーバへの通信ごとに設定され得、他の実装では、デバイス識別子234は変更されないことがあり、または周期的に(たとえば、毎時間、毎日、毎週など)、もしくは他の間隔で(たとえば、クライアントデバイスの再始動時、インターネットサービスへのログイン時など)変更され得る。いくつかの実装では、デバイス識別子234は、1つまたは複数の他のデバイス識別子234(たとえば、モバイルデバイスについてのデバイス識別子、ホームコンピュータについてのデバイス識別子など)に関連付けられ得る。多くの実装では、上記で論じたように、デバイス識別子234がコンテンツプロバイダによって生成され、かつ/またはデバイス210に送信され得る。他の実装では、上記で論じたように、クライアント210は、デバイス識別子またはクッキー234をストリーミングサーバまたはコンテンツプロバイダに要求し得、コンテンツの要求に関連してストリーミングサーバまたはコンテンツプロバイダにデバイス識別子またはクッキー234を送信し得る。
【0031】
図2Bには、マニフェストサーバ212の一実装のブロック図も示されている。クライアントデバイス210の場合と同じく、サーバ212は、1つまたは複数のプロセッサ222、メモリ224、ネットワークインターフェース226、およびユーザインターフェース228を含み得る。ヘッドレスサーバと呼ばれるいくつかの実装では、サーバ212はユーザインターフェース228を含まないことがあるが、ネットワーク205を介してユーザインターフェース228でクライアント210と通信し得る。メモリ224は、ウェブページ、イメージ、オーディオファイル、ビデオファイル、データファイル、任意の他のタイプおよび形態のデータのストレージなどのコンテンツストレージを含み得る。いくつかの実装では、メモリ224は、FTPサーバ、ウェブサーバ、メールサーバ、ファイル共有サーバ、ピアツーピアサーバを含むサーバのプロセッサ222による実行のための1つまたは複数のアプリケーション(図示せず)、あるいはコンテンツストレージ内に記憶されたコンテンツを配信するための他のそのようなアプリケーションを記憶し得る。マニフェストサーバ212は、メディアストリームについての一般のマニフェストや、1つまたは複数の領域、クライアントデバイス、または他のグループについてのパーソナライズドマニフェストなどの1つまたは複数のマニフェスト100をメモリ224内に記憶し得る。
【0032】
いくつかの実装では、サーバ212はマニフェストマニピュレータ236を実行し得る。マニフェストマニピュレータ236は、上記で論じたように、マニフェストを生成およびパーソナライズするためのアプリケーション、サービス、サーバ、デーモン、ルーチン、または他の実行可能論理を含み得る。いくつかの実装では、マニフェストサーバ212は、ライブコンテンツプロバイダからマニフェストを受信し得、マニフェストは、ライブストリーム中の1つまたは複数の所定の休止(たとえば、2分の休止)を特定する。マニフェストマニピュレータ236は、選択されたコンテンツセグメント識別子を、特定された1つまたは複数の所定の休止中にマニフェスト内に挿入することによってマニフェストを修正し、または新しいパーソナライズドマニフェストを生成し得る。マニフェストサーバは、パーソナライズドマニフェストを1つまたは複数のクライアントデバイスに提供し得る。そのような一実装では、マニフェストサーバは、クライアントデバイスからマニフェストを求める要求を受信し得、要求は、クライアントデバイスのデバイス識別子234を含む。いくつかの実装では、マニフェストサーバは、デバイス識別子に基づいて選択コンテンツを特定し得る。他の実装では、デバイス識別子234が、マニフェストサーバ212内に記憶され、またはマニフェストサーバ212によって維持されるデバイスデータベース238内の1つまたは複数の特性または特色(たとえば、地理的位置、お気に入りのスポーツチームなど)に関連付けられ得る。代替コンテンツが特性に基づいて選択され得、それに応じてマニフェストが変更される。マニフェスト不可侵プロトコルであるが、マニフェストがまだクライアントデバイスに配信されていないので、マニフェストマニピュレータはマニフェストを変更し得る。データベース238は、コンテンツ選択のための複数のデバイス識別子および関連する特色または特性を記憶するための、任意のタイプおよび形態のデータベース、フラットファイル、データファイル、データアレイ、または他のデータ構造を含み得る。
【0033】
図2Bには、インテリジェントストリーミングサーバ214の一実装のブロック図も示されている。クライアントデバイス210の場合と同じく、サーバ214は、1つまたは複数のプロセッサ222、メモリまたは記憶デバイス224、ネットワークインターフェース226、およびユーザインターフェース228を含み得る。ヘッドレスサーバと呼ばれるいくつかの実装では、サーバ214はユーザインターフェース228を含まないことがあるが、ネットワーク205を介してユーザインターフェース228でクライアント210またはパネリスト216と通信し得る。メモリ224は、ライブメディアストリームセグメントまたはメインメディアストリームセグメントのストレージ、代替ストリームセグメントまたは代替ファイルセグメントなどの、コンテンツストレージまたはキャッシュ246を含み得る。いくつかの実装では、メモリ224は、FTPサーバ、ウェブサーバ、メールサーバ、ファイル共有サーバ、ピアツーピアサーバを含むサーバのプロセッサ222による実行のための1つまたは複数のアプリケーション(図示せず)、あるいは一般にストリーミングサーバ248と呼ばれる、コンテンツストレージ内に記憶されたコンテンツを配信するための他のそのようなアプリケーションを記憶し得る。いくつかの実装では、コンテンツストレージ246は1つまたは複数の外部記憶デバイス内であり得、あるいは1つまたは複数のサーバ212またはクラウド記憶デバイスにわたって分散され得る。コンテンツストレージ246からのコンテンツは、クライアントデバイス210に提供され得る。いくつかの実装では、インテリジェントストリーミングサーバは、マニフェストサーバ212および/またはコンテンツプロバイダから取得したマニフェスト100のコピーを記憶し得る。
【0034】
インテリジェントストリーミングサーバ214はストリームコントローラ240を実行し得る。ストリームコントローラ240は、マニフェスト内で特定されるストリーミングメディアセグメント(たとえば、事前記録されたメディアセグメント)を求める要求をクライアントから受信し、コンテンツ選択フラグの設定に応答して、要求されたデータファイルを提供し、または代替データ(たとえば、ライブストリームデータ)を提供するためのアプリケーション、アプレット、サービス、サーバ、デーモン、ルーチン、または他の実行可能論理を含み得る。いくつかの実装では、ストリームコントローラ240はメタデータマニピュレータ242を含み得、メタデータマニピュレータ242は、広告セグメントなどのメディアストリームセグメントのデータファイルを、ライブストリームのセグメントなどのメディアストリームセグメントの異なるデータファイルからのメタデータで修正するためのアプリケーション、デーモン、サービス、または他の実行可能論理を含み得る。
【0035】
いくつかの実装では、ストリーミングサーバ214はコンテンツリトリーバ244を実行し得る。コンテンツリトリーバ244は、コンテンツプロバイダにストリーミングメディアセグメントを要求および/または検索し、コンテンツをコンテンツキャッシュ246内にキャッシングするための、マニフェスト100を要求および/または検索するための、または他のそのような機能のためのアプリケーション、アプレット、サーバ、サービス、デーモン、ルーチン、または他の実行可能論理を含み得る。コンテンツリトリーバは、ブラウザアプリケーション、ウェブクライアント、ファイル転送クライアント、または任意の他のタイプおよび形態のアプリケーションもしくはクライアントを含み得る。
【0036】
図3は、一実装による、不可侵マニフェストプロトコルを介して中断可能ストリーミングコンテンツを提供するための方法300のフローチャートである。ステップ302では、インテリジェントストリーミングサーバは、クライアントデバイスから要求を受信し得る。いくつかの実装では、要求は、マニフェストを求める要求であり得、ストリーミングサーバは、クライアントデバイスにマニフェストを配信し得る。いくつかの実装では、ストリーミングサーバはマニフェストサーバを備え、またはクライアントデバイスへの再配布のために、マニフェストサーバと通信して、マニフェストサーバからマニフェストを検索し得る。他の実装では、クライアントデバイスは、コンテンツプロバイダまたはマニフェストサーバに直接的にマニフェストを要求し得る。要求は、クライアントデバイスのデバイス識別子、ユーザ名、アカウント名、または任意の他のそのような識別子を含み得る。要求はまた、メディアストリームまたはマニフェストの識別子をも含み得、したがってストリーミングサーバは、配信のための適切なマニフェストを選択し得る。いくつかの実装では、上記で論じたように、マニフェストが、クライアントデバイス、領域内のクライアントデバイス、または他の共通の特性を有するクライアントデバイスについてパーソナライズされ得る。ステップ304では、ストリーミングサーバは、クライアントデバイスにマニフェストを提供し得る。いくつかの実装では、サーバは、クライアントデバイスにマニフェストを送信し得、他の実装では、サーバは、クライアントがマニフェスト(たとえば、マニフェストサーバアドレス)を取得し得るリダイレクトコマンドまたはアドレスを送信し得る。
【0037】
要求がストリーミングコンテンツセグメントを求める要求である場合、ステップ306では、ストリーミングサーバは、要求がライブコンテンツストリームまたはメインコンテンツストリームのセグメントを求めるものであるか、それとも代替コンテンツストリーム(たとえば、放送局休止、広告、代替コンテンツなど)のセグメントを求めるものであるかを判定し得る。いくつかの実装では、ストリーミングサーバは、要求のアドレスに基づいて、要求がどのストリームに対応するかを判定し得る(たとえば、「main_segment1.ts」と、「alternate_segment1.ts」または「station_break_segment1.ts」)。他の実装では、ストリームが要求内で明示的に特定され得る。要求がライブストリームまたはメインストリームのセグメントを求めるものである場合、ステップ308では、ストリーミングサーバは、要求されたセグメントをクライアントデバイスに提供し得る。上記で論じたように、要求されたセグメントを提供することは、異なるビットレートを有する複数の関連するセグメントまたは対応するセグメントのうちの、要求されたビットレートを有するセグメントを提供することを含み得る。要求されたセグメントを提供することは、クライアントデバイスにセグメントを送信することを含み得、要求されたセグメントがそこで取得され得るリダイレクトコマンドおよびアドレスを送信することを含み得る。セグメントは、トランスポートストリーム、MPEGストリーム、他のデータなどのセグメントの符号化メディアデータと、セグメントおよび/またはストリームの名前、セグメントの長さ、セグメントの提示タイムスタンプ、任意の他のそのような情報などのメタデータとを含むデータファイルを含み得る。
【0038】
要求が代替コンテンツストリームのセグメントを求めるものである場合、ステップ310では、ストリーミングサーバは、ライブコンテンツストリームフラグが設定されているかどうかを判定し得る。上記で論じたように、ストリーミングサーバは、ライブコンテンツプロバイダにライブコンテンツステータスフラグを周期的に要求し得、またはライブコンテンツプロバイダは、representational state transfer(RESTful)通信プロトコルなどを介して、ステータスフラグ更新と共にストリーミングサーバに通知をプッシュし得る。そのような一実装では、コンテンツプロバイダは、ライブストリームについての第1の所定の値と、代替ストリームについての第2の所定の値などの、フラグの値を特定するURL内のパラメータ値対と共にHTTP POST要求を送信し得る。別の軽量実装では、パケットのヘッダ内のオプションフィールドを介してフラグが送信され得る。いくつかのそのような実装では、ストリーミングサーバは、キャッシングおよびクライアントデバイスへの再配布のために、追加のライブメディアストリームセグメントおよび/またはマニフェストなどのデータをライブコンテンツプロバイダから頻繁に検索し得る。セグメントおよび/またはマニフェストの一部またはすべての配信と共に、ライブコンテンツプロバイダは、データパケットのヘッダまたはオプションフィールド内などのメタデータ内にライブステータスフラグの値を埋め込み得る。したがって、フラグは、ライブストリーミングを示す所定の値を有する単一ビットを含み得る。
【0039】
ライブストリーミングフラグが設定されない場合、ステップ308では、ストリーミングサーバは、要求された代替コンテンツを提供し得る。上記で論じたように、要求されたセグメントを提供することは、異なるビットレートを有する複数の関連するセグメントまたは対応するセグメントのうちの、要求されたビットレートを有するセグメントを提供することを含み得る。要求されたセグメントを提供することは、クライアントデバイスにセグメントを送信することを含み得、要求されたセグメントがそこで取得され得るリダイレクトコマンドおよびアドレスを送信することを含み得る。セグメントは、トランスポートストリーム、MPEGストリーム、他のデータなどのセグメントの符号化メディアデータと、セグメントおよび/またはストリームの名前、セグメントの長さ、セグメントの提示タイムスタンプ、任意の他のそのような情報などのメタデータとを含むデータファイルを含み得る。
【0040】
ライブストリーミングフラグが設定される場合、ステップ312では、ストリーミングサーバは、ライブコンテンツプロバイダまたはストリーミングサーバのキャッシュからライブコンテンツセグメントを検索し得、ライブコンテンツセグメントは以前に検索されている。ストリーミングサーバは、現在時刻またはわずかに将来に対応する提示タイムスタンプを有するライブコンテンツセグメントを検索し得、以前に送信されたライブコンテンツセグメントに続くライブコンテンツセグメントを検索し得、あるいは次のライブコンテンツセグメントを検索し得る。いくつかの実装では、ライブコンテンツセグメントは、先入れ先出し(FIFO)バッファ内に記憶され、周期的に除去され、かつ/または(たとえば、ストリームについてのマニフェスト内で特定される各提示タイムスタンプにおいて)クライアントデバイスに配布され得る。いくつかの実装では、セグメントは、所定の休止中(たとえば、プロデューサがライブストリームから場面転換するように指示したとき)でも受信され得、(たとえば、マニフェスト内で特定されるその持続時間またはタイムスタンプに従って)休止全体にわたって周期的に除去および廃棄され得る。したがって、キャッシュは、クライアントに配信するための適切なセグメントを選択するために、古いセグメントまたは有効期限切れのセグメントを廃棄し得る。他の実装では、ライブコンテンツストリームのセグメントは休止中に配信されないことがあり、その代わりに、プロデューサが場面転換し、メインフィードに戻るように指示したとき、「最初の」休止後セグメントがコンテンツプロバイダからストリーミングサーバに配信され得る。ストリーミングサーバは、クライアントに配信するためにこのセグメントを適切なライブコンテンツセグメントとして使用し得る。セグメントは、要求された代替コンテンツセグメントと同一の持続時間およびビットレートを有し得る。
【0041】
ステップ314では、サーバのストリームコントローラは、検索されたライブコンテンツセグメントのメタデータを修正し得る。メタデータを修正することは、セグメントデータファイルのヘッダ内のファイル名を代替フィードの要求されたセグメントのファイル名で置き換えること、データファイルのメタデータまたはヘッダ内のストリーム識別子を置き換えること、あるいは異なる符号化メディアデータであるが、セグメントのメタデータまたはデータファイルを、要求された代替コンテンツセグメントに見えるように修正することを含み得る。複数のクライアントデバイスが、ブロードキャスト領域などについて、同一のマニフェストを受信する実装では、修正されたライブコンテンツセグメントがキャッシュされ、方法300の連続する反復時にステップ314をスキップして、他のクライアントからの要求に応答してサービスされ得る。
【0042】
ステップ316では、ストリーミングサーバは、修正されたライブコンテンツセグメントおよびメタデータをクライアントデバイスに提供し得る。メタデータが修正されているので、クライアントデバイスは、受信したデータファイルが代替コンテンツストリームの要求したデータファイルであると信じ得、マニフェスト内で示される提示時刻にデータファイルを再生し得る。したがって、クライアントデバイスは、放送局休止や広告などの代替コンテンツのセグメントを再生していると信じ得るが、実際の復号化コンテンツはライブコンテンツストリームの部分となる。これにより、修正されたマニフェストを各クライアントに配信するために待機することを必要とせず、かつクライアントデバイスを修正し、クライアントエージェントをインストールし、あるいはプロトコル要件に準拠しないことなしに、プロデューサがマニフェスト内の任意のセグメント休止において代替コンテンツストリームを中断することが可能となる。
【0043】
上記の説明は、本明細書で説明する技法がライブコンテンツストリームまたはメインコンテンツストリームに復帰するために使用される例に関係するが、この技法は、他の目的でマニフェスト不可侵ストリーミングプロトコルを介して提供されるストリーミングコンテンツを中断するために使用され得る。たとえば、本明細書で説明される技法は、公共サービス告知などの告知を提供するようにストリーミングコンテンツを中断するために使用され得る。すなわち、本明細書で説明される技法は、以前にストリーミングされたコンテンツに戻るために使用され得るが、本明細書で説明される技法はそれに限定されない。
【0044】
したがって、本明細書で論じられるシステムおよび方法は、マニフェスト不可侵適応ビットレートストリーミングプロトコルを介して提供されるストリーミングコンテンツを中断することを実現する。第1の態様では、本開示は、マニフェスト不可侵プロトコルを介して提供されるストリーミングコンテンツを中断するための方法を説明する。方法は、ストリーミングサーバによって、ストリーミングセグメントの複数の識別子を含むマニフェスト内で特定される第1のストリーミングセグメントを求める第1の要求をクライアントデバイスから受信することを含む。方法はまた、第1の要求に応答して、ストリーミングサーバによってクライアントデバイスに第1のストリーミングセグメントを提供することをも含む。方法は、ストリーミングサーバによって、要求側クライアントデバイスに所定のコンテンツを提供するためのコマンドを受信することをさらに含む。方法はまた、ストリーミングサーバによって、マニフェスト内で特定される第2のストリーミングセグメントを求める第2の要求をクライアントデバイスから受信することをも含む。方法はまた、所定のコンテンツを提供するためのコマンドの受信に応答して、かつ第2の要求に応答して、ストリーミングサーバによって、第2のセグメントとは異なる第3のストリーミングセグメントをクライアントデバイスに提供することをも含む。
【0045】
いくつかの実装では、第3のストリーミングセグメントがマニフェスト内で特定されない。いくつかの実装では、第3のストリーミングセグメントを提供することは、第2のストリーミングセグメントの識別子に合致するように第3のストリーミングセグメントの識別子を修正することをさらに含む。いくつかの実装では、第3のストリーミングセグメントを提供することは、第3のストリーミングセグメントのデータファイルをクライアントデバイスに送信することを含む。別の実装では、方法は、クライアントデバイスへの第3のストリーミングセグメントのデータファイルの送信前に、第2のストリーミングセグメントのデータファイルのメタデータに合致するように第3のストリーミングセグメントのデータファイルのメタデータを修正することを含む。
【0046】
いくつかの実装では、方法は、マニフェスト内で特定される第2のストリーミングセグメントを求める第3の要求を第2のクライアントデバイスから受信すること、およびストリーミングサーバのキャッシュから第3のストリーミングセグメントのデータファイルの修正されたメタデータおよび第3のストリーミングセグメントのデータファイルを提供することを含む。いくつかの実装では、方法は、コンテンツ選択フラグを求める要求をコンテンツプロバイダに送信すること、および要求に応答して、コンテンツ選択フラグを含むコマンドを受信することを含む。別の実装では、方法は、コンテンツ選択フラグを求める要求をコンテンツプロバイダに所定の周波数において送信することを含む。別の実装では、方法は、コンテンツ選択フラグが所定のコンテンツを提供することを示すと判定することを含み、第3のストリーミングセグメントを提供することが、コンテンツ選択フラグが所定のコンテンツを提供することを示すことに応答して実施される。
【0047】
別の態様では、本開示は、マニフェスト不可侵プロトコルを介して提供されるストリーミングコンテンツを中断するためのシステムを対象とする。システムは、コンテンツプロバイダおよびクライアントデバイスと通信するネットワークインターフェースと、記憶デバイスと、ストリームコントローラを実行するストリーミングサーバのプロセッサとを備えるストリーミングサーバを含む。ネットワークインターフェースは、ストリーミングセグメントの複数の識別子を含むマニフェスト内で特定される第1のストリーミングセグメントを求める第1の要求をクライアントデバイスから受信し、第1の要求に応答して、クライアントデバイスに第1のストリーミングセグメントを提供するように構成される。ストリームコントローラは、要求側クライアントデバイスに所定のコンテンツを提供するためのコマンドを受信するように構成される。ネットワークインターフェースは、マニフェスト内で特定される第2のストリーミングセグメントを求める第2の要求をクライアントデバイスから受信し、所定のコンテンツを提供するためのコマンドの受信に応答して、かつ第2の要求に応答して、第2のセグメントとは異なる第3のストリーミングセグメントをクライアントデバイスに提供するようにさらに構成される。
【0048】
いくつかの実装では、第3のストリーミングセグメントがマニフェスト内で特定されない。いくつかの実装では、ストリームコントローラは、第2のストリーミングセグメントの識別子に合致するように第3のストリーミングセグメントの識別子を修正するようにさらに構成される。いくつかの実装では、ネットワークインターフェースは、第3のストリーミングセグメントのデータファイルをクライアントデバイスに送信するようにさらに構成される。別の実装では、ストリームコントローラは、クライアントデバイスへの第3のストリーミングセグメントのデータファイルの送信前に、第2のストリーミングセグメントのデータファイルのメタデータに合致するように第3のストリーミングセグメントのデータファイルのメタデータを修正するようにさらに構成される。
【0049】
いくつかの実装では、ストリーミングサーバはキャッシュをさらに備え、ネットワークインターフェースは、マニフェスト内で特定される第2のストリーミングセグメントを求める第3の要求を第2のクライアントデバイスから受信し、ストリーミングサーバのキャッシュから第3のストリーミングセグメントのデータファイルの修正されたメタデータおよび第3のストリーミングセグメントのデータファイルを提供するようにさらに構成される。いくつかの実装では、ストリーミングサーバは、ネットワークインターフェースを介して、コンテンツ選択フラグを求める要求をコンテンツプロバイダに送信し、要求に応答して、ネットワークインターフェースを介して、コンテンツ選択フラグを含むコマンドを受信するようにさらに構成される。別の実装では、ストリーミングサーバは、コンテンツ選択フラグを求める要求をコンテンツプロバイダに所定の周波数において送信するようにさらに構成される。別の実装では、ストリーミングサーバは、コンテンツ選択フラグが所定のコンテンツを提供することを示すと判定するようにさらに構成され、ネットワークインターフェースは、コンテンツ選択フラグが所定のコンテンツを提供することを示すことに応答して、第3のストリーミングセグメントを提供するようにさらに構成される。
【0050】
別の態様では、本開示は、1つまたは複数のプロセッサと、1つまたは複数のプログラムを記憶するメモリとを含む第1のコンピューティングデバイスによる実行のために構成された1つまたは複数のプログラムを記憶する非一時的コンピュータ可読記憶媒体を対象とする。1つまたは複数のプログラムは、ストリーミングセグメントの複数の識別子を含むマニフェスト内で特定される第1のストリーミングセグメントを求める第1の要求をクライアントデバイスから受信するための命令と、第1の要求に応答して、クライアントデバイスに第1のストリーミングセグメントを提供するための命令と、要求側クライアントデバイスに所定のコンテンツを提供するためのコマンドを受信するための命令と、マニフェスト内で特定される第2のストリーミングセグメントを求める第2の要求をクライアントデバイスから受信するための命令と、所定のコンテンツを提供するためのコマンドの受信に応答して、かつ第2の要求に応答して、第2のセグメントとは異なる第3のストリーミングセグメントをクライアントデバイスに提供するための命令とを含む。いくつかの実装では、1つまたは複数のプログラムは、第2のストリーミングセグメントのデータファイルのメタデータに合致するように第3のストリーミングセグメントのデータファイルのメタデータを修正するための命令と、第3のストリーミングセグメントのデータファイルをクライアントデバイスに送信するための命令とをさらに含む。
【0051】
多くの実装では、代替コンテンツ選択のために利用される、ユーザについての人口統計情報が、デバイスユーザのプライバシーを保護するために匿名化または曖昧性除去され得る。多くのそのような実装、またはクライアントデバイスのユーザについての個人情報が測定のために収集され、もしくはサードパーティコンテンツを選択するために使用され得る類似の状況では、個人情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションまたは活動、ユーザのプリファレンス、またはユーザの現在位置についての情報)を収集し得るプログラムまたは特徴がそのように行うかどうかを制御するための機会、あるいは測定データをオーディエンス測定サーバおよび/またはパネルプロバイダに送信するかどうか、またはどのように送信するかを制御するための機会がユーザに提供され得る。さらに、一定のデータが、記憶され、またはオーディエンス測定サーバによって使用される前に、1つまたは複数の方式で扱われ得、その結果、パラメータ(たとえば、人口統計パラメータ)を生成するときに、個人的に特定可能な情報が除去される。いくつかの実装では、ユーザについて個人的に特定可能な情報を決定することができないように、ユーザの識別が匿名化され得、または位置情報が取得される場合に、ユーザの特定の位置を決定することができないようにユーザの地理的位置が一般化され得る(都市、郵便番号、状態レベルなど)。したがって、ユーザは、ユーザについての情報がどのように収集されるか、マニフェストサーバ、インテリジェントストリーミングサーバ、およびコンテンツプロバイダによってどのように使用されるかに関する制御を有し得る。
【0052】
本明細書で説明される主題および動作の実装は、本明細書で開示される構造およびその構造的等価物を含むデジタル電子回路として、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェアとして、あるいはそれらのうちの1つまたは複数の組合せとして実装され得る。本明細書で説明される主題の実装は、1つまたは複数のコンピュータプログラム、すなわちデータ処理装置による実行のための、またはデータ処理装置の動作を制御するための、1つまたは複数のコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切な受信機装置への送信のために情報を符号化するように生成される、人工的に生成された伝播信号、たとえば機械で生成された電気的、光学的、または電磁的信号上に符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、あるいはそれらのうちの1つまたは複数の組合せであり得、またはそれらの中に含まれ得る。さらに、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号として符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体は、1つまたは複数の別々の構成要素またはメディア(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得、またはその中に含まれ得る。したがって、コンピュータ記憶媒体は有形であり得る。
【0053】
本明細書で説明される動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶され、または他のソースから受信されたデータに対してデータ処理装置によって実施される動作として実装され得る。
【0054】
「クライアント」または「サーバ」という用語は、プログラム可能プロセッサ、コンピュータ、システムオンチップ、あるいは上記のうちの複数または組合せなどの、データを処理するためのすべての種類の装置、デバイス、およびマシンを含む。装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つまたは複数の組合せを構成するコードをも含み得る。装置および実行環境は、ウェブサービス、分散コンピューティング、グリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現し得る。
【0055】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとして知られる)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続型言語を含む任意の形態のプログラミング言語で書かれ得、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境内での使用に適した他のユニットとしての形態を含む任意の形態で配置され得る。コンピュータプログラムは、必須ではないがファイルシステム内のファイルに対応し得る。プログラムは、他のプログラムまたはデータを保持するファイルの一部(たとえば、マークアップ言語文書内に記憶された1つまたは複数のスクリプト)の中に、当該のプログラム専用の単一のファイル内に、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイル)内に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に配置され、もしくは複数の場所にわたって分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように配置され得る。
【0056】
本明細書で説明されるプロセスおよび論理フローは、入力データに対して演算し、出力を生成することによって動作を実施するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能プロセッサによって実施され得る。プロセスおよび論理フローはまた、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実施され得、装置はまた、専用論理回路として実装され得る。
【0057】
コンピュータプログラムの実行に適したプロセッサは、汎用マイクロプロセッサおよび専用マイクロプロセッサの両方と、任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサとを含む。一般には、プロセッサは、読取り専用メモリまたはランダムアクセスメモリから、あるいは両方から命令およびデータを受け取る。コンピュータの不可欠な要素は、命令に従って動作を実施するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般には、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば磁気ディスク、光磁気ディスク、または光ディスクをも含み、あるいはそれらからデータを受け取り、もしくはそれらにデータを転送し、またはその両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえばほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)レシーバ、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)内に組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内部ハードディスクまたは取外し可能ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補足され、または専用論理回路内に組み込まれ得る。
【0058】
ユーザとの対話を実現するために、本明細書で説明される主題の実装は、ディスプレイデバイス、たとえばCRT(陰極線管)、LCD(液晶ディスプレイ)、OLED(有機発光ダイオード)、TFT(薄膜トランジスタ)、プラズマ、他のフレキシブル構成、またはユーザに情報を表示するための任意の他のモニタと、ユーザがそれによってコンピュータに入力を与えることのできるキーボード、ポインティングデバイス、たとえばマウス、トラックボールなど、またはタッチスクリーン、タッチパッドなどを有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を実現するために使用され得、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、音声フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受け取られ得る。さらに、コンピュータは、ユーザによって使用されるデバイスに文書を送り、それから文書を受信することによって、ウェブブラウザから受信した要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送ることによってユーザと対話し得る。
【0059】
本明細書で説明される主題の実装は、たとえばデータサーバとしてバックエンド構成要素を含み、またはミドルウェア構成要素、たとえばアプリケーションサーバを含み、またはフロントエンド構成要素、たとえばユーザがそれを通じて本明細書で説明される主題の実装と対話し得るグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータを含み、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムとして実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続され得る。通信ネットワークは、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含み得る。
【0060】
本明細書で開示される特徴は、(たとえば、ケーブル、衛星、無線、または他の信号を介して受信される)より伝統的なテレビジョン番組ソースとインターネット接続性を統合するように構成された処理回路を含み得るスマートテレビジョンモジュール(または接続されたテレビジョンモジュール、ハイブリッドテレビジョンモジュールなど)上に実装され得る。スマートテレビジョンモジュールは、テレビジョンセット内に物理的に組み込まれ得、またはセットトップボックス、Blue-rayもしくは他のデジタルメディアプレーヤ、ゲームコンソール、ホテルテレビジョンシステム、他のコンパニオンデバイスなどの別々のデバイスを含み得る。スマートテレビジョンモジュールは、閲覧者がウェブ、ローカルケーブルTVチャネル、衛星TVチャネル上の、またはローカルハードドライブ上に記憶されたビデオ、ムービー、写真、および他のコンテンツを検索および発見することを可能にするように構成され得る。セットトップボックス(STB)またはセットトップユニット(STU)が、同調器を含み、テレビジョンセットおよび外部信号源に接続し得る情報アプライアンスデバイスを含み得、信号をコンテンツに変え、次いでコンテンツがテレビジョン画面または他のディスプレイデバイス上に表示される。スマートテレビジョンモジュールは、ウェブブラウザおよび複数のストリーミングメディアサービス、接続されたケーブルまたは衛星メディアソース、他のウェブ「チャネル」などの複数の異なるアプリケーションについてのアイコンを含むホーム画面またはトップレベル画面を提供するように構成され得る。スマートテレビジョンモジュールは、電子番組表をユーザに提供するようにさらに構成され得る。スマートテレビジョンモジュールに対するコンパニオンアプリケーションが、利用可能な番組についての追加の情報をユーザに提供し、ユーザがスマートテレビジョンモジュールを制御することを可能にすることなどを行うように、モバイルコンピューティングデバイス上で動作可能であり得る。代替実装では、特徴は、ラップトップコンピュータもしくは他のパーソナルコンピュータ、スマートフォン、他の携帯電話、ハンドヘルドコンピュータ、タブレットPC、または他のコンピューティングデバイス上で実装され得る。
【0061】
本明細書は多くの特定の実装の詳細を含むが、これらを、何らかの発明または特許請求され得るものの範囲に関する制限と解釈すべきではなく、特定の発明の特定の実装に特有の特徴の説明と解釈すべきである。本明細書の別々の実装の文脈内で説明されるいくつかの特徴は、組み合わせて単一の実装としても実装され得る。逆に、単一の実装の文脈内で説明される様々な特徴は、別々に複数の実装として、または任意の適切な部分組合せとしても実装され得る。さらに、特徴が、いくつかの組合せとして働くものとして上記で説明され、さらにはそのようなものとして当初は特許請求され得るが、特許請求される組合せのうちの1つまたは複数の特徴は、あるケースでは、組合せから削除され得、特許請求される組合せは、部分組合せまたは部分組合せの変形を対象とし得る。
【0062】
同様に、図面では動作が特定の順序で示されるが、このことを、望ましい結果を達成するために、そのような動作が図示される特定の順序で、もしくは順番に実施されること、またはすべての図示される動作が実施されることを必要とすると理解すべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、前述の実装での様々なシステム構成要素の分離を、すべての実装でそのような分離を必要とすると理解すべきではなく、記載のプログラム構成要素およびシステムは一般に、単一のソフトウェア製品内に共に一体化され、または複数のソフトウェア製品内にパッケージ化され得ることを理解されたい。
【0063】
したがって、主題の特定の実装が説明された。他の実装は以下の特許請求の範囲内にある。いくつかのケースでは、特許請求の範囲に記載の動作は、異なる順序で実施され、それでもなお望ましい結果を達成し得る。さらに、添付の図に示されるプロセスは、望ましい結果を達成するために、図示される特定の順序、または順次的順序を必ずしも必要とするわけではない。いくつかの実装では、マルチタスキングまたは並列処理が利用され得る。