(57)【要約】  コンピュータシステムが、クライアントがあるフレームレートで生成したクエリフィンガープリントを使用して実行されたフィンガープリント照合に基づいて、クライアントが受け取っているメディアストリームを識別する。次に、コンピュータシステムは、コンピュータシステムによるメディアストリーム内の実時間とクライアントのクロックに従うクライアント時間との間の同期ロックの確立を容易にするために、クライアントにフレームレートを高めさせる。次に、コンピュータシステムは、確立された同期ロックを基礎として使用して、メディアストリームのコンテンツ修正を実行すべき実時点を、クライアントがコンテンツ修正を実行すべきクライアント時間時点に対応付ける。また、コンピュータシステムは、決定されたクライアント時間時点でクライアントにコンテンツ修正を実行させる。【選択図】図２
2021524714.tif 000002
【特許請求の範囲】
【請求項１】
クライアントが受け取っているメディアストリームを表すクエリフィンガープリントをあるフレームレートで生成するステップと、
前記生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供するステップと、
前記クライアントが受け取っている前記メディアストリームの識別後に、前記クエリフィンガープリントを生成する前記フレームレートを高めるステップと、
前記高められたフレームレートで生成された前記クエリフィンガープリントを、（ｉ）前記既知のメディアストリーム内のタイムラインに沿って定められた実時間と、（ｉｉ）前記クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立するために使用されるように提供するステップと、
前記確立された同期ロックに基づいて決定された特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームのコンテンツ修正を実行するステップと、
を含むことを特徴とする方法。
【請求項２】
前記方法は、前記クライアントによって実行される請求項１に記載の方法。
【請求項３】
前記生成されたクエリフィンガープリントを、前記既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供するステップは、前記生成されたクエリフィンガープリントを、前記既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するためにサーバによって使用されるように前記サーバに送信するステップを含む、
請求項１に記載の方法。
【請求項４】
前記クライアントが受け取っている前記メディアストリームの識別後に前記クエリフィンガープリントを生成する前記フレームレートを高めるステップは、前記クライアントが受け取っている前記メディアストリームを前記サーバが識別した後に、前記クエリフィンガープリントを生成する前記フレームレートを高めるための指令を前記サーバから受け取り、これに応答して前記クエリフィンガープリントを生成する前記フレームレートを高めるステップを含む、
請求項３に記載の方法。
【請求項５】
前記高められたフレームレートで生成された前記クエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供するステップは、前記高められたフレームレートで生成された前記クエリフィンガープリントを、前記同期ロックを確立するためにサーバによって使用されるように前記サーバに送信するステップを含む、
請求項１に記載の方法。
【請求項６】
前記確立された同期ロックに基づいて決定された前記特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームの前記コンテンツ修正を実行するステップは、
前記確立された同期ロックに基づいて決定された前記特定のクライアント時間時点で前記メディアストリームを修正するように前記クライアントに指示するコンテンツ修正指令を前記クライアントが前記サーバから受け取るステップと、
前記特定のクライアント時間時点で前記クライアントが前記メディアストリームの前記修正を実行するステップと、
を含む、請求項５に記載の方法。
【請求項７】
前記高められたフレームレートで生成された前記クエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供するステップは、前記クエリフィンガープリントを、前記同期ロックを確立するために前記クライアントのプログラムモジュールによって使用されるように前記クライアントの前記プログラムモジュールに提供するステップを含む、
請求項１に記載の方法。
【請求項８】
前記高められたフレームレートで生成された前記クエリフィンガープリントを基礎として使用して、実時間とクライアント時間との間の前記同期ロックを確立するステップをさらに含む、
請求項１に記載の方法。
【請求項９】
前記高められたフレームレートで生成された前記クエリフィンガープリントを基礎として使用して、実時間とクライアント時間との間の前記同期ロックを確立するステップは、
前記高められたフレームレートで生成された前記クエリフィンガープリントと、前記既知のメディアストリームの基準フィンガープリントとを比較するステップと、
前記高められたフレームレートで生成された前記クエリフィンガープリントと前記既知のメディアストリームの前記基準フィンガープリントとの前記比較に基づいて、クエリフィンガープリントと基準フィンガープリントとの間の一致を定める少なくとも１つの一致点を識別するステップと、
前記クエリフィンガープリントのクライアント時間タイムスタンプと前記基準フィンガープリントの実時間タイムスタンプとの間のマッピングに基づいて前記同期ロックを確立するステップと、
を含む、請求項８に記載の方法。
【請求項１０】
前記方法は、前記クライアントによって実行され、
前記方法は、前記同期ロックの確立を容易にするために、前記クライアントが前記既知のメディアストリームの前記基準フィンガープリントを受け取るステップをさらに含む、
請求項９に記載の方法。
【請求項１１】
コンピュータシステムであって、
プロセッシングユニットと、
非一時的データストレージと、
前記非一時的データストレージに記憶されて、前記プロセッシングユニットが前記コンピュータシステムに動作を実行させるために実行できるプログラム命令と、
を備え、前記動作は、
クライアントが受け取っているメディアストリームを表すクエリフィンガープリントをあるフレームレートで生成することと、
前記生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供することと、
前記クライアントが受け取っている前記メディアストリームの識別後に、前記クエリフィンガープリントを生成する前記フレームレートを高めることと、
前記高められたフレームレートで生成された前記クエリフィンガープリントを、（ｉ）前記既知のメディアストリーム内のタイムラインに沿って定められた実時間と、（ｉｉ）前記クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立するために使用されるように提供することと、
前記確立された同期ロックに基づいて決定された特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームのコンテンツ修正を実行することと、
を含む、
ことを特徴とするコンピュータシステム。
【請求項１２】
前記コンピュータシステムは、前記クライアントに配置される請求項１１に記載のコンピュータシステム。
【請求項１３】
前記生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供することは、前記生成されたクエリフィンガープリントを、前記既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するためにサーバによって使用されるように前記サーバに送信することを含む、
請求項１１に記載のコンピュータシステム。
【請求項１４】
前記高められたフレームレートで生成された前記クエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供することは、前記高められたフレームレートで生成された前記クエリフィンガープリントを、前記同期ロックを確立するためにサーバによって使用されるように前記サーバに送信することを含む、
請求項１１に記載のコンピュータシステム。
【請求項１５】
前記コンピュータシステムは、前記クライアントによって実装され、
前記確立された同期ロックに基づいて決定された前記特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームの前記コンテンツ修正を実行することは、
前記確立された同期ロックに基づいて決定された前記特定のクライアント時間時点で前記メディアストリームを修正するように前記クライアントに指示するコンテンツ修正指令を前記サーバから受け取ることと、
前記特定のクライアント時間時点で前記メディアストリームの前記修正を実行することと、
を含む、請求項１４に記載のコンピュータシステム。
【請求項１６】
前記動作は、前記高められたフレームレートで生成された前記クエリフィンガープリントを基礎として使用して、実時間とクライアント時間との間の前記同期ロックを確立することをさらに含む、
請求項１１に記載のコンピュータシステム。
【請求項１７】
前記高められたフレームレートで生成された前記クエリフィンガープリントを基礎として使用して、実時間とクライアント時間との間の前記同期ロックを確立することは、
前記高められたフレームレートで生成された前記クエリフィンガープリントと、前記既知のメディアストリームの基準フィンガープリントとを比較することと、
前記高められたフレームレートで生成された前記クエリフィンガープリントと前記既知のメディアストリームの前記基準フィンガープリントとの前記比較に基づいて、クエリフィンガープリントと基準フィンガープリントとの間の一致を定める少なくとも１つの一致点を識別することと、
前記クエリフィンガープリントのクライアント時間タイムスタンプと前記基準フィンガープリントの実時間タイムスタンプとの間のマッピングに基づいて前記同期ロックを確立することと、
を含む、請求項１６に記載のコンピュータシステム。
【請求項１８】
前記コンピュータシステムは、前記クライアントによって実装され、
前記動作は、前記同期ロックの確立を容易にするために、前記既知のメディアストリームの前記基準フィンガープリントを受け取ることをさらに含む、
請求項１７に記載のコンピュータシステム。
【請求項１９】
プロセッシングユニットが動作を実行するために実行できる命令を記憶した非一時的コンピュータ可読媒体であって、前記動作は、
クライアントが受け取っているメディアストリームを表すクエリフィンガープリントをあるフレームレートで生成することと、
前記生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供することと、
前記クライアントが受け取っている前記メディアストリームの識別後に、前記クエリフィンガープリントを生成する前記フレームレートを高めることと、
前記高められたフレームレートで生成された前記クエリフィンガープリントを、（ｉ）前記既知のメディアストリーム内のタイムラインに沿って定められた実時間と、（ｉｉ）前記クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立するために使用されるように提供することと、
前記確立された同期ロックに基づいて決定された特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームのコンテンツ修正を実行することと、
を含む、ことを特徴とする非一時的コンピュータ可読媒体。
【請求項２０】
前記非一時的コンピュータ可読媒体は、前記クライアントに実装される請求項１９に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願との相互参照〕
本出願は、２０１８年１０月２２日に出願された米国特許出願第１６／１６６，９４８号、及び２０１８年７月１６日に出願された米国仮特許出願第６２／６９８，６２９号に対する優先権を主張するものであり、これらの各文献はその全体が引用により本明細書に組み入られる。
【０００２】
本出願は、２０１８年１０月２２日に出願された米国特許出願第１６／１６６，５６１号にも関連し、この文献はその全体が引用により本明細書に組み入れられる。
【背景技術】
【０００３】
典型的なメディアクライアントは、ビデオ及び／又はオーディオコンテンツなどのメディアコンテンツを表すアナログ又はデジタルメディアストリームを受け取り、メディアコンテンツの出力及び／又はストリームの転送を行って、ディスプレイ画面及び／又はオーディオスピーカなどのユーザインターフェイス上にコンテンツを提示するように動作する。このようなクライアントの例としては、テレビ、コンピュータモニタ、投影システム、スピーカ、ヘッドフォン、セットトップボックス（例えば、ケーブル又は衛星ＴＶ受信機）、デジタルビデオレコーダ、ラジオ、パーソナルコンピュータ、モバイル通信装置、ゲーム機、ストリーミングメディアプレーヤなどが挙げられる。
【０００４】
一例として、テレビは、（例えば、放送を通じて、セットトップボックスから、インターネット接続を通じて、又は別の方法で）放送ストリームを受信し、この放送ストリームのメディアコンテンツをユーザに提示することができる。別の例として、セットトップボックスは、多チャンネル映像番組配信事業者（ｍｕｌｔｉ−ｃｈａｎｎｅｌ  ｖｉｄｅｏ  ｐｒｏｇｒａｍ  ｄｉｓｔｒｉｂｕｔｏｒ）から放送ストリームを受信し、高精細マルチメディアインターフェイス（ＨＤＭＩ(登録商標)）ケーブル又はその他のインターフェイスを介してストリームのメディアコンテンツをテレビ及び／又はオーディオ／ビデオ受信機に出力して再生することができる。さらに別の例として、デジタルビデオ又はオーディオレコーダも同様に放送ストリームを受信するが、この放送ストリームを記憶して後で再生することができる。さらに別の例として、スピーカ又はヘッドフォンは、ラジオ、コンピュータ又はその他の装置から放送オーディオストリームを受信し、このストリームのオーディオコンテンツをユーザに提示することができる。他にも数多くの例が考えられる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
いくつかの状況では、メディアクライアントが、メディアストリームの受信中にストリームのメディアコンテンツの一部を修正することが有用な場合がある。例えば、ユーザに対してコンテンツが再生される際に、ユーザが当初含まれていた広告の代わりに代替広告を受け取るように、クライアントがメディアコンテンツの広告又はその他のセグメントを代替広告又はその他の代替コンテンツに動的に置き換えることが有用な場合がある。別の例として、ユーザに対してコンテンツが再生される際に、ユーザが当初含まれていたコンテンツと共に補足コンテンツを受け取るように、クライアントがメディアコンテンツの一部をチャンネル識別、コンテキスト情報又は広告コンテンツなどのオーバレイ又は分割画面コンテンツで動的に補足することが有用な場合がある。
【０００６】
さらに、クライアントがメディアストリーム内の特定の時点でこのようなコンテンツ修正を実行することが望ましい場合もある。例えば、クライアントが既存の広告を代替広告に動的に置き換える場合には、メディアストリーム内で既存の広告が開始した時点でクライアントが代替広告を配置することが望ましいと考えられる。同様に、クライアントがメディアコンテンツの特定の部分をその部分に関連するオーバレイで補足する場合には、この部分の開始時にクライアントがオーバレイを開始することが望ましいと考えられる。その他の例も考えられる。
【０００７】
具体的に言えば、このようなメディアストリームは、ビデオフレーム及び／又はオーディオフレームなどのフレームシーケンスを定めることができ、従ってクライアントはフレーム精度ベースで（ｏｎ  ａ  ｆｒａｍｅ−ａｃｃｕｒａｔｅ  ｂａｓｉｓ）コンテンツ修正を実行することが望ましいと考えられる。例えば、広告置換の場合、クライアントは、既存の広告の最初のフレームから正確に開始する代替広告を既存の広告の代わりに挿入することが望ましいと考えられる。また、メディアストリームの特定の部分にオーバレイを追加する場合、クライアントは、このメディアストリーム部分の最初のフレームから又は最初のフレームに特に関連してオーバレイを開始することが望ましいと考えられる。
【０００８】
クライアントによるこのコンテンツ修正の実行を容易にするには、クライアントが修正を行うべき特定の時点を学習することが必要となり得る。しかしながら、実際には、クライアントにとって未知のタイムライン上に修正時点が定められていることがある。例えば、修正時点は、メディアストリーム自体の基準タイムライン上に定められることがあるが、クライアントがこのタイムラインのコンテキストを有していないことがある。従って、この修正時点をクライアントに提供しても、クライアントがメディアストリーム内の望ましい時点で修正を実行できないこともある。
【０００９】
この非限定的な例として、テレビ放送内に現われることがある広告ポッドを定めるメディアストリームについて考察する。広告ポッドは、テレビコマーシャルなどの広告シーケンスを含む。この例では、特定のテレビチャンネルのリニア放送フィード（ｌｉｎｅａｒ  ｂｒｏａｄｃａｓｔ  ｆｅｅｄ）を受信して提示しているテレビをクライアントとすることができ、このフィード内の任意の瞬間に広告ポッドが現れることができる。例えば、特にスポーツイベントなどのライブ放送では、このようなフィード内に広告ポッドが現れる時間を予測できないこともある。或いは、特別にスケジュールされた時点に広告ポッドが現れることもある。
【００１０】
この例では、広告ポッド内の特定の広告の置換（例えば、広告を異なる広告又はその他の代替コンテンツに置き換えること）を望ましい修正とすることができる。例えば、広告ポッドが広告シーケンスＡ１、Ａ２、Ａ３、Ａ４である場合、広告Ａ３の置換を望ましい修正とすることができる。
【００１１】
この状況では、広告ポッドが、Ｔ＝０の時点から開始して広告ポッドの最後まで継続する内部タイムラインを定めることができ、広告Ａ３は、このタイムライン上の時点ＴＡ３から開始することができる。しかしながら、クライアントにはこのタイムラインのコンテキストが存在しないことがある。クライアントは、「クライアント時間」を定めるタイムライン（例えば、時刻又はその他の内部時間基準）を有する独自の内部クロックを有することができる。しかしながら、クライアントは、クライアント時間内のどこに広告ポッドタイムラインが存在するかについての高度な知識を有していなければ、望ましいコンテンツ修正時点としての値ＴＡ３のみを与えられても、望ましい時に広告置換を実行することはできない。
【００１２】
この問題に対処する１つの方法は、クライアントが受け取っているメディアストリームのタイムスタンプ付きクエリフィンガープリントと、既知の広告ポッドシーケンスなどの既知のメディアストリームのタイムスタンプ付き基準フィンガープリントとを比較するフィンガープリント照合を実行することである。
【００１３】
例えば、クライアントは、受け取っているメディアストリームのフレームのクエリフィンガープリントを生成し、クライアントの内部クロックに基づいてこれらのクエリフィンガープリントにタイムスタンプすることができ、これらのタイムスタンプ付きクエリフィンガープリントをコンピュータシステムが受け取って分析することができる。さらに、コンピュータシステムは、既知の広告ポッドシーケンスなどの既知のメディアストリームのフレームの、既知のメディアストリーム内のタイムラインに沿って定められた基準時間又は「実時間（ｔｒｕｅ  ｔｉｍｅ）」に基づいてタイムスタンプされた基準フィンガープリントを提供されることもできる。従って、コンピュータシステムは、タイムスタンプ付きクエリフィンガープリントをタイムスタンプ付き基準フィンガープリントと比較して、フィンガープリントの一致が見つかった時に、照合用クエリフィンガープリントのタイムスタンプが照合用基準フィンガープリントのタイムスタンプに一致すると結論付けることができる。
【００１４】
照合用クエリフィンガープリントのタイムスタンプと基準フィンガープリントのタイムスタンプとの間の相関性を確立することは、クライアント時間と実時間との間の「同期ロック」又は時間マッピングを確立することに相当することができる。例えば、照合用クエリフィンガープリントのタイムスタンプと照合用基準フィガープリントのタイムスタンプとの間の差分は、既知のメディアストリーム内の実時間と、クライアントがメディアストリームを受け取った時のクライアント時間との間の時間オフセットを定めることができる。従って、コンピュータシステムは、既知のメディアストリーム内のフレームの実時間時点の知識を与えられると、確立された同期ロックを使用して、クライアントが受け取っているメディアストリーム内の同じフレームの関連するクライアント時間時点を決定することができる。例えば、コンピュータシステムは、所与の実時間時点に一致するクライアント時間時点を決定するために、実時間とクライアント時間との間の時間オフセットを適用することができる。
【００１５】
従って、上記の広告ポッドの例を続けると、コンピュータシステムは、確立された同期ロックを使用して、クライアントが受け取っているメディアストリーム内の広告Ａ３を置換すべきクライアント時間時点を示すクライアント時間値（例えば、クライアントが広告置換を開始すべきクライアント時間時点）に実時間値ＴＡ３を対応付けることができる。その後、クライアントは、この決定されたクライアント時間時点で広告Ａ３の置換を実行することができる。
【００１６】
しかしながら、このプロセスで発生し得る技術的課題として、クエリフィンガープリントと基準フィンガープリントとの間の信頼性の高いフィンガープリント照合を容易にできるほど十分な速さでクライアントがクエリフィンガープリントを生成しない場合がある。具体的に言えば、クライアントは、その限られた処理能力、メモリ及び／又はその他のリソースの節約に役立つように、受け取っているメディアストリームのフレームレートよりも大幅に低いことがある比較的低いフレームレートでフィンガープリントを生成するように構成されることがある。この結果、検出されたフィンガープリントの一致が不正確であったり、確立された同期ロックが不正確であったり、クライアントが所望のコンテンツ修正をメディアストリーム内の誤った時点で実行してしまい、場合によっては早すぎたり又は遅すぎたりすることがある。
【００１７】
例えば、毎秒３０フレームを有するビデオでは、クライアントが毎秒２フレームなどの低いフレームレートでクエリフィンガープリントを生成するように確立されることがある。しかしながら、低レートでフィンガープリント照合を実行すると、フィンガープリント照合の信頼度が低くなってしまうことがある。この１つの理由は、メディアストリームが、一定期間にわたってメディアコンテンツが全く変化しないメディアシーケンス部分に対応する同一又はほぼ同一のフレームの様々なサブシーケンスを含み得るからである。この結果、低レートで生成されたクエリフィンガープリントの一部が複数の基準フィンガープリントに一致して一致の信頼度を下げてしまうことがある。
【課題を解決するための手段】
【００１８】
この技術的課題に対処するのに役立つ機構を開示する。
【００１９】
本開示によれば、クライアントが、通常は比較的低いレート（例えば、上記の例では毎秒２フレーム）でクエリフィンガープリントを確立し、コンピュータシステムが、これらの低レートのクエリフィンガープリントを既知のメディアストリームの基準フィンガープリントとの比較のための基礎として使用して、クライアントが受け取っているメディアストリームが既知のメディアストリームであると最初に判定し、すなわちクライアントが受け取っているメディアストリームを識別する。
【００２０】
これにより、コンピュータシステムは、クライアントが既知のメディアストリームを受け取っていると判定すると、クライアントにそのクエリフィンガープリント生成レートを高めさせ、すなわち相対的に低いレートでのクエリフィンガープリントの生成から相対的に高いレート（例えば、上記の例では毎秒１６又は３０フレーム）でのクエリフィンガープリントの生成に切り替えさせる。次に、コンピュータシステムは、比較的信頼度の高い同期ロックを確立するために、高レートのクエリフィンガープリントを既知のメディアストリームの基準フィンガープリントとの比較のための基礎として使用する。次に、コンピュータシステムは、確立された同期ロックを基礎として使用して、クライアントが受け取っているメディアストリームの特定の時点でクライアントにコンテンツ修正を実行させる。
【００２１】
代表的実装では、コンピュータシステムが、クライアントが受け取っているメディアストリームを表す、クライアントが第１のフレームレートで生成したクエリフィンガープリントを受け取ることができる。コンピュータシステムは、クライアントによって生成された低レートのクエリフィンガープリントを受け取ると、この低レートのクエリフィンガープリントを既知のメディアストリームを表す基準フィンガープリントと比較する。コンピュータシステムは、この比較に基づいて、クライアントが受け取っているメディアストリームが既知のメディアストリームであることを示す１又は２以上の第１の一致を検出する。
【００２２】
次に、コンピュータシステムは、１又は２以上の一致の検出に応答して、クライアントに第１のフレームレートでのクエリフィンガープリントの生成から第１のフレームレートよりも高い第２のフレームレートでのクエリフィンガープリント（「高レートクエリフィンガープリント」）の生成に遷移させ、それぞれがクライアントのクロックに従うそれぞれのクエリフィンガープリントタイムスタンプを有する、クライアントによって生成された高レートフィンガープリントを受け取る。
【００２３】
コンピュータシステムは、クライアントによって生成された高レートクエリフィンガープリントを受け取ると、高レートクエリフィンガープリントと既知のメディアストリームを表す基準フィンガープリントとをさらに比較する。また、コンピュータシステムは、このさらなる比較に基づいて、それぞれがクエリフィンガープリントタイムスタンプのうちの関連するタイムスタンプを有する１又は２以上の第２の一致を検出する。
【００２４】
次に、コンピュータシステムは、各第２の一致に関連するクエリフィンガープリントタイムスタンプに基づいて、クライアントの内部クロックに従って定められた、クライアントが受け取っているメディアストリームのコンテンツ修正をクライアントが実行すべき時点を決定する。コンピュータシステムは、この決定された時点でクライアントにコンテンツ修正を実行させる。
【００２５】
必要に応じて添付図面を参照しながら以下の詳細な説明を読むことにより、当業者にはこれらの及びその他の態様、利点及び代替例が明らかになるであろう。さらに、本概要の説明及び後述する説明は、本発明を限定ではなく一例として示すものにすぎないと理解されたい。
【図面の簡単な説明】
【００２６】
【図１】開示する特徴を実装できるシステムを示す簡略ブロック図である。
【図２】本開示に従って実行できる動作を示すフローチャートである。
【図３】本開示に従って実行できる動作を示す別のフローチャートである。
【図４】本開示に従って動作できるコンピュータシステムのコンポーネントを示す簡略ブロック図である。
【発明を実施するための形態】
【００２７】
図面を参照すると、図１は、開示する様々な原理を適用できるシステム例の簡略ブロック図である。しかしながら、本明細書で説明するこの及びその他の構成及びプロセスは他の様々な形を取ることもできると理解されるであろう。例えば、要素及び動作は、並べ替え、分散させ、置換し、組み合わせ、省略し、追加し、又は別様に修正することができる。さらに、本明細書において１又は２以上のエンティティによって実行されるものとして説明する動作は、これらのエンティティが実行することも、及び／又はこれらのエンティティの代わりにプログラム命令を実行する１又は２以上のプロセッシングユニットなどがハードウェア、ファームウェア及び／又はソフトウェアを通じて実行することもできると理解されるであろう。
【００２８】
図１に示すように、このシステム例は、メディアソース１４からリアルタイムでメディアストリームを受け取るように構成されたメディアクライアント１２を含む。
【００２９】
実際に、メディアクライアント１２は、上述したように、ビデオ及び／又はオーディオコンテンツなどのメディアコンテンツを表すアナログ又はデジタルメディアストリームをメディアソース１４から受け取り、メディアコンテンツの出力及び／又はストリームの転送を行って、ディスプレイ画面及び／又はオーディオスピーカなどのユーザインターフェイス上にコンテンツを提示するように動作するよう構成することができる。メディアクライアントは、数ある可能性の中でも特に上述した形態のうちのいずれかを取ることができる。
【００３０】
メディアソース１４は、場合によってはメディアクライアント１２の形態に依存する様々な形態を取ることもできる。一例として、メディアクライアント１２がテレビである場合、メディアソース１４は、選択されたメディアストリームを出力してテレビが提示できるように構成されたローカルセットトップボックス（例えば、ケーブル又は衛星受信機）又はストリーミングメディアサーバとすることができ、或いはメディアソース１４は、数ある可能性の中でも特に放送テレビ局などとすることもできる。また、メディアクライアントがコンピュータである場合、メディアソースは、インターネットストリーミングメディアサーバ又はその他のメディアプロバイダを含むことができる。或いは、メディアソース１４は、メディアクライアント１２に一体化された、及び／又はメディアクライアント１２が再生のためにローカルにアクセスしてメディアストリームを受け取る（例えば、取り出す）ことができるデータストレージとすることもできる。その他の例も考えられる。
【００３１】
さらに図１に示すように、メディアクライアント１２は、ネットワーク（例えば、インターネット又はプライベートネットワーク）１６を介して、メディアソース１４に関連及び／又は一体化することもしないこともできるネットワークサーバ１８と通信することができる。
【００３２】
ある実装例では、メディアクライアント１２及びネットワークサーバ１８が、上述したような動作の実行を容易にするデータ通信に関与することができる。例えば、代表的なコンピュータシステムの態様をサーバ１８が実装し、クライアント１２と相互運用して同期ロックを確立し、同期ロックを適用してクライアントがコンテンツ修正を実行すべきクライアント時間時点を決定し、決定されたクライアント時間時点にクライアントにコンテンツ修正を実行させることもできる。さらに又は或いは、代表的なコンピュータシステムの態様をクライアント１２が実装し、サーバ１８と相互運用して同様の動作を実行することもできる。
【００３３】
上述したように、クライアント１２などのメディアクライアントは、メディアストリームを受け取っている時に、ストリームのコンテンツのセグメントを置換又は補足することなどのためにストリームのコンテンツの一部を修正することが有用な場合がある。さらに、上述したように、クライアントは、メディアストリーム内の特定の時点でこれを行うことが望ましい場合がある。例えば、ストリームがビデオフレーム及び／又はオーディオフレームなどのフレームシーケンスを定める場合、クライアントは、シーケンスの特定のフレームから開始する修正を実行することが望ましい場合がある。
【００３４】
コンピュータシステムは、上述したようなコンテンツ修正を容易にするために、最初にクライアントが受け取っているメディアストリームを識別することができる。例えば、コンピュータシステムは、最初にクライアントが受け取っているメディアストリームが修正すべき特定のコンテンツを含むメディアストリームであると判定することができる。コンピュータシステムは、メディアストリームを識別すると、クライアントがコンテンツ修正を実行すべきメディアストリーム内の特定の時点を決定し、この決定された時点でクライアントにコンテンツ修正を実行させることができる。
【００３５】
クライアント１２が受け取っているメディアストリームを識別する１つの方法は、クライアントが受け取っているメディアコンテンツを表すデジタルフィンガープリントデータをクライアント（又は付属装置）に生成させて、このフィンガープリントデータと既知のメディアストリームのメディアコンテンツを表す基準フィンガープリントデータとをサーバ１８に比較させ、１又は２以上のフィンガープリント照合を使用してクライアントが既知のメディアストリームを受け取っていることを示すことである。
【００３６】
ある実装例では、サーバ１８又は別のこのようなエンティティが、既知のメディアストリームを表す基準フィンガープリントデータを確立又は別様に入手することができる。例えば、サーバ１８は、既知のメディアストリームのフレームを表す基準デジタルフィンガープリントシーケンスを確立し、又は提供されることができる。サーバ又は別の実体は、既知のメディアストリームのフレームをプログラム的に分析し、既知のメディアストリームのコピーを入力として受け取り、現在知られている又は後で開発されるメディアフィンガープリンティングプロセス又はアルゴリズムを適用して基準フィンガープリントを生成することによって、これらの基準フィンガープリントを確立することができる。
【００３７】
これらの基準フィンガープリントは、フィンガープリント照合を容易にするように比較的高い粒度で生成することができる。例えば、基準フィンガープリントは、既知のメディアストリームのフレーム毎にそれぞれ確立することができる。従って、毎秒３０フレームのビデオを含むメディアストリームの場合、シーケンスは、毎秒３０フレームのレート、又は高レート基準フィンガープリントとして妥当な別の高レートで生成された基準ビデオフィンガープリントを含むことができる。
【００３８】
さらに、クライアント１２は、メディアストリームを受け取ると、受け取っているストリームのメディアコンテンツを表すクエリフィンガープリントデータをリアルタイムで生成し、これを分析のためにサーバ１８に送信することができる。クライアントは、フィンガープリント比較を容易にするために、基準フィンガープリントを確立するために適用される同じフィンガープリンティングプロセス又はアルゴリズムを使用してこれらのクエリフィンガープリントを確立することができる。しかしながら、上述したように、クライアントは、そのリソース限界（例えば、処理能力、メモリ及びネットワーク速度の限界）又はその他の理由に起因して、またこのクエリフィンガープリント生成がクライアントの進行中のプロセスとなり得ることによって、これらのクエリフィンガープリントを比較的低いレートで生成するように構成されることがある。例えば、ビデオを含むメディアストリームの場合、クライアントは、これらのクエリフィンガープリントをわずか毎秒２フレームのレートで生成するように構成され、生成されたクエリフィンガープリントを１．５秒毎程度でサーバに送信することがある。その他の例も考えられる。
【００３９】
サーバは、クライアントからこのクエリフィンガープリントデータを受け取ると、クエリフィンガープリントデータを既知のメディアストリームの基準フィンガープリントデータと比較することができる。そして、サーバは、この比較によってクエリフィンガープリントデータが基準フィンガープリントデータに一致すると十分な信頼度で判定した場合、クライアントが受け取っているメディアストリームが既知のメディアストリーム（すなわち、既知のメディアストリームのコピー）であると結論付けることができる。
【００４０】
サーバは、このフィンガープリント比較をフレーム毎ベースで実行することができる。例えば、ビデオコンテンツを考慮すると、サーバは、フレームのクエリフィンガープリントをフレームの基準フィンガープリントと比較する分析をビデオフレーム毎に実行することができる。この比較プロセスは、フィンガープリントの構造に応じて様々な形態のうちのいずれかを取ることができる。例えば、この比較は、フィンガープリント間の最大偏差を計算し、最大偏差が所定の許容差内に収まるかどうかを判定することを含むことができる。さらに、フィンガープリントが２進値である場合、この判定は、ブール型の判定とすることも、又は（フィンガープリントのそれぞれのビット位置間の不一致数としての）ハミング距離の計算を伴うこともできる。フィンガープリントが１０進値又はベクトル（例えば、ビデオフレーム領域毎のグレイ値）などのより複雑な値である場合、この判定は、値又はベクトル間の距離を求めることを含むことができる。他にも数多くの例が考えられる。
【００４１】
また、サーバは、このフィンガープリント比較プロセスを所望の許容差レベルで実行することもできる。例えば、この比較は、より多くの数の相違を認める許容差及び／又はより大きなサイズの相違を認める許容差などの、フィンガープリント間の相違の許容差が比較的大きな粗いものとすることができる。一例として、２つの３２ビットのフィンガープリントを互いに比較する場合、たとえ２つの又は別の指定数のビットが一致しない場合でも、粗い比較では、一般にこれらのフィンガープリントを互いに一致するとみなすことができる。或いは、この比較は、このような相違の許容差が低い、及び／又は根本的なメディアの特定の部分を表すと思われる特定のフィンガープリント成分に比較の焦点を当てた、より粒度の細かいものとすることもできる。
【００４２】
この結果、サーバは、このクライアントが生成したクエリフィンガープリントと既知のメディアストリームの基準フィンガープリントとの比較を通じて１又は２以上の一致を発見することができる。例えば、サーバは、クライアントが受け取っているメディアストリームのフレームのクエリフィンガープリントが既知のメディアストリームのフレームのそれぞれの基準フィンガープリントに一致する１又は２以上の場合を発見することができる。従って、この一致は、クライアントが受け取っているメディアストリームが既知のメディアストリームであるとの結論を立証し、又は裏付けることができる。
【００４３】
サーバは、クライアントが受け取っているメディアストリームを識別し終えると、クライアントがコンテンツ修正を実行すべきメディアストリームの時点を決定することができる。例えば、代表的な実装では、サーバが、既知のメディアストリーム内のコンテンツ修正を行うべき時点と、その時点で行うべきコンテンツ修正とを示す基準データを入手することができる。例えば、この基準データは、コンテンツ修正を開始すべき既知のメディアストリームの特定のフレームを識別することができる。従って、サーバは、基準データを参照してこの所望のコンテンツ修正時点を決定することができる。
【００４４】
次に、サーバは、メディアストリーム内の決定された時点でクライアントにコンテンツ修正を実行させる指令をクライアントに送信することができる。例えば、サーバは、ネットワーク１６を介して、メディアストリーム内の決定された時点を指定してクライアントに置換又はオーバレイ用のメディアを提供するメッセージ、或いはメディアストリーム内のその時点でクライアントが実行すべきコンテンツ修正についてクライアントに別様に指示するメッセージをクライアントに送信することができる。また、クライアントは、この指令を受け取って解釈し、これに応答してメディアストリーム内の指示された時点でコンテンツ修正を実行するように構成することができる。
【００４５】
このプロセスでは、サーバが、クライアントがメディアストリームのコンテンツ修正を実行すべき特定の時点を知ることができる。例えば、サーバがアクセスできる基準データは、この時点を既知のメディアストリーム内の、すなわち上述した「実時間」内のタイムラインで測定された特定の時間として指定することができる。例えば、上述したように、このタイムラインは、既知のメディアストリームの開始時における基点時間（ｏｒｉｇｉｎ  ｔｉｍｅ）（例えば、Ｔ＝０）から開始することができ、既知のメディアストリームの各フレームは、このタイムライン上の特定の時点で発生することができる。従って、サーバは、クライアントがメディアストリームのコンテンツ修正を実行すべき実時間時点を基準データから決定することができる。
【００４６】
しかしながら、クライアントの時間基準は異なる場合がある。上述したように、クライアントの時間基準は、クライアントの内部クロックに従って定められた「クライアント時間」とすることができる。クライアント時間及び実時間は、互いに同じ速度で進むことができれば最も有利であるが、これらの基準点が異なる可能性もある。従って、単に既知のメディアストリームの実時間時点が分かっていても、これ自体によってクライアント時間のコンテキストが得られるわけではない。この結果、上述したように、クライアントがコンテンツ修正の実行を開始すべきメディアストリーム内の時点をクライアントが理解できる形でサーバがどのように特徴付けることができるかが問題となる。
【００４７】
上記で提案したように、この問題に対処する１つの方法は、クライアントによって提供された照合用クエリフィンガープリントのタイムスタンプを、サーバがメディアストリームのクライアント時間基準を決定する方法としてサーバに使用させた後に、このクライアント時間基準を、クライアントがコンテンツ修正を開始すべきメディアストリーム内の時点を特徴付ける基礎としてサーバに使用させることである。
【００４８】
これを容易にするために、クライアントは、そのクエリフィンガープリントを生成する際に、クライアントの内部クロックに基づいて各クエリフィンガープリントにタイムスタンプすることができる。従って、クライアントが分析のためにサーバに送信するクエリフィンガープリントは、タイムスタンプ付きクエリフィンガープリントとすることができる。さらに、サーバは、既知のメディアストリームフレームのタイムスタンプ付き基準フィンガープリントを提供され、又は別様に入手することができる。例えば、サーバは、（ｉ）フレームの基準フィンガープリントと、（ｉｉ）既知のメディアストリーム内の関連する実時間タイムスタンプと、を既知のメディアストリームのフレーム毎に指定する基準データを提供されることができる。
【００４９】
サーバは、クライアントからタイムスタンプ付きクエリフィンガープリントを受け取ると、一致点、すなわちクエリフィンガープリントが基準フィンガープリントに一致する場合を検出するために、クエリフィンガープリントを基準フィンガープリントと比較することができる。サーバは、１又は２以上のこのような一致点を検出すると、検出された一致点毎に、（ｉ）一致点の実時間タイムスタンプと、（ｉｉ）一致点のクライアント時間タイムスタンプとが分かるようになる。
【００５０】
従って、サーバは、実時間とクライアント時間との間の同期ロックを効果的に確立するようになる。すなわち、サーバは、この時点で、一致フレームがメディアストリーム内のどこに存在していたか、及びこのメディアストリーム内の時点におけるクライアント時間が何であったかが分かるようになるので、（ｉ）メディアストリーム内の実時間タイムスタンプと、（ｉｉ）クライアントの内部クロックに従うクライアント時間との間のマッピングを効果的に確立するようになる。上述したように、この同期ロックは時間オフセットに相当することができるので、サーバは、メディアストリーム内の所与の実時間時点に時間オフセットを適用して、メディアストリーム内の対応するクライアント時間時点を決定できるようになる。
【００５１】
サーバは、このメディアストリーム内の一致点を発見して同期ロックを確立すると、クライアントがメディアストリームのコンテンツ修正を実行すべきクライアント時間時点、すなわちクライアントがメディアストリーム内のコンテンツを開始すべき場所を計算することができる。例えば、サーバは、コンテンツ修正を行うべき実時間時点の基準データ指示を与えられると、同期ロックによって定められたオフセットを適用して、コンテンツ修正を行うべき関連するクライアント時間時点を決定することができる。或いは、サーバは、コンテンツ修正を開始すべき関連するクライアント時間時点を決定するために、既知のメディアストリーム内の一致点の実時間時点からコンテンツ修正を開始すべきフレーム時間までの期間を計算した後に、この計算された期間を一致点のクライアント時間時点に加算することもできる。他の例も考えられる。
【００５２】
次に、サーバは、この決定されたクライアント時間時点の明細を、このクライアント時間時点から開始するコンテンツ修正をクライアントが実行するための指令と共にクライアントに送信することができる。また、この時点から開始して実行すべきコンテンツ修正に関する情報をクライアントが未だ提供されていない場合、サーバは、このコンテンツ修正情報をクライアントに送信することもできる。例えば、サーバは、クライアントが受け取っているメディアストリームのコンテンツの代わりにクライアントが代用する特定の代替コンテンツをデータストレージから取り出してクライアントに送信することができる。或いは、サーバは、クライアントが代替コンテンツを取得できるネットワーク又はローカルストレージアドレスなどの、このような代替コンテンツへのポインタをクライアントに送信することもできる。
【００５３】
従って、クライアントは、指示されたクライアント時間時点からコンテンツ修正を開始するための指令をサーバから受け取ることができる。また、クライアントは、このクライアント時間時点で実行すべき修正を定めるデータを未だ提供されていない場合、サーバ又はサーバによって指定されたアドレスなどからこのデータを受け取ることもできる。その後、クライアントは、クライアントの内部クロックを参照することによって、指示されたクライアント時間時点から正確にコンテンツ修正を開始するように機能することができる。例えば、クライアントは、数ある可能性の中でも特に、クライアントが受け取っているメディアストリームのフレームを代替コンテンツのフレームに置き換え、又はクライアントが受け取っているメディアストリームのフレームに補足コンテンツを重ね合わせることを、指示されたクライアント時間時点から開始することができる。
【００５４】
しかしながら、上述したように、このプロセスでは、クライアントがそのクエリフィンガープリントを上述したような毎秒２フレームのビデオフィンガープリントなどの比較的低いレートで生成する場合、別の問題が発生することがある。このような低レートで生成されたクエリフィンガープリントをサーバに提供すると、メディアストリームの一致点をサーバが確信を持って識別することが困難になり、及び／又は同期ロックの信頼度が低下してしまうことがある。上述したように、この困難性の１つの理由は、メディアストリームが、一定期間にわたってメディアコンテンツが全く変化しないメディアシーケンスの部分に相当する同一又はほぼ同一のフレームの様々なサブシーケンスを含む可能性があるからである。この結果、低レートで生成されたクエリフィンガープリントの一部が複数の基準フィンガープリントに一致して、せいぜい低信頼度の一致及び低信頼度の同期ロックしかもたらさないことがある。
【００５５】
この問題の解決策としては、毎秒１６フレーム又は場合によっては毎秒３０フレームなどのより高いレートでクライアントにそのクエリフィンガープリントを生成させることが挙げられる。クライアントがそのクエリフィンガープリントをより高いレートで生成すると、サーバは、クエリフィンガープリントと基準フィンガープリントとの間に１又は２以上のより信頼度の高い一致を確立することができる。例えば、サーバは、あるクエリフィンガープリントが２つの連続するフィンガープリントに一致することを検出した場合、曖昧であることを理由にこれらの一致を廃棄し、クエリフィンガープリントが単一の基準フィンガープリントのみに一致する一致を待つことができる。或いは、サーバは、クエリフィンガープリントと基準フィンガープリントとの２つの連続するペア間で同じ一致を検出した場合、曖昧であることを理由にこれらの一致を廃棄し、同様に、より唯一の一致を待つことができる。
【００５６】
しかしながら、上述したように、クライアントが継続的にこのような高レートでフィンガープリントを生成することは、クライアントのリソース限界によって困難になってしまうことがある。
【００５７】
本開示によれば、クライアントにこれらのフィンガープリント生成レートのハイブリッドを使用させることが改善された解決策になる。クライアントは、通常はリソース節約に役立つように低レート（例えば、毎秒２フレーム）でクエリフィンガープリントを生成することができる。また、サーバは、そのフィンガープリント分析をこれらの低レートクエリフィンガープリントに基づいて実行して、上述したようにクライアントが既知のメディアストリームを受け取っていると判定することができる。これにより、サーバは、クライアントが既知のメディアストリームを受け取っていると判定し、メディアストリームのその後の特定の時点でコンテンツ修正を実行すべきであることが分かると、より粒度の高いフィンガープリント比較を行えるようにクライアントにそのフィンガープリント生成レートを高めるように指示する。例えば、サーバは、毎秒２フレームでのクエリフィンガープリントの生成から毎秒１６フレーム又は毎秒３０フレームでのクエリフィンガープリントの生成に切り替え、これらの高レートのクエリフィンガープリントをサーバに提供するようにクライアントに指示することができる。
【００５８】
サーバは、クライアントが受け取っているメディアストリームを低レートのクエリフィンガープリントに基づいて識別すると、フレーム精度ベースで又は少なくともはるかに高い信頼レベルで一致点を検出して信頼度の高い同期ロックを達成するために、高レートのクエリフィンガープリントを使用してより粒度の高い分析を行うことができる。
【００５９】
このプロセスの実装例では、サーバがクライアントに送信するフィンガープリントレート変更指令が、コンテンツ修正（例えば、次に行われるコンテンツ修正）を開始すべき時点よりもはるかに前の閾値である後続のクライアント時間時点からクライアントに高フィンガープリントレートの使用を開始させることができる。このことは、検出された一致点からコンテンツ修正を開始すべき時点までかなりの時間が経過すると思われるような状況、及びサーバが高レートクエリフィンガープリントを使用して確信を持って一致点を検出するのにこのような多くの時間を必要としないと思われるような状況で役に立つと考えられる。
【００６０】
例えば、サーバ又は別のエンティティは、代表的クライアント（場合によっては問題のクライアント）が高レートでのクエリフィンガープリントの生成を開始すると、既知のメディアストリームの一致点をサーバが確信を持って検出するのに通常はどれだけの時間がかかるかを履歴データに基づいて決定することができる。この時、サーバは、この時間と低分析信頼度を考慮した所定の安全な期間とを加えたものを、クライアントがそのクエリフィンガープリント生成レートを高めるための閾値前倒し期間（ｔｈｒｅｓｈｏｌｄ  ａｄｖａｎｃｅｄ  ｄｕｒａｔｉｏｎ）と見なすことができる。或いは、サーバは、このような閾値前倒し期間値を別様に決定し又は予め提供されることもできる。
【００６１】
そして、サーバは、そのレート変更指令を、このコンテンツ修正を開始すべき前の閾値前倒し期間であるクライアント時間においてクライアントに低レートのフィンガープリンティングから高レートのフィンガープリンティングに切り替えさせるように構成することができる。サーバは、上述した低信頼度同期ロックに基づいてこの前倒しクライアント時間を計算することができる。すなわち、サーバは、クライアントの低レートクエリフィンガープリントに基づいて同期ロックを確立することで、コンテンツ修正を行うべきクライアント時間時点を推定することができる。その後、サーバは、この推定されたクライアント時間時点から閾値前倒し期間を減算して、コンテンツ修正を開始すべき前の閾値前倒し期間である前倒しクライアント時間時点を計算することができる。
【００６２】
サーバは、決定された前倒しクライアント時間時点でクライアントに高レートのフィンガープリンティングに切り替えさせるように様々な方法でそのレート変更指令を構成することができる。例えば、サーバは、前倒しクライアント時間時点でクライアントにそのフィンガープリント生成レートを即座に高めさせる指令を与える。或いは、サーバは、前倒しクライアント時間時点に達した時にクライアントにそのフィンガープリント生成レートを高めさせるように、このクライアントへの指令に前倒しクライアント時間時点の明細を含めることもできる。さらに、これに対応して、クライアントは、指示された通りに高レートのフィンガープリント生成に切り替えることによってこのような指令に応答するように構成することができる。他の例も考えられる。
【００６３】
サーバは、クライアントの高レートクエリフィンガープリントを使用してフレーム精度ベースで又は別様に高い信頼度で一致点を検出すると、上述したような信頼度の高い同期ロックを確立することができる。すなわち、サーバは、検出された一致点に関連するクエリフィンガープリントタイムスタンプと、コンテンツ修正を開始すべき時点までの計算された期間とに基づいて、コンテンツ修正を開始すべきクライアント時間時点を高い信頼度で計算することができる。その後、サーバは、計算されたクライアント時間時点でクライアントがコンテンツ修正を開始するための指令をクライアントに送信することができる。従って、クライアントは指令を受け取り、これに応答して、指示されたクライアント時間時点に達した時にコンテンツ修正を開始することができる。
【００６４】
このプロセスの非限定的な例として、テレビ放送内に出現し得る広告ポッドを定めるメディアストリームについて考察する。上述したように、広告ポッドは、テレビコマーシャルなどの広告シーケンスを含み、クライアントが受け取っているリニア放送フィードなどのリニアメディアフィード内に任意の所与の時点で現れることができる。
【００６５】
実際に、サーバは、広告ポッドのフレームを表してこれに対応する、広告ポッド内に（実時間として）定められるタイムラインに沿った時点であるタイムスタンプ付きの基準フィンガープリントを提供されることができる。さらに、サーバは、広告ポッド内の広告のうちの特定の１つを置換すべき旨の指示と、広告置換を開始すべきフレームのタイムスタンプとを提供されることができる。
【００６６】
クライアントは、メディアフィードを受け取っている時に、継続的に或いは１又は２以上のその他のトリガに応答して、毎秒２フレームなどの低レートで放送フィードのタイムスタンプ付きクエリフィンガープリントを生成し、これらのタイムスタンプ付きクエリフィンガープリントを分析のためのサーバに報告することができる。サーバは、このような各クエリフィンガープリントと、広告ポッドシーケンスのフレームを表す基準フィンガープリントとを比較することにより、クライアントが既知の広告ポッドシーケンスを受け取っていることを検出することができる。
【００６７】
サーバは、クライアントが広告ポッドシーケンスを受け取っていると判定すると、これに応答して、毎秒２フレームのクエリフィンガープリントの生成から毎秒１６又は３０フレームのクエリフィンガープリントの生成への切り替えなどの高レートのフィンガープリンティングにクライアントが切り替えるための、場合によっては上述したようにクライアントがこのレート切り替えを実行すべき前倒しクライアント時間時点を指定する指令をクライアントに送信することができる。クライアントは、これに応答してレート切り替えを実行し、その高レートのタイムスタンプ付きクエリフィンガープリントを分析のためにサーバに送信し始めることができる。
【００６８】
サーバは、上述したように高レートクエリフィンガープリントを使用することにより、広告ポッドシーケンス内の１又は２以上の一致点を高信頼レベルで検出することができる。次に、サーバは、上述したような検出された一致点に基づいて、実時間とクライアント時間との対応付けを定める比較的信頼度の高い同期ロックを確立することができる。次に、サーバは、確立された同期ロックを基礎として適用して、広告置換を開始すべきフレームの実時間時点を、クライアントが広告置換を開始すべき対応するクライアント時間時点に変換することができる。
【００６９】
次に、サーバは、この決定されたクライアント時間時点から広告置き換えを開始するための指令をクライアントに送信し、クライアントが未だ代替広告（又は代替広告へのポインタ）を提供されていない場合にはこの情報もクライアントに送信することができる。これに従って、クライアントは、指示されたクライアント時間時点で広告置換を実行することができる。
【００７０】
代表的実装では、クライアントが、広告置換などの指示されたコンテンツ修正を実行した後に、自動的に低レートクエリフィンガープリントの生成に戻ることができる。例えば、クライアントは、毎秒２フレームのクエリフィンガープリント生成から毎秒１６又は３０フレームのクエリフィンガープリント生成に切り替えていた場合、毎秒２フレームのクエリフィンガープリント生成に戻ることができる。このプロセスは、望む通りに繰り返すことができる。
【００７１】
サーバが実行するものとして上述した動作の一部は、上述したようなクライアント又はこのための別の装置が実行することもできる。
【００７２】
一例として、上記では同期ロックを確立することによってコンテンツ修正を行うべきクライアント時間時点を決定するように機能するサーバについて説明したが、これらの動作の一部をクライアント自体が実行するように構成することもできる。
【００７３】
例えば、クライアントが既知のメディアストリームを受け取っているとサーバが判定すると、クライアントは、（ｉ）メディアストリーム内の実時間タイムスタンプと（ｉｉ）クライアントの内部クロックに従う時間との間の同期ロックを確立して、コンテンツ修正を行うべきクライアント時間時点を決定するプロセスを実行することができる。ある実装例では、これを容易にするために、サーバが、クライアントに高レートのフィンガープリンティングに切り替えるように指示することに加え、メディアストリームの次の部分の一連の実時間タイムスタンプ付き基準フィンガープリントをクライアントに提供して、コンテンツ修正を開始すべきメディアストリーム内のフレームの実時間タイムスタンプをクライアントに知らせることができる。
【００７４】
従って、クライアントは、サーバからこれらのタイムスタンプ付き基準フィンガープリントを受け取って、高レートのクエリフィンガープリント生成をさらに開始することができる。また、クライアントは、１又は２以上の一致点を比較的高い信頼度で発見するために、クライアントの高レートのクエリフィンガープリントと提供された基準フィンガープリントとを比較することができる。クライアントは、これによって１又は２以上の一致点を検出すると、（ｉ）一致点の実時間タイムスタンプと、（ｉｉ）一致点のクライアント時間時点とを知るようになる。従って、クライアントは、この時点で、一致フレームがメディアストリーム内のどこに存在していたか、及びこのメディアストリームの時点におけるクライアント時間が何であったかが分かるようになるので、（ｉ）メディアストリーム内の実時間タイムスタンプと（ｉｉ）クライアントの内部クロックに従う時間との間の同期ロックをクライアント自体が効果的に確立するようになる。
【００７５】
クライアントは、このメディアストリーム内の一致点を発見して同期ロックを確立し終えると、コンテンツ修正を行うべきクライアント時間時点を容易に計算することができる。例えば、クライアントは、コンテンツ修正を開始すべき実時間時点の指示をサーバから与えられると、同期ロックによって定められるオフセットを適用して、コンテンツ修正を行うべき関連するクライアント時間時点を決定することができる。或いは、クライアントは、コンテンツ修正を開始すべき関連するクライアント時間時点を決定するために、一致点の実時間時点から指示されたコンテンツ修正を開始すべき実時間時点までのメディアストリーム内の期間を計算し、この計算された期間を一致点のクライアント時間時点に加算することもできる。その後、クライアントは、計算されたクライアント時間時点から正確にコンテンツ修正を開始するように機能することができる。
【００７６】
この代替的実装では、サーバが、メディアストリームの次の部分の高レート基準フィンガープリントをクライアントに提供して、クライアントがその高レートクエリフィンガープリントとこれらの高レート基準フィンガープリントとを容易に比較できるようにすることができる。或いは、サーバは、場合によってはリソース制約に依存して、クライアントがその高レートクエリフィンガープリントと比較できるように低レート基準フィンガープリントをクライアントに提供することもできる。この結果、クライアントは、低レート基準フィンガープリントのうちの１つ又は２つ以上に最良に一致する１又は２以上の高レートクエリフィンガープリントを決定して、決定された一致点のフレーム精度を高めるとともに同期ロックの信頼度を高める支援を行うことができる。
【００７７】
また、上記のプロセスは、クライアントが（例えば、現在の再生及び／又は記憶のために）受け取っているリニア放送フィードのリアルタイム分析に関しても、クライアントがデータストレージなどから（例えば、現在の再生又は転送のために）取り出しているメディアストリームの分析に関しても適用することができる。他の実施も考えられる。
【００７８】
図２は、上記の説明に従ってコンピュータシステムが実行できる方法を示すフローチャートである。この図には、方法の動作を特定の順序で実行されるものとして示しているが、動作によっては他の動作と当時に実行できるものもあり、他の修正も考えられる。
【００７９】
図２に示すように、ブロック２０において、コンピュータシステムは、クライアントが受け取っているメディアストリームを表す、クライアントがあるフレームレートで生成したクエリフィンガープリントを受け取る。ブロック２２において、コンピュータシステムは、（ｉ）上記のフレームレートで生成されたクエリフィンガープリントと、（ｉｉ）既知のメディアストリームを表す基準フィンガープリントとを比較することに基づいて、クライアントが受け取っているメディアストリームが既知のメディアストリームであると判定する。ブロック２４において、コンピュータシステムは、この判定に応答して、コンピュータシステムが受け取っているクエリフィンガープリントをクライアントが生成する際のフレームレートをクライアントに高めさせる。
【００８０】
次に、ブロック２６において、コンピュータシステムは、高められたフレームレートで生成されたクエリフィンガープリントを基礎として使用して、（ｉ）既知のメディアストリーム内のタイムラインに沿って定められた実時間と、（ｉｉ）クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立する。ブロック２８において、コンピュータシステムは、確立された同期ロックを基礎として使用して、クライアントが受け取っているメディアストリームのコンテンツ修正をクライアントが実行すべきクライアント時間時点を決定する。その後、ブロック３０において、コンピュータシステムは、決定されたクライアント時間時点でクライアントにコンテンツ修正を実行させる。
【００８１】
上述したように、このようなコンピュータシステムは、クライアントとネットワーク通信を行っているサーバによって実装することができる。この場合、コンピュータシステムが受け取っているクエリフィンガープリントをクライアントが生成する際のフレームレートをクライアントに高めさせる動作は、指令を前記クライアントに送信し、ここで、クライアントは、コンピュータシステムが受け取っているクエリフィンガープリントをクライアントが生成する際のフレームレートを高めることによって指令に応答するように構成されていることを含むことができる。さらに、決定されたクライアント時間時点でクライアントにコンテンツ修正を実行させることは、決定されたクライアント時間時点を示すコンテンツ修正指令をクライアントに送信することを含むことができる。
【００８２】
さらに上述したように、高められたフレームレートで生成されたクエリフィンガープリントを基礎として使用して実時間とクライアント時間との間の同期ロックを確立する動作は、（ａ）高められたフレームレートで生成されたクエリフィンガープリントと、例えば既知のメディアストリームのさらなる基準フィンガープリントなどの既知のメディアストリームの基準フィンガープリントとを比較し、（ｂ）高められたフレームレートで生成されたクエリフィンガープリントと既知のメディアストリームの基準フィンガープリントとの比較に基づいて、クエリフィンガープリントと基準フィンガープリントとの間の一致を定める少なくとも１つの一致点を識別し、（ｃ）クエリフィンガープリントのクライアント時間タイムスタンプと基準フィンガープリントの実時間タイムスタンプとの間の対応付けに基づいて同期ロックを確立する、ことを含むことができる。
【００８３】
また、上述したように、確立された同期ロックを基礎として使用して、クライアントが受け取っているメディアストリームのコンテンツ修正をクライアントが実行すべきクライアント時間時点を決定する動作は、確立された同期ロックを基礎として使用して、既知のメディアストリームのコンテンツ修正を実行すべき所定の実時間時点を、クライアントが受け取っているメディアストリームのコンテンツ修正をクライアントが実行すべき対応するクライアント時間時点に対応付けることを含むことができる。
【００８４】
さらに、上述したように、問題のコンテンツ修正はコンテンツ置換を含むことができる。例えば、クライアントが受け取っているメディアストリームは、広告シーケンスを定める広告ポッドを含むことができ、コンテンツ修正は、シーケンスの広告を置換メディアコンテンツに置き換えることを含むことができる。また、上述したように、方法は、クライアントが受け取っているメディアストリームの代用とすべき代替コンテンツをクライアントに提供することを含むこともできる。
【００８５】
図３は、クライアント又は他の１又は２以上のエンティティが本開示に従って実行できる方法を示す別のフローチャートである。ここでも、方法の動作を特定の順序で実行されるものとして示しているが、動作によっては他の動作と当時に実行できるものもあり、他の修正も考えられる。
【００８６】
図３に示すように、ブロック３２において、方法は、クライアントが受け取っているメディアストリームを表すクエリフィンガープリントをあるフレームレートで生成するステップを含む。ブロック３４において、方法は、生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいてクライアントが受け取っているメディアストリームを識別するために使用されるように提供するステップを含む。ブロック３６において、方法は、クライアントが受け取っているメディアストリームの識別後に、クエリフィンガープリントを生成するフレームレートを高めるステップを含む。
【００８７】
次に、ブロック３８において、方法は、高められたフレームレートで生成されたクエリフィンガープリントを、（ｉ）既知のメディアストリーム内のタイムラインに沿って定められた実時間と、（ｉｉ）クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立するために使用されるように提供するステップを含む。ブロック４０において、方法は、確立された同期ロックに基づいて決定された特定のクライアント時間時点で、クライアントが受け取っているメディアストリームのコンテンツ修正を実行するステップを含む。
【００８８】
上記の説明によれば、生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいてクライアントが受け取っているメディアストリームを識別するために使用されるように提供する動作は、生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいてクライアントが受け取っているメディアストリームを識別するためにサーバによって使用されるようにサーバに送信するステップを含むことができる。同様に、クライアントが受け取っているメディアストリームの識別後にクエリフィンガープリントを生成するフレームレートを高める動作は、クライアントが受け取っているメディアストリームをサーバが識別した後に、クエリフィンガープリントを生成するフレームレートを高めるための指令をサーバから受け取り、これに応答して（指令に応答して）クエリフィンガープリントを生成するフレームレートを高めるステップを含むことができる。
【００８９】
さらに、上述したように、高められたフレームレートで生成されたクエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供する動作は、高められたフレームレートで生成されたクエリフィンガープリントを、同期ロックを確立するためにサーバによって使用されるようにサーバに送信するステップを含むことができる。また、確立された同期ロックに基づいて決定された特定のクライアント時間時点で、クライアントが受け取っているメディアストリームのコンテンツ修正を実行する動作は、（ａ）確立された同期ロックに基づいて決定された特定のクライアント時間時点でメディアストリームを修正するようにクライアントに指示するコンテンツ修正指令をクライアントがサーバから受け取るステップと、（ｂ）特定のクライアント時間時点でクライアントがメディアストリームの修正を実行するステップとを含むことができる。
【００９０】
また、高められたフレームレートで生成されたクエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供する動作は、クエリフィンガープリントを、同期ロックを確立するためにクライアントのプログラムモジュールによって使用されるようにクライアントのプログラムモジュールに提供するステップを含むことができる。例えば、クライアントは、高められたフレームレートで生成されたクエリフィンガープリントに基づいて同期ロックを確立するように動作するプログラムモジュールを含むプログラムロジックを提供されることができ、従ってこれらのクエリフィンガープリントは、同期ロックの確立を容易にするためにこのモジュールに提供することができる。
【００９１】
さらに、上述したように、方法は、高められたフレームレートで生成されたクエリフィンガープリントを基礎として使用して、実時間とクライアント時間との間の同期ロックを確立するステップをさらに含むことができる。例えば、方法は、（ｉ）高められたフレームレートで生成されたクエリフィンガープリントと、既知のメディアストリームの基準フィンガープリントとを比較するステップと、（ｉｉ）高められたフレームレートで生成されたクエリフィンガープリントと既知のメディアストリームの基準フィンガープリントとの比較に基づいて、クエリフィンガープリントと基準フィンガープリントとの間の一致を定める少なくとも１つの一致点を識別するステップと、（ｉｉｉ）クエリフィンガープリントのクライアント時間タイムスタンプと基準フィンガープリントの実時間タイムスタンプとの間のマッピングに基づいて同期ロックを確立するステップとを含むことができる。
【００９２】
上記でさらに説明した実装例では、この同期ロックの確立をクライアントが行うことができる。また、これを容易に行うために、方法は、高レートで生成されたクエリフィンガープリントと既知のメディアストリームの基準フィンガープリントとの比較をクライアントが実行できるように、クライアントが既知のメディアストリームの基準フィンガープリントを受け取るステップをさらに含むことができる。
【００９３】
次に、図４は、上述した様々な動作を実行できるコンピュータシステム例のブロック図である。上述したように、このようなコンピュータシステムの態様は、数ある可能性の中でも特にメディアクライアント１２及び／又はサーバ１８が実装することができる。従って、図４のブロック図は、１又は２以上のこのようなエンティティのコンポーネントを表すことができる。
【００９４】
図４に示すように、コンピュータシステム例は、ネットワーク通信インターフェイス４２と、プロセッシングユニット４４と、非一時的データストレージ４６とを含み、これらは全て、ネットワーク、メッセージバス及び／又は１又は２以上の他の接続機構４８を通じて互いに結合又は通信可能に連結することができる。
【００９５】
ネットワーク通信インターフェイス４２は、コンピュータシステムが送信及び受信を行えるようにすることができる。ネットワーク通信インターフェイス４２は、数ある可能性の中でも特に、有線及び／又は無線イーサネットインターフェイスと、関連する回路及びソフトウェアとを含むことができる。プロセッシングユニット４４は、１又は２以上の汎用プロセッサ（例えば、マイクロプロセッサ）及び／又は１又は２以上の専用プロセッサ（例えば、特定用途向け集積回路など）を含むことができる。非一時的データストレージ４６は、磁気、光学又はフラッシュストレージなどの１又は２以上の揮発性及び／又は不揮発性ストレージコンポーネントを含むことができる。
【００９６】
図４に示すように、非一時的データストレージ４６は、プロセッシングユニットがコンピュータシステムに上述したような動作を実行させるために実行できるプログラム命令５０を記憶する（例えば、保持し、プログラム命令５０によって符号化され、或いは別様に具体化し又は含む）。
【００９７】
一例として、これらの動作は、（ｉ）メディアクライアントがあるフレームレートで生成したメディアストリームのクエリフィンガープリントを受け取り、（ｉｉ）受け取ったクエリフィンガープリントと既知のメディアストリームの基準フィンガープリントとを照合することを含む、メディアクライアントが受け取っているメディアストリームを識別することを含むことができる。ここでは、コンピュータシステムが少なくとも部分的にメディアクライアントによって実装される場合、クエリフィンガープリントを受け取る動作は、メディアクライアントのフィンガープリント生成モジュール（例えば、クエリフィンガープリント生成を実行するメディアクライアントのプログラムモジュール）によって生成されたクエリフィンガープリントをメディアクライアントのプログラムモジュール内に受け取ることを含むことができる。また、コンピュータシステムが少なくとも部分的にサーバによって実装される場合、クエリフィンガープリントを受け取る動作は、メディアクライアントからサーバに送信されたクエリフィンガープリントを受け取ることを含むことができる。
【００９８】
さらに、これらの動作は、メディアストリームを識別したことに応答して、メディアクライアントにクエリフィンガープリントを生成するフレームレートを高めるように指示することを含むことができる。例えば、コンピュータシステムが少なくとも部分的にメディアクライアントによって実装される場合、この動作は、メディアクライアントのフィンガープリント生成モジュールにフレームレートを高めるように指示することを含むことができる。また、コンピュータシステムが少なくとも部分的にサーバによって実装される場合、この動作は、クエリフィンガープリントを生成するフレームレートをメディアクライアントに高めさせる指令をメディアクライアントに送信することを含むことができる。
【００９９】
また、これらの動作は、メディアクライアントが高められたフレームレートで生成したクエリフィンガープリントに基づいて、既知のメディアストリーム内のタイムラインに沿って定められた実時間と、メディアクライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立することを含むことができる。例えば、この動作は、（ｉ）メディアクライアントが高められたフレームレートで生成した（メディアクライアント及び／又はサーバによって同様に実行された）クエリフィンガープリントを受け取り、（ｉｉ）メディアクライアントが高められたフレームレートで生成したクエリフィンガープリントと既知のメディアストリームの基準フィンガープリントとの間の少なくとも１つの一致を検出し、（ｉｉｉ）少なくとも１つの一致の実時間タイムスタンプと少なくとも１つの一致のクライアント時間タイムスタンプを相関させることを含むことができる。
【０１００】
また、これらの動作は、確立された同期ロックを基礎として使用して、メディアクライアントが受け取っているメディアストリームのコンテンツ修正をメディアクライアントが実行すべきクライアント時間時点を決定することを含むことができる。例えば、この動作は、確立された同期ロックを基礎として使用して、既知のメディアストリームのコンテンツ修正を実行すべき所定の実時間時点を、メディアクライアントが受け取っているメディアストリームのコンテンツ修正をメディアクライアントが実行すべき対応するクライアント時間時点に対応付けることを含むことができる。
【０１０１】
次に、これらの動作は、決定されたクライアント時間時点でメディアクライアントにコンテンツ修正を実行させることを含むことができる。例えば、コンピュータシステムが少なくとも部分的にメディアクライアントによって実装される場合、この動作は、決定されたクライアント時間時点でメディアクライアントのコンテンツ修正モジュール（例えば、コンテンツ修正を実行するメディアクライアントのプログラムモジュール）にコンテンツ修正を実行するように指示することを含むことができる。また、コンピュータシステムが少なくとも部分的にサーバによって実装される場合、この動作は、決定されたクライアント時間時点でメディアクライアントにコンテンツ修正を実行させる指令をメディアクライアントに送信することを含むことができる。
【０１０２】
これに替えて、又はこれに加えて、これらの動作は、クライアントが受け取っているメディアストリームを表すクエリフィンガープリントをあるフレームレートで生成することを含むことができる。さらに、これらの動作は、生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいてクライアントが受け取っているメディアストリームを識別するために使用されるように提供することを含むことができる。また、これらの動作は、クライアントが受け取っているメディアストリームの識別後に、クエリフィンガープリントを生成するフレームレートを高めることを含むことができる。この動作は次に、高められたフレームレートで生成されたクエリフィンガープリントを、（ｉ）既知のメディアストリーム内のタイムラインに沿って定められた実時間と、（ｉｉ）クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立するために使用されるように提供することを含むことができる。また、これらの動作は、確立された同期ロックに基づいて決定された特定のクライアント時間時点で、クライアントが受け取っているメディアストリームのコンテンツ修正を実行することを含むことができる。
【０１０３】
上述した様々な特徴は、このコンピュータシステムの文脈で実装することができ、逆もまた同様である。例えば、ここでもコンテンツ修正は、数ある可能性の中でも特に広告ポッド内の広告の置換などのコンテンツ置換を含むことができる。さらに、生成されたクエリフィンガープリントを、メディアストリームを識別するために使用されるように提供する動作は、生成されたクエリフィンガープリントを、メディアストリームを識別するためにサーバによって使用されるようにサーバに送信することを含むことができ、高められたフレームレートで生成されたクエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供する動作は、高められたフレームレートで生成されたクエリフィンガープリントを、同期ロックを確立するためにサーバによって使用されるようにサーバに送信することを含むことができる。
【０１０４】
さらに、上述した様々な動作は、非一時的コンピュータ可読媒体に記憶された、プロセッシングユニットが動作を実行するために実行できるプログラム命令によって定めることができる。このような非一時的コンピュータ可読媒体は、クライアント、サーバ及び／又は別のエンティティにおいて提供、統合又は別様に実装することができる。さらに、このような動作は他の形態を取ることもできる。
【０１０５】
一例として、これらの動作は、（ｉ）メディアクライアントがあるフレームレートで生成したメディアストリームのクエリフィンガープリントを受け取ることと、（ｉｉ）クエリフィンガープリントと既知のメディアストリームの基準フィンガープリントとを照合することとを含む、クライアントが受け取っているメディアストリームを識別することを含むことができる。さらに、これらの動作は、メディアストリームを識別したことに応答して、クライアントにクエリフィンガープリントを生成するフレームレートを高めさせることを含むことができる。また、これらの動作は、クライアントが高められたフレームレートで生成したクエリフィンガープリントに基づいて、既知のメディアストリーム内のタイムラインに沿って定められた実時間と、クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立することを含むことができる。
【０１０６】
次に、これらの動作は、確立された同期ロックを基礎として使用して、クライアントが受け取っているメディアストリームのコンテンツ修正をクライアントが実行すべきクライアント時間時点を決定することを含むことができる。また、これらの動作は、決定されたクライアント時間時点でクライアントにコンテンツ修正を実行させることを含むことができる。
【０１０７】
これとは別に、又はこれに加えて、プロセッシングユニットが実行できるこれらの動作は、クライアントが受け取っているメディアストリームを表すクエリフィンガープリントをあるフレームレートで生成することを含むことができる。さらに、これらの動作は、生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいてクライアントが受け取っているメディアストリームを識別するために使用されるように提供することを含むことができる。また、これらの動作は、クライアントが受け取っているメディアストリームの識別後に、クエリフィンガープリントを生成するフレームレートを高めることを含むことができる。次に、これらの動作は、高められたフレームレートで生成されたクエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供することを含むことができる。また、これらの動作は、確立された同期ロックに基づいて決定された特定のクライアント時間時点で、クライアントが受け取っているメディアストリームのコンテンツ修正を実行することを含むことができる。
【０１０８】
上述した様々な特徴もこの文脈で実装することができ、逆もまた同様である。
【０１０９】
例えば、サーバにおける実装では、クライアントにクエリフィンガープリントを生成するフレームレートを高めさせる動作が、指令を出力してクライアントに送信し、ここで、クライアントは、クライアントがクエリフィンガープリントを生成する際のフレームレートを高めることによって指令に応答するように構成されていることを含むことができ、決定されたクライアント時間時点でクライアントにコンテンツ修正を実行させる動作が、決定されたクライアント時間時点を示すコンテンツ修正指令を出力してクライアントに送信することを含むことができる。
【０１１０】
一方で、クライアントにおける実装では、クライアントにクエリフィンガープリントを生成するフレームレートを高めさせる動作が、クライアントのフィンガープリント生成モジュールにフレームレートを高めるように指示することを含むことができ、決定されたクライアント時間時点でクライアントにコンテンツ修正を実行させる動作が、決定されたクライアント時間時点でコンテンツ修正を実行するようにクライアントのコンテンツ修正モジュールに指示することを含むことができる。
【０１１１】
さらに、ここでも、クライアントが受け取っているメディアストリームは、広告シーケンスを定める広告ポッドを含むことができ、コンテンツ修正は、シーケンスの広告を置換メディアコンテンツに置き換えることを含むことができる。
【０１１２】
以上、例示的な実施形態について説明した。しかしながら、当業者であれば、本発明の実際の範囲及び趣旨から逸脱することなくこれらの実施形態に変更及び修正を行うことができると理解するであろう。
【図１】
2021524714.tif 000003
【図２】
2021524714.tif 000004
【図３】
2021524714.tif 000005
【図４】
2021524714.tif 000006
【手続補正書】
【提出日】令和3年3月15日(2021.3.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クライアントが受け取っているメディアストリームを表すクエリフィンガープリントをあるフレームレートで生成するステップと、
前記生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供するステップと、
前記クライアントが受け取っている前記メディアストリームの識別後に、前記クエリフィンガープリントを生成する前記フレームレートを高めるステップと、
前記高められたフレームレートで生成された前記クエリフィンガープリントを、（ｉ）前記既知のメディアストリーム内のタイムラインに沿って定められた実時間と、（ｉｉ）前記クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立するために使用されるように提供するステップと、
前記確立された同期ロックに基づいて決定された特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームのコンテンツ修正を実行するステップと、
を含むことを特徴とする方法。
【請求項２】
前記方法は、前記クライアントによって実行される請求項１に記載の方法。
【請求項３】
前記生成されたクエリフィンガープリントを、前記既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供するステップは、前記生成されたクエリフィンガープリントを、前記既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するためにサーバによって使用されるように前記サーバに送信するステップを含む、
請求項１に記載の方法。
【請求項４】
前記クライアントが受け取っている前記メディアストリームの識別後に前記クエリフィンガープリントを生成する前記フレームレートを高めるステップは、前記クライアントが受け取っている前記メディアストリームを前記サーバが識別した後に、前記クエリフィンガープリントを生成する前記フレームレートを高めるための指令を前記サーバから受け取り、これに応答して前記クエリフィンガープリントを生成する前記フレームレートを高めるステップを含む、
請求項３に記載の方法。
【請求項５】
前記高められたフレームレートで生成された前記クエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供するステップは、前記高められたフレームレートで生成された前記クエリフィンガープリントを、前記同期ロックを確立するためにサーバによって使用されるように前記サーバに送信するステップを含む、
請求項１に記載の方法。
【請求項６】
前記確立された同期ロックに基づいて決定された前記特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームの前記コンテンツ修正を実行するステップは、
前記確立された同期ロックに基づいて決定された前記特定のクライアント時間時点で前記メディアストリームを修正するように前記クライアントに指示するコンテンツ修正指令を前記クライアントが前記サーバから受け取るステップと、
前記特定のクライアント時間時点で前記クライアントが前記メディアストリームの前記修正を実行するステップと、
を含む、請求項５に記載の方法。
【請求項７】
前記高められたフレームレートで生成された前記クエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供するステップは、前記クエリフィンガープリントを、前記同期ロックを確立するために前記クライアントのプログラムモジュールによって使用されるように前記クライアントの前記プログラムモジュールに提供するステップを含む、
請求項１に記載の方法。
【請求項８】
前記高められたフレームレートで生成された前記クエリフィンガープリントを基礎として使用して、実時間とクライアント時間との間の前記同期ロックを確立するステップをさらに含む、
請求項１に記載の方法。
【請求項９】
前記高められたフレームレートで生成された前記クエリフィンガープリントを基礎として使用して、実時間とクライアント時間との間の前記同期ロックを確立するステップは、
前記高められたフレームレートで生成された前記クエリフィンガープリントと、前記既知のメディアストリームの基準フィンガープリントとを比較するステップと、
前記高められたフレームレートで生成された前記クエリフィンガープリントと前記既知のメディアストリームの前記基準フィンガープリントとの前記比較に基づいて、クエリフィンガープリントと基準フィンガープリントとの間の一致を定める少なくとも１つの一致点を識別するステップと、
前記クエリフィンガープリントのクライアント時間タイムスタンプと前記基準フィンガープリントの実時間タイムスタンプとの間のマッピングに基づいて前記同期ロックを確立するステップと、
を含む、請求項８に記載の方法。
【請求項１０】
前記方法は、前記クライアントによって実行され、
前記方法は、前記同期ロックの確立を容易にするために、前記クライアントが前記既知のメディアストリームの前記基準フィンガープリントを受け取るステップをさらに含む、
請求項９に記載の方法。
【請求項１１】
コンピュータシステムであって、
プロセッシングユニットと、
非一時的データストレージと、
前記非一時的データストレージに記憶されて、前記プロセッシングユニットが前記コンピュータシステムに動作を実行させるために実行できるプログラム命令と、
を備え、前記動作は、
クライアントが受け取っているメディアストリームを表すクエリフィンガープリントをあるフレームレートで生成することと、
前記生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供することと、
前記クライアントが受け取っている前記メディアストリームの識別後に、前記クエリフィンガープリントを生成する前記フレームレートを高めることと、
前記高められたフレームレートで生成された前記クエリフィンガープリントを、（ｉ）前記既知のメディアストリーム内のタイムラインに沿って定められた実時間と、（ｉｉ）前記クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立するために使用されるように提供することと、
前記確立された同期ロックに基づいて決定された特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームのコンテンツ修正を実行することと、
を含む、
ことを特徴とするコンピュータシステム。
【請求項１２】
前記コンピュータシステムは、前記クライアントに配置される請求項１１に記載のコンピュータシステム。
【請求項１３】
前記生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供することは、前記生成されたクエリフィンガープリントを、前記既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するためにサーバによって使用されるように前記サーバに送信することを含む、
請求項１１に記載のコンピュータシステム。
【請求項１４】
前記高められたフレームレートで生成された前記クエリフィンガープリントを、実時間とクライアント時間との間の同期ロックを確立するために使用されるように提供することは、前記高められたフレームレートで生成された前記クエリフィンガープリントを、前記同期ロックを確立するためにサーバによって使用されるように前記サーバに送信することを含む、
請求項１１に記載のコンピュータシステム。
【請求項１５】
前記コンピュータシステムは、前記クライアントに配置され、
前記確立された同期ロックに基づいて決定された前記特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームの前記コンテンツ修正を実行することは、
前記確立された同期ロックに基づいて決定された前記特定のクライアント時間時点で前記メディアストリームを修正するように前記クライアントに指示するコンテンツ修正指令を前記サーバから受け取ることと、
前記特定のクライアント時間時点で前記メディアストリームの前記修正を実行することと、
を含む、請求項１４に記載のコンピュータシステム。
【請求項１６】
前記動作は、前記高められたフレームレートで生成された前記クエリフィンガープリントを基礎として使用して、実時間とクライアント時間との間の前記同期ロックを確立することをさらに含む、
請求項１１に記載のコンピュータシステム。
【請求項１７】
前記高められたフレームレートで生成された前記クエリフィンガープリントを基礎として使用して、実時間とクライアント時間との間の前記同期ロックを確立することは、
前記高められたフレームレートで生成された前記クエリフィンガープリントと、前記既知のメディアストリームの基準フィンガープリントとを比較することと、
前記高められたフレームレートで生成された前記クエリフィンガープリントと前記既知のメディアストリームの前記基準フィンガープリントとの前記比較に基づいて、クエリフィンガープリントと基準フィンガープリントとの間の一致を定める少なくとも１つの一致点を識別することと、
前記クエリフィンガープリントのクライアント時間タイムスタンプと前記基準フィンガープリントの実時間タイムスタンプとの間のマッピングに基づいて前記同期ロックを確立することと、
を含む、請求項１６に記載のコンピュータシステム。
【請求項１８】
前記コンピュータシステムは、前記クライアントに配置され、
前記動作は、前記同期ロックの確立を容易にするために、前記既知のメディアストリームの前記基準フィンガープリントを受け取ることをさらに含む、
請求項１７に記載のコンピュータシステム。
【請求項１９】
プロセッシングユニットが動作を実行するために実行できる命令を記憶した非一時的コンピュータ可読媒体であって、前記動作は、
クライアントが受け取っているメディアストリームを表すクエリフィンガープリントをあるフレームレートで生成することと、
前記生成されたクエリフィンガープリントを、既知のメディアストリームを表す基準フィンガープリントとの比較に基づいて前記クライアントが受け取っている前記メディアストリームを識別するために使用されるように提供することと、
前記クライアントが受け取っている前記メディアストリームの識別後に、前記クエリフィンガープリントを生成する前記フレームレートを高めることと、
前記高められたフレームレートで生成された前記クエリフィンガープリントを、（ｉ）前記既知のメディアストリーム内のタイムラインに沿って定められた実時間と、（ｉｉ）前記クライアントのクロックに従って定められたクライアント時間との間の同期ロックを確立するために使用されるように提供することと、
前記確立された同期ロックに基づいて決定された特定のクライアント時間時点で、前記クライアントが受け取っている前記メディアストリームのコンテンツ修正を実行することと、
を含む、ことを特徴とする非一時的コンピュータ可読媒体。
【請求項２０】
前記非一時的コンピュータ可読媒体は、前記クライアントに配置される請求項１９に記載の非一時的コンピュータ可読媒体。
【国際調査報告】
2021524714.tif 000007
2021524714.tif 000008