(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-20
(45)【発行日】2025-01-06
(54)【発明の名称】ビデオフラグメントの2つ以上の変数への透かし入れ
(51)【国際特許分類】
H04N 21/8358 20110101AFI20241223BHJP
H04N 21/234 20110101ALI20241223BHJP
【FI】
H04N21/8358
H04N21/234
(21)【出願番号】P 2022504521
(86)(22)【出願日】2020-07-24
(86)【国際出願番号】 EP2020071008
(87)【国際公開番号】W WO2021014005
(87)【国際公開日】2021-01-28
【審査請求日】2023-07-21
(32)【優先日】2019-07-24
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】515027978
【氏名又は名称】ナグラビジョン エス.エー.
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100179062
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100199565
【氏名又は名称】飯野 茂
(74)【代理人】
【識別番号】100212705
【氏名又は名称】矢頭 尚之
(74)【代理人】
【識別番号】100219542
【氏名又は名称】大宅 郁治
(74)【代理人】
【識別番号】100153051
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】パニス、ジャン-ポール
【審査官】鈴木 順三
(56)【参考文献】
【文献】国際公開第2015/194393(WO,A1)
【文献】米国特許出願公開第2018/0352307(US,A1)
【文献】国際公開第2015/009159(WO,A1)
【文献】特開2012-065258(JP,A)
【文献】特開2015-080164(JP,A)
【文献】米国特許出願公開第2014/0019767(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00 - 21/858
(57)【特許請求の範囲】
【請求項1】
ビデオコンテンツ(10)をフラグメント化することから取得されるビデオフラグメント(f
1...f
4)を処理する方法であって、前記方法は、
複数の前記
ビデオフラグメント(f
1...f
4)の各々の2つ以上の変数(V
A,V
B)を作成するために前記複数の前記
ビデオフラグメントに透かしを入れること(102)と、ここにおいて、1つの
ビデオフラグメントの前記2つ以上の変数は、異なる透かし(A,B)を使用して透かしを入れられる、
前記
ビデオフラグメントのうちの少なくとも1つについての前記2つ以上の変数(V
A,V
B)の長さを同じ調整された長さに調整すること(104)とを備え、
前記調整された長さは、前記
ビデオフラグメントのシーケンス中の他の
ビデオフラグメントの変数と比較した前記
ビデオフラグメントのうちの前記少なくとも1つの前記2つ以上の変数の時間的位置を示すことを特徴とする、方法。
【請求項2】
長さの前記調整は、パディングデータを前記
ビデオフラグメントのうちの前記少なくとも1つの前記変数のうちの1つ以上に追加することを備える、請求項1に記載の方法。
【請求項3】
前記
ビデオフラグメントのうちの前記少なくとも1つの前記2つ以上の変数の前記時間的位置を示す前記調整された長さに長さを調整する前に、前記
ビデオフラグメントの各々について前記2つ以上の変数の長さを均等化することを更に備える、請求項1又は2に記載の方法。
【請求項4】
長さの前記均等化は、パディングデータを前記変数のうちの1つ以上に追加することを備える、請求項3に記載の方法。
【請求項5】
長さの前記調整は、前記
ビデオフラグメントのうちの前記少なくとも1つの前記変数の長さが前記
ビデオフラグメントのシーケンス中の先行する
ビデオフラグメントの前記変数の長さよりも長くなることをもたらす、請求項1~4のうちのいずれか一項に記載の方法。
【請求項6】
前記
ビデオフラグメントのうちの前記少なくとも1つの前記変数の長さは、前記
ビデオフラグメントのシーケンス中の前記先行する
ビデオフラグメントの前記変数の長さよりも長い予め定義された数のデータ単
位である、請求項5に記載の方法。
【請求項7】
1つの
ビデオフラグメントの前記変数に透かしを入れるために使用されるのと同じ又は関連する透かしが、他の
ビデオフラグメントの前記変数に透かしを入れるために使用される、請求項1~6のうちのいずれか一項に記載の方法。
【請求項8】
前記時間的位置は、時間的に繰り返される限られた数の可能な位置内の位置として定義され、前記調整された長さは、前記限られた数の可能な位置内の前記調整された長さを有する変数の前記位置を反映する、請求項1~7のうちのいずれか一項に記載の方法。
【請求項9】
前記変数の前記時間的位置は、前記限られた数の可能な位置を法とする前記変数の長さから導出可能である、請求項8に記載の方法。
【請求項10】
前記透かし入れは、アダプティブビットレート(ABR)ビデオコンテンツ用のA/B透かし入れであり、前記A/B透かし入れは、前記
ビデオフラグメントの第1の変数(V
A)を取得するために第1の透かし(A)を使用してそれぞれの
ビデオフラグメント(f
1...f
4)に透かしを入れること、及び前記
ビデオフラグメントの第2の変数(V
B)を取得するために第2の透かし(B)を使用して前記
ビデオフラグメントに透かしを入れることを含む、請求項1~9のうちのいずれか一項に記載の方法。
【請求項11】
前記2つ以上の変数のうちの1つ以上の前記時間的位置は、変数のオフセットから導出可能である、請求項1~10のうちのいずれか一項に記載の方法。
【請求項12】
要求元への配信のためのビデオフラグメント(f
1...f
4)の変数(V
A,V
B)を選択するための方法であって、前記方法は、
ビデオフラグメントのシーケンスにフラグメント化されているビデオコンテンツの全て又は一部を求める要求を受信すること(201)と、ここにおいて、複数の前記
ビデオフラグメントは、請求項1~11のうちのいずれか一項に従って、前記複数の前記
ビデオフラグメントの各々の2つ以上の変数を作成するために透かしを入れられている、
前記
ビデオフラグメントのシーケンス中の他の
ビデオフラグメントの変数と比較した
ビデオフラグメントの前記2つ以上の変数の時間的位置を決定すること(202)と、
前記決定された時間的位置と前記要求元の識別子とに基づいて前記2つ以上の変数から1つの変数を前記複数の前記
ビデオフラグメントの各々について選択すること(203)と、
を備える、方法。
【請求項13】
前記時間的位置は、時間的に繰り返される限られた数の可能な位置内の位置として定義され、前記時間的位置は、前記限られた数の可能な位置を法とする前記変数の長さから決定される、請求項12に記載の方法。
【請求項14】
前記要求は、バイト範囲要求の形態で受信される、請求項12又は13に記載の方法。
【請求項15】
前記要求が誤った又は存在しない変数に対して成されたことを示す境界外要求を検出することを更に備える、請求項12~14のうちのいずれか一項に記載の方法。
【請求項16】
前記時間的位置の前記決定は、前記2つ以上の変数のうちの1つ以上のオフセットに更に基づく、請求項12~15のうちのいずれか一項に記載の方法。
【請求項17】
前記オフセットは、前記要求で受信される、請求項16に記載の方法。
【請求項18】
前記時間的位置の前記決定は、秘密に更に基づく、請求項12~17のうちのいずれか一項に記載の方法。
【請求項19】
請求項1~11のうちのいずれか一項に記載の方法を実行するように構成される、変数プリプロセッサモジュール。
【請求項20】
請求項19に記載の変数プリプロセッサモジュールを備える、ヘッドエンドシステム。
【請求項21】
請求項12~18のうちのいずれか一項に記載の方法を実行するように構成される、透かし埋め込み器モジュール。
【請求項22】
請求項21に記載の透かし埋め込み器モジュールを備える、CDNサーバ。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]本開示は、ビデオフラグメントをビデオフラグメントの2つ以上の変数に処理する方法、要求元、変数プリプロセッサモジュール、ヘッドエンドシステム、透かし(watermark)埋め込み器モジュール、及びCDNサーバへの配信のためのビデオフラグメントの変数を選択する方法に関する。
【背景技術】
【0002】
[0002]ストリーミングされるビデオは、ライブ及びオンデマンドの両方で、視聴者に人気が高まっている。多種多様なネットワーク及び消費者デバイスのおかげで、それは、多数のデバイスにわたってどこでもいつでもアクセス可能になりつつある。ビデオはまた、ソーシャルメディアアウトレット上のユーザ生成コンテンツビデオから、認可されたインターネットストリーミングサービスによって配信される封切り映画及びワールドクラスのスポーツイベントを含む、超高品質及び高精細度の専門コンテンツまで、多くの形態で生じる。
【0003】
[0003]インターネットは、ストリーミングされるビデオのための素晴らしい配信機構としての役割を果たすが、海賊版コンテンツのための人気の配信チャネルでもある。収益を守るために、コンテンツ所有者及び運営者の両方は、著作権侵害から認可されたビデオコンテンツを保護することに関心を持っている。ライセンス条件では、コンテンツ保護はまた、コンテンツ所有者から運営者への典型的な要件である。著作権侵害を防止し、違法コンテンツを取り下げ、違法ソースに対して行動する能力は、コンテンツ保護の重要な目的である。これらの目的を満たすためには、透かし入れ及びデジタル著作権管理(DRM:Digital Rights Management)、フィンガープリンティング、及び暗号化などその他を含む様々な技術の使用が必要である。
【0004】
[0004]著作権侵害からの商業的ビデオコンテンツの保護は、コンテンツ所有者にとって明らかに重要であり、典型的には、ライセンス条件における配信者に対する要件である。透かし入れは、盗まれたコピーを追跡して漏洩源に戻すことを可能にするので、窃盗に対抗する有用なツールである。透かし入れ技術の改善は、個々の加入者に配信されるライブコンテンツを含むほぼ全てのタイプのコンテンツに対して、配信者識別子、コンテンツ識別子、及び加入者識別子を包含する透かしを埋め込むことが現在実用的である点まで進んでいる。
【0005】
[0005]透かし入れは、アセットが修正された場合であっても、確実に抽出されることができるアセットのオーディオ部分又はビデオ部分のうちのいずれかにデータを埋め込む技法である。変更の場合、透かしは、それ自体が修正されることなくアセットと共に移動するように設計される。
【0006】
[0006]透かしを埋め込み、後に抽出するための実装の詳細は、透かし入れ技術プロバイダによって異なる。それらは、後に検出器によって抽出されることができる埋め込みデータと基本的な類似性を共有する。透かしは、海賊版コンテンツのソースの法的(forensic)識別のために使用され得る。
【0007】
[0007]法的透かし入れは、配信者レベルで、より粒度の細かいデバイスレベルで、又は加入者レベルでさえ、漏洩コンテンツのソースを識別するための手段を提供することを意図されている。漏洩コンテンツは、著作権侵害サイト上で発見されたとき、任意の埋め込まれたマークについて分析されることができ、マークは、抽出されると、存在するマークに応じて、デバイス/加入者識別までの管理の連鎖(chain of custody)を提供することができる。この情報は、次いで、漏洩源を突き止め、将来の著作権侵害を停止するように作用するために、調査チームによって用いられることができる。
【0008】
[0008]法的透かし入れは、著作権侵害対策機能を提供するが、透かし入れがコンテンツ配信チェーンに価値を追加することができる多くの用途がある。透かし入れのための実例的な応用分野は、透かしが個々のユーザに適用されないが、コンテンツが上映された劇場、日付、及び時間を識別するために使用されることができるデジタルシネマ;透かしがスクリーニングコピーを受信した視聴者を識別するために使用されることができるスクリーナ;透かし入れがブルーレイディスクなどの物理媒体に付け加えられ、後にキャプチャ及び違法な配信のために使用される再生デバイスを決定するために使用されることができる物理媒体;コンテンツを再配信する加入者を識別するために法的透かしが典型的に使用される(プレミアム)ビデオオンデマンド(VoD);オンライン著作権侵害サービスをスキャンすること、違法コンテンツから透かしを抽出すること、及びソースにおいて削除通知(take down notices)を発行すること又は違法再送信をオフにすることからのエンドツーエンド遅延を低減するために法的識別が高速である必要があるライブストリーミングである。
【0009】
[0009]VoD及びライブアプリケーションは、典型的には、IPネットワーク上でのビデオ配信を使用する。透かしの使用は、コンテンツの断片を配信することを担うネットワーク及び/又はサービスプロバイダ、並びにコンテンツにアクセスしたユーザを決定するために使用されることができる。この使用ケースは、IPネットワークを通した貴重なコンテンツの配信がリリース日により近づくにつれて関連性が高まり、コンテンツをより貴重なものにする。IPソースビデオの品質が増大しているので、著作権侵害者は、数世代後であっても、非常に高品質のコピーを依然として提供することができる。
【0010】
[0010]多くの透かし入れシステムは、互いに干渉又は置換することなくコンテンツパッケージング及び配信ワークフローの異なる段階においてマークが挿入されることができる階層化された透かしを可能にする。そのような階層化された透かしは、海賊版コンテンツが共有サイト、ソーシャルメディアサイト、及びストリーミングデバイス上で発見される場合に、管理の連鎖全体を再作成するために使用されることができる。
【0011】
[0011]2ステップ透かし入れでは、透かし埋め込みプロセスは、ビデオアセットの異なる部分について異なる変数を予め計算する第1のステップと、所望の透かし識別子を符号化するために変数の一意の組み合わせを構成する第2のステップとの2つの連続するステップに基づく。
【0012】
[0012]透かし入れを2つのステップに分割する理論的根拠は、第1のステップにおける計算負荷をオフロードして、第2のステップを可能な限り単純且つスケーラブルにすることである。第2のステップは、所望の透かし識別子を符号化する変数の一意のシーケンスを生成する。変数のシーケンスは、典型的には、信頼できる法的証拠を確立するのに十分な冗長性を有する透かし識別子を符号化する。従って、それは、識別子が利用可能なビデオ配信ネットワーク中の任意のポイントに統合されることができる。2ステップ埋め込みは、VoDサーバ又はコンテンツ配信ネットワーク(CDN:Content Distribution Network)エッジなどのサーバ上に要件を作成するがクライアントには透過的であるサーバ側埋め込みを可能にする。代替として、復号の前のクライアント上への埋め込みを可能にする。
【0013】
[0013]フラグメント透かし入れは、オーバーザトップ(OTT:over-the-top)ストリーミング技術のために使用されることができる。アダプティブビットレート(ABR:adaptive bit-rate)サポートの場合、各コンテンツは、典型的には、レンディション(rendition)としても知られる異なる品質レベルで利用可能であり、フラグメントと呼ばれるより小さい部分にチャンク化される。再生デバイスは、視聴体験を最適化するために利用可能なレンディション間で切り替えるフラグメント境界を決定し得る。フラグメント透かし入れは、挿入されるべき一意のIDに基づいて経時的にフラグメントバージョンの一意のシーケンスを選択することによって、透かしメッセージを挿入するために同じ機構を活用する。
【0014】
[0014]単一のフラグメントに対する透かし決定への入力は、典型的には、(i)要求されたフラグメントに対応する時間関連情報、典型的にはファイル名で搬送されるタイムスタンプ又はインデックス番号、及び(ii)挿入されるべき一意の識別子である。
【0015】
[0015]フラグメントは、別個のファイルとして物理的に存在することができるか、又は仮想フラグメントとして単一のファイル中に記憶されることができる。後者の場合、仮想フラグメントは、バイト範囲要求を介してアクセスされることができる。
【0016】
[0016]バイト範囲要求の場合に仮想フラグメントについての「時間」情報を取得するために、要求されたバイト範囲を時間にマッピングするマッピングテーブルを使用することが知られている。各フラグメントバイト範囲要求について、マッピングテーブルへのルックアップが、正しい透かし決定を計算するために必要とされる正しい時間を取り出すために実行される。このマッピングテーブルは、典型的には、コンテンツ配信ネットワーク(CDN)上のファイルとしてコンテンツの隣に記憶され、CDNエッジサーバが透かし決定を計算する必要があるときはいつでも要求されるであろう。ビットレートはコンテンツ及びレンディション毎に変化するので、このマッピングテーブルはコンテンツ毎及びレンディション毎に一意である。
【0017】
[0017]全てのCDNプロバイダが、それらのCDNエッジサーバ上で処理されるべき発信要求をサポートするとは限らない。結果として、フラグメント要求を処理している間に外部マッピングテーブルにアクセスすることが常に可能であるとは限らない。この欠点を克服するために、時間に対するバイト範囲の固定マッピングを使用することが提案されているが、これは非効率的であると考えられ、異なるビットレートを考慮すると画像品質に悪影響を与える。
【0018】
[0018]CDNエッジサーバ上のマッピングテーブルへのアクセスなしでは、バイト範囲が時間にリンクされることができないので、透かし決定は計算されることができない。
【発明の概要】
【0019】
[0019]本開示は、マッピングテーブルを使用することなく、例えばCDNエッジサーバ上で透かし入れ決定を可能にするための解決策を提案する。
【0020】
[0020]本開示の態様によると、ビデオフラグメントをビデオフラグメントの2つ以上の変数に処理する方法が提案され、各変数は、異なる透かしを有する。方法は、ビデオコンテンツをフラグメントのシーケンスにフラグメント化することを備えることができる。方法は、複数のフラグメントの各々の2つ以上の変数を作成するために複数のフラグメントに透かしを入れることを更に備えることができ、1つのフラグメントの2つ以上の変数は、異なる透かしを使用して透かしを入れられる。方法は、フラグメントのうちの少なくとも1つについての2つ以上の変数の長さを同じ調整された長さに調整することを更に備えることができる。調整された長さは、フラグメントのシーケンス中の他のフラグメントの変数と比較したフラグメントのうちの少なくとも1つの2つ以上の変数の時間的位置を示すことができる。
【0021】
[0021]本明細書では、「変数」という用語は、フラグメントの透かしを入れられたバージョンを示すために使用される。各フラグメントから2つ以上の変数が生成されることができ、これは、フラグメントの異なる変数を取得するために異なる透かしを使用してフラグメントが透かしを入れられることができることを意味する。
【0022】
[0022]時間的位置は、別の時間的位置に対する位置を示す任意の形態を取り得る。時間的位置の例は、絶対的又は相対的な時間的瞬間を示す時間基準である。時間的位置の別の例は、位置のシーケンスにおける位置を示すインデックス番号である。
【0023】
[0023]異なるフラグメントは、典型的には、同じ透かしを使用して透かしを入れられる。例えば、A/B透かし入れでは、第1のフラグメントは、第1のフラグメントの第1の変数を取得するために透かしAを使用して、及び第1のフラグメントの第2の変数を取得するために透かしBを使用して透かしを入れられることができる。第2のフラグメントは、第2のフラグメントの第1の変数を取得するために同じ透かしAを使用して、及び第2のフラグメントの第2の変数を取得するために同じ透かしBを使用して透かしを入れられることができる。次いで、後続のフラグメントも、同じ透かしA及びBを使用して透かしを入れられることができる。
【0024】
[0024]有利には、フラグメントのこのようにして取得された透かしを入れられた変数は、それらの時間的位置が変数の長さ中に埋め込まれている。変数の長さは、このことから、時間的位置を示し、例えば、CDNエッジサーバがマッピングテーブルなしで時間的位置を取得することを可能にする。
【0025】
[0025]実施形態では、長さの調整は、パディングデータをフラグメントのうちの少なくとも1つの変数のうちの1つ以上に追加することを備えることができる。
【0026】
[0026]実施形態では、方法は、長さを調整する前に、フラグメントの各々について2つ以上の変数の長さを均等化することを更に備えることができる。これは、1つのフラグメントの変数の長さが同じ量のパディングデータを使用して調整されることを可能にし、それは、調整ステップを容易にする。
【0027】
[0027]実施形態では、長さの均等化は、パディングデータを変数のうちの1つ以上に追加することを備えることができる。
【0028】
[0028]実施形態では、長さの調整は、フラグメントのうちの少なくとも1つの変数の長さがフラグメントのシーケンス中の先行するフラグメントの変数の長さよりも長くなることをもたらすことができる。このことから、変数の増大した長さは、変数の後の時間的位置を示すことができる。
【0029】
[0029]実施形態では、フラグメントのうちの少なくとも1つの変数の長さは、フラグメントのシーケンス中の先行するフラグメントの変数の長さよりも長い1つのデータ単位であり得る。データ単位は、好ましくはバイトであるが、代替として、フラグメント及び変数を符号化するために使用されるデータフォーマットに応じて、ビット、ワード、又は任意の他のデータ単位であり得る。
【0030】
[0030]実施形態では、複数のフラグメントの各々の2つ以上の変数は、フラグメントのうちの少なくとも1つの2つ以上の変数のために使用されるものと同じ又は関連する透かしを使用して透かしを入れられることができる。
【0031】
[0031]例えばABRビデオコンテンツ用のA/B透かし入れでは、典型的には同じ透かしが使用され得る。例えば、後に透かしメッセージの再構築を簡略化するために各バージョンで時間的位置を符号化する場合には、フラグメントの異なるバージョンを生成するために、異なるが関連する透かしを使用することが有益であり得る。例えば、関連する透かしでのA/B透かし入れの場合、各フラグメントに対して依然として2つのバージョン(A/B)が存在するが、例えば、32個の異なる位置を示す32個の異なるA透かし及び32個の異なるB透かしが存在し得る。バージョンAの透かしを包含する全てのフラグメントは、同じクラスの透かし(A)に関連するが、全く同じ透かしではないであろう。
【0032】
[0032]実施形態では、時間的位置は、時間的に繰り返される限られた数の可能な位置内の位置として定義されることができる。調整された長さは、限られた数の可能な位置内に調整された長さを有する変数の位置を反映することができる。時間的位置は、例えば、選択された変数のシーケンスから構築された透かしメッセージ中のシンボルインデックスを表し、選択された変数は、フラグメントの各々の2つ以上の変数のうちの1つである。
【0033】
[0033]実施形態では、変数の時間的位置は、限られた数の可能な位置を法とする(modulo)変数の長さから導出可能であり得る。例えば、透かしメッセージが、時間的に繰り返され得る32個のシンボルを備える場合、32を法とする変数の長さは、透かしメッセージ中のシンボルインデックスを表すことができる。
【0034】
[0034]実施形態では、2つ以上の変数のうちの1つ以上の時間的位置は、変数のオフセットから導出可能であり得る。これは、後続の変数のために同じ数のバイトを単に要求することによって後続の変数を要求することによってハッカーが誤った時間的位置を示すことを有利に防止する。
【0035】
[0035]本開示の態様によると、要求元への配信のためのビデオフラグメントの変数を選択するための方法が提案される。要求元は、例えば、クライアントデバイス又は再生デバイスである。方法は、フラグメントのシーケンスにフラグメント化されたビデオコンテンツの全て又は一部を求める要求を受信することを備えることができる。複数のフラグメントは、ビデオフラグメントをビデオフラグメントの2つ以上の変数に処理する上記で説明した方法に従って、複数のフラグメントの各々の2つ以上の変数を作成するために透かしを入れられていることができる。方法は、フラグメントのシーケンス中の他のフラグメントの変数と比較したフラグメントの2つ以上の変数の時間的位置を決定することを更に備えることができる。方法は、決定された時間的位置と要求元の識別子とに基づいて2つ以上の変数から1つの変数を複数のフラグメントの各々について選択することを更に備えることができる。要求元の識別子は、例えば、クライアントデバイス又は再生デバイスを一意に識別する識別子である。識別子は、ユーザ又は顧客を識別し得る。識別子は、時間的位置に基づいて、各フラグメントについて2つ以上の変数のうちのどれを選択すべきかを定義することができる。
【0036】
[0036]有利には、変数の長さ中に埋め込まれたそれらの時間的位置を有するフラグメントの透かしを入れられた変数は、このことから、マッピングテーブルなしで変数の時間的位置を取得するために、例えばCDNエッジサーバによって使用されることができる。時間的位置が、次いで、各フラグメントについての変数を選択して、マッピングテーブルを必要とせずに透かしメッセージを生成するために使用されることができる。
【0037】
[0037]実施形態では、時間的位置は、時間的に繰り返される限られた数の可能な位置内の位置として定義されることができ、時間的位置は、限られた数の可能な位置を法とする変数の長さから決定される。
【0038】
[0038]実施形態では、要求は、バイト範囲要求の形態で受信されることができる。
【0039】
[0039]実施形態では、方法は、要求が誤った又は存在しない変数に対して成されたことを示す境界外要求を検出することを更に備えることができる。
【0040】
[0040]実施形態では、時間的位置の決定は、暗号化又はハッシング関数などの暗号化関数に基づくことができる。
【0041】
[0041]実施形態では、時間的位置の決定は、2つ以上の変数のうちの1つ以上のオフセットに更に基づくことができる。これは、後続の変数のために同じ数のバイトを単に要求することによってハッカーが後続の変数を要求することを有利に防止する。その上、不正確な要求が検出され、記録され得る。
【0042】
[0042]実施形態では、オフセットは、要求と共に受信されることができる。このことから、要求元は、変数を取得するためにオフセットを知ることを必要とされ得る。
【0043】
[0043]実施形態では、時間的位置は、秘密に依存し得る。これは、有利には、ハッカーが有効に見える無効な要求を行うことを困難にする。秘密は、典型的には、要求が処理されているネットワークエンティティに知られている。これは、暗号関数と組み合わされたときに特に有利である。
【0044】
[0044]本開示の態様によると、ビデオフラグメントをビデオフラグメントの2つ以上の変数に処理する上記で説明した方法を実行するように構成された変数プリプロセッサモジュールが提案される。
【0045】
[0045]本開示の態様によると、上記で説明したような変数プリプロセッサモジュールを備えるヘッドエンドシステムが提案される。
【0046】
[0046]本開示の態様によると、要求元への配信のためのビデオフラグメントの変数を選択するための上記で説明した方法を実行するように構成された透かし埋め込み器モジュールが提案される。
【0047】
[0047]本開示の態様によると、上記で説明したような透かし埋め込み器モジュールを備えるCDNサーバが提案される。
【0048】
[0048]以下、本開示の実施形態を、更に詳細に説明する。しかしながら、これらの実施形態は、本開示についての保護の範囲を限定するものとして解釈されない場合があることが理解されるべきである。
【0049】
[0049]ここで、実施形態を、例としてのみ、添付の概略図を参照して説明し、添付の概略図では、対応する参照符号は、対応する部分を示す。
【図面の簡単な説明】
【0050】
【
図1】[0050]本開示の例証的な実施形態による、システム構成要素の入力及び出力を含むシステムアーキテクチャを示す。
【
図2】[0051]本開示の例証的な実施形態による方法のフロー図を示す。
【
図3】[0052]本開示の別の例証的な実施形態による方法のフロー図を示す。
【
図4】[0053]本開示の例証的な実施形態による、ビデオコンテンツのフラグメントの変数を生成及び選択するための例証的なバイト範囲パディング例を示す。 [0054]図面は、例示的な目的のみを意図され、特許請求の範囲によって規定される範囲又は保護の制限としての役割を果たすものではない。
【発明を実施するための形態】
【0051】
[0055]以下の例は、ABRビデオコンテンツ用のA/B透かし入れの形態の2ステップ透かし入れに基づく。本開示は、この例に限定されず、変数に透かしを入れられフラグメント化される任意のビデオコンテンツに適用され得ることが理解されるであろう。また、本開示は、A/B透かし入れにおけるようにフラグメント当たり2つの変数に限定されず、任意の数の変数が生成され、使用され得る。
【0052】
[0056]A/B透かし入れでは、変数は、配信ネットワークによって使用されるビデオセグメントと同じサイズを有し、ビデオセグメント当たり2つの変数、バージョンA及びバージョンBが存在する。クライアントデバイスは、(CDN)エッジにおいてプレイリスト操作又はセグメント選択を使用して、その透かし識別子で符号化されたビデオセグメントの集合のみを受信することができる。
【0053】
[0057]
図1に示すように、2ステップ透かし入れの第1のステップは、入力ビデオコンテンツ10についての変数のセットを計算するための前処理ステップであり得る。第1のステップは、典型的には、入力ビデオコンテンツ10当たり1回実行される。この例では、変数プリプロセッサ1は、入力フレーム10を受け取り、それらを2つの中間バージョンに変換する。中間バージョン中のフレームのうちの1つ以上について、変数の長さは、調整された長さを有する変数の2つのセット20、21を取得するために、以下でより詳細に説明するように、プロセッサ2によって調整され得、それは、どのバージョンが実際の再生のために使用されるかを選択することによって後の段階での高速埋め込みを可能にする。変数プリプロセッサ1及びプロセッサ2は、2つの別個の装置として実装され得るか、単一の装置に統合され得るか、又は両方のタスクを実行するように構成された1つの同じプロセッサであり得る。
【0054】
[0058]両方のバージョン20、21は、典型的には、視覚的に同一であるが、透かし挿入に起因して微妙に異なる。第1のステップでは、透かしプリプロセッサ1は、ビデオ符号化器にベースバンドコンテンツの変数を提供し得る。結果として生じる変数のセット20、21は、典型的には、伝送用の関連するコンテナ中で符号化され、パケット化される。
【0055】
[0059]
図1では、変数の第1のセット20は、4つの変数f
1V
A...f
4V
Aを含み、変数の第2のセット21は、4つの変数f
1V
B...f
4V
Bを含む。本明細書では、f1..f4は、フレームの変数を取得するために透かしを入れられている4つのフレームを示す。V
A及びV
Bは、それぞれのフレームの変数A及び変数Bを示す。変数の長さは、フラグメントのストリーム中の変数の時間的位置が後の段階で決定されることを可能にするように調整されている。
【0056】
[0060]変数は、ベースバンドドメイン(符号化前)又は符号化ドメイン(符号化後)のうちのいずれかにおいて、典型的にはフレーム毎にビデオコンテンツを分析することによって生成され得る。変数は、法的透かし入れを実行するための手段を依然として提供しながら、視聴体験に影響を及ぼすことなく交換可能に使用されることができるビデオビットストリームのセグメント(即ちチャンク又はフラグメント)の予め透かしを入れられた変数であり得る。変数の長さは、アダプティブビットレート(ABR)ビデオネットワーク中の数バイトからビデオセグメント全体までの範囲で、透かし入れ供給業者間で異なり得る。
【0057】
[0061]2ステップ透かし入れの第1のステップでは、透かしアルゴリズムが、透かし入れシステムの基本特性を定義し得る。応用分野に応じて、アルゴリズムは、例えば、短いフラグメント長をサポートするように調整され得るか、又は大きいペイロードを搬送するように調整され得る。結果として、異なるアルゴリズムは、典型的には、互いに直接互換性がなく、透かし入れシステムの全ての構成要素が同じアルゴリズムを使用することを必要とする。
【0058】
[0062]2ステップ透かし入れの第2のステップは、それが配信される受信者を一意に識別するシリアル化されたビデオビットストリーム30、31を作成することを担い得る。第2のステップは、典型的には、単一の変数を変数の各セット20、21について選択することによって、一意の変数シーケンス30、31を生成するために使用される透かし識別子へのアクセスを有する透かし埋め込み器3によって実施される。この変数シーケンス30、31は、ビデオの変更されていないセグメントを備え得る最終的な法的に透かしを入れられたビデオコンテンツの一部である。この動作は、移動中に(例えばネットワークエッジ中で)又はクライアントデバイス中で(例えば再生又はPVR記録中に)実行されることができる。
【0059】
[0063]A/B透かし入れでは、埋め込み器は、要求されたフラグメントのA又はBバージョンを提供し戻すために、要求元からのフラグメント要求を再書き込みしている。フラグメント(A又はB)の1つのバージョンは、フラグメント開始時間及び透かし中に挿入されるべき一意のID値に基づいて選択され得る。この開始時間は、典型的には、例えばDASHタイムラインの場合、フラグメントファイル名の一部であるが、バイト範囲要求を使用するとき、このバイト範囲は、フラグメント開始時間に変換される必要がある。ファイル命名又はバイト範囲変換手法を尊重するとき、同じことがHLSにも当てはまり得る。
【0060】
[0064]透かし埋め込み(第2のステップ)プロセスは、各フラグメントf
1...f
4について、変数の各セット20、21から単一の変数V
A又はV
Bを選択し、このことから所望の透かし識別子を符号化する変数シーケンスを生成する変数シーケンス生成器(VSG:Variant Sequence Generator)と、一意の識別子で透かしを入れられたビデオである変数シーケンス30、31を取得するために、選択された変数を圧縮ビデオビットストリームに適用する透かし埋め込み器(EMB:embedder)とによって実行され得る。
図1の例では、ビデオシーケンス30は、第1のエンドユーザに対して生成され得、フラグメントf
1~f
4に対する一意の透かしABABを含む。ビデオシーケンス31は、第2のエンドユーザに対して生成され得、フラグメントf
1~f
4に対する一意の透かしABBAを含む。
【0061】
[0065]変数データが独立した暗号化ブロック中で適用される場合、それらは、解読鍵の知識なしに暗号化ドメイン中で適用され得る。
【0062】
[0066]VSGは、関連コンテナ中の変数のセットを受信する。透かし識別子に基づいて、それは、変数のシーケンスを生成し、EMBは、それらをビットストリームに適用して透かしを入れられたビデオを生成する。このシーケンスは、レンダリングのために復号されるか、後の使用(PVR)のために記憶されるか、又は送信パイプラインに沿って更に転送されることができる。
【0063】
[0067]第2のステップは、OTTシナリオにおけるオリジンサーバのように、ヘッドエンドにおいて実施され得る。全てのセグメント要求は、オリジンサーバにエスカレートされ、オリジンサーバは、次いで、セグメントをクエリするエンティティに関連付けられた透かし識別子の一部を符号化する変数の一意のシーケンスを包含するシリアル化されたセグメントを生成することを担当する。A/B透かし入れでは、要求されたセグメントのバージョンA又はバージョンBのうちのいずれかを返すことになる。そのような統合では、全てのセグメント要求がオリジンサーバに到達し、そのため、キャッシュは存在しない。大規模な展開は不可能であるが、そのような統合は、スクリーナ、ホスピタリティウィンドウ、又はメザニンコンテンツ配信などのいくつかの低容量の場合に適切であり得る。
【0064】
[0068]第2のステップは、クライアントデバイスにおいて実施され得る。この場合、変数メタデータは、ビデオと共にヘッドエンドからデバイスまで移動し得る。帯域幅オーバヘッドに対する制御を維持するために、そのような統合は、通常、可能な限り微細な粒度の変数を有することを必要とする。シリアル化プロセスが平文符号化ビットストリームに対して動作するとき、信頼実行環境(TEE:Trusted Execution Environment)内でのその統合は、セキュリティ上の理由から推奨され得る。代替として、異なる変数は、異なる鍵で暗号化され得、各デバイスは、変数の一意のシーケンスへのアクセスを提供する鍵の一意のセットをプロビジョニングされ得る。変数へのアクセスのそのような暗号バインディング(crypto-binding)は、ISO BMFF及びブルーレイディスクについて標準化されている。
【0065】
[0069]第2のステップは、好ましくは、エッジ上のABRセグメント選択として実施される。A/Bセグメント選択は、各クライアントセグメント要求にちょうど間に合うように(just in time)A/B変数の準備されたセグメント間で選択が実行されるときである。ここで、2ステップ透かし入れシステムのシリアル化ステップは、エッジサーバ中で実行される。ビデオ配信システムは、A及びBセグメントの一意のシーケンスを全ての個体に配信する必要がある。これは、エッジサーバに、セグメント要求を受信したときに返されるべきセグメントのAバージョン又はBバージョンのうちのいずれかを選択させることによって達成されることができる。セグメントのバージョン、即ち変数が選択されると、エッジサーバは、次いで、場合によってはオリジンサーバにキャッシュをクエリすることができ、オリジンサーバは、それを受信者に配信する。
【0066】
[0070]エッジ上のABRセグメント選択は、バイト範囲インデックス付きプレイリストが使用される場合、又はプレイリストがテンプレート化され(スムースストリーミング及びDASH VoDプロファイル(Smooth Streaming and DASH VoD profiles)などを用いて)、セグメントが個々にアドレス指定されることができない場合に必要とされ得る。プレイリスト配信中のシリアル化の努力は排除され、同じプレイリストが全てのストリームのために使用されることができる。しかしながら、エッジは、各要求されたセグメントについて決定するために論理を適用する必要がある。この論理は、埋め込まれるべき情報の識別、セグメント選択についての決定、及び対応するセグメントの配信を含む。全ての受信者が同じプレイリストを受信するという事実は、コンテンツがダウンロードされる前のプレイリストの比較及び操作に対して更なるセキュリティの層を提供する。httpsベースのセグメントURI又は他の戦略を利用して、ローカルISPが、CDNエッジを離れた後に一見「共通の」コンテンツセグメントを更にキャッシュし、このことから、A/Bシリアル化パターンを破壊することを回避することが推奨される。
【0067】
[0071]いくつかのエッジサーバは、セグメントコンテンツ自体に対して遅い再パケット化動作(late repacketization operations)を実行することができる。これは、セグメントが、A/B間の選択を可能にするエッジ上で選択されるだけでなく、要求された後であってもこれらのセグメントの組み立てに先行することを可能にする。このアイデアは、オリジンサーバとエッジサーバとの間で単一のビデオ伝送プロトコルを使用して、キャッシング能力を最適化し、エッジにおいて再パケット化動作(コンテナ及びスクランブリング)を実行して、セグメントを所望のフォーマットで配信することである。そのような再パケット化は、符号化されたビデオバッファがある時点で平文で利用可能であることを暗示する。セグメント全体よりも微細な粒度で変数を使用する2ステップ透かし入れシステムの場合、それは、エッジにおいてシリアル化ステップを実行する機会を提供する。この場合、ビデオと一緒の変数メタデータの送信は、ストレージが2倍にされ、キャッシュがA/Bセグメントに対して2倍にされるA/B透かし入れに固有の比よりも著しく低くなり得る。この手法は、ABRに限定されず、任意のプログレッシブダウンロードに適用することができ、全ての加入者に対して共通のプレイリストを用いる。
【0068】
[0072]全てのCDNプロバイダがそれらのCDNエッジサーバ上で処理されるべき発信要求をサポートするとは限らないので、フラグメント要求を処理している間に外部マッピングテーブルにアクセスすることが常に可能であるとは限らない。そのようなマッピングテーブルは、通常、バイト範囲要求を時間にマッピングして、要求元に配信されるべき正しい変数の選択を可能にするために使用される。CDNエッジサーバ上のマッピングテーブルへのアクセスなしでは、バイト範囲が時間にリンクされることができないので、透かし決定は計算されることができない。
【0069】
[0073]マッピングテーブルなしでバイト範囲要求が処理されることを可能にするために、変数の時間的位置を示す時間的情報が、変数の長さ中で符号化される。これに関して、知られている2ステップ透かし入れは、以下のように修正及び改善される。
【0070】
[0074]コンテンツ準備ステップ、即ち第1のステップでは、各フラグメントに対応する「時間」情報を符号化するために、フラグメントの変数にパディングが適用される。パディング後、フラグメントの変数は、同じ調整された長さを有し、長さは、他のフラグメントの変数と比較した変数の時間的位置を導出するために使用されることができる。オプションとして、時間的情報を符号化するために長さを調整する前に、フラグメントの全ての透かし変数が同じサイズを有するように、ビデオコンテンツにパディングが適用され得る。
【0071】
[0075]透かし入れステップ、即ち第2のステップでは、各仮想フラグメント要求について、バイト範囲中の変数のフラグメントサイズを計算するために、バイト範囲情報が使用され得る。変数のこのフラグメントサイズに基づいて、「時間情報」が抽出され得る。
【0072】
[0076]このことから、バイト位置を時間に関連付けるためのルックアップテーブルを有する必要性が回避される。
【0073】
[0077]開始位置又はオフセットは変数の長さに依存するので、バイト範囲要求中の変数のサイズを使用する代わりに、時間的情報を取得するために、フラグメント開始位置又はオフセットが使用されることができることが理解されるであろう。
【0074】
[0078]パディングを追加することによって変数の長さ中で符号化される時間情報は、典型的には、限られた数の「透かしシンボル」を考慮する必要があるだけである。透かし入れの特定の場合では、メッセージは、経時的に繰り返される長さNの透かしシンボルのシーケンスから構築され得る。従って、少数の「透かしシンボル」のみが符号化される必要があるので、追加されるパディングは最小限に抑えられることができる。
【0075】
[0079]
図2は、f
1...f
4などのビデオフラグメントをビデオフラグメントのV
A及びV
Bなどの2つ以上の変数に処理する方法の例証的な実施形態を示し、各変数は、異なる透かしを有する。ステップ101では、ビデオコンテンツ10が、フラグメントのシーケンスにフラグメント化される。ステップ102では、複数のフラグメントf
1...f
4が、複数のフラグメントの各々の2つ以上の変数を作成するために透かしを入れられ、1つのフラグメントの2つ以上の変数は、異なる透かしを使用して透かしを入れられる。ステップ103は、フラグメントの変数のセットを作成するために透かしを入れられるべき各フラグメントf
1...f
4について透かし入れ102が繰り返され得ることを示す。ステップ104では、フラグメントのうちの少なくとも1つについての2つ以上の変数の長さが、同じ調整された長さに調整される。例えば、第1のフラグメントf
1について、2つの変数V
A及びV
Bの長さは、同じ長さを有するように調整され得る。このことから、f
1V
A及びf
1V
Bは、同じ長さを有するであろう。典型的には、これは、他のフラグメントf
2...f
4の変数についても行われる。ステップ105は、各フラグメントf
1...f
4の変数V
A、V
Bについて長さの調整104が繰り返され得ることを示す。調整された長さは、フラグメントのシーケンス中の他のフラグメントの変数と比較したフラグメントのうちの少なくとも1つの2つ以上の変数の時間的位置を示し得る。ステップ110はプロセスの終了を示し、変数の長さを調整した後のフラグメントの変数のセット20、21が取得される。
【0076】
[0080]長さの調整104の結果は、例えば以下のようになる。(長さが等しい)f2VA及びf2VBの長さは、(長さが等しい)f1VA及びf1VBよりも1つ長くなり得る。(長さが等しい)f3VA及びf3VBの長さは、(長さが等しい)f2VA及びf2VBよりも1つ長くなり得る。そして、(長さが等しい)f4VA及びf4VBの長さは、(長さが等しい)f3VA及びf3VBよりも1つ長くなり得る。このことから、変数の調整された長さは、前の変数の長さと比較した変数の長さに基づいて、変数の時間的位置を導出するために使用され得る。本開示は、4つのフラグメントf1...f4のみを有し、各フラグメントについて2つの変数VA、VBを有する、後続の変数の長さを1だけ増大させるこの特定の例に限定されないことが理解されるであろう。
【0077】
[0081]
図3は、要求元への配信のためのビデオフラグメントの変数を選択するための方法の例を示す。ステップ201では、フラグメントのシーケンスにフラグメント化されているビデオコンテンツの全て又は一部を求める要求が受信され、複数のフラグメントは、
図2に示す方法に従って、複数のフラグメントの各々の2つ以上の変数を作成するために透かしを入れられている。ステップ202では、フラグメントのシーケンス中の他のフラグメントの変数と比較したフラグメントの2つ以上の変数の時間的位置が決定される。ステップ203では、複数のフラグメントの各々について、1つの変数が、決定された時間的位置と要求元の識別子とに基づいて2つ以上の変数から選択され、識別子は、時間的位置に基づいて、各フラグメントについて2つ以上の変数のうちのどれを選択すべきかを定義する。このことから、特定のエンドユーザに対して、30、31などの一意の変数シーケンス210が作成され得る。
【0078】
[0082]
図4は、本開示の例証的な実施形態によるA/B透かし入れの例を示し、バイト範囲要求のために生成されるべき透かしメッセージは、32個のシンボルの長さを有する。この例では、生成されるべき-繰り返され得る、そして典型的には繰り返される-透かしメッセージは、「ABBBAABAABBBABABAABBBAAAAABABBBA」に等しい。本明細書では、シンボルA及びBの各々のロケーションは、シンボルインデックス0~31として導出されることができ、例えば、最初の「A」は、0のシンボルインデックスを有し、最後の「A」は、31のシンボルインデックスを有する。
【0079】
[0083]ビデオコンテンツをフラグメントのシーケンスにフラグメント化し、フラグメントにA/Bの透かしを入れた後の符号化器出力が、
図4の最も左側のテーブル41に示され、ピクチャフラグメントの11個のグループGOP#0...GOP#10について、A及びBの透かしを入れられた変数のサイズが示される。これらの変数は、例えば、エレメンタリストリーム(ES:elementary stream)中でH.264又はHEVCフラグメントとしてフォーマットされる。
【0080】
[0084]A及びB変数の初期整合(Initial alignment)301が適用され得、その結果が
図4の第2のテーブル42に示される。初期整合301は、バイト範囲要求を使用して、コンテンツのバージョンA/B間のフラグメント境界における切り替えをサポートするために必要とされ得る。また、
図4の最も左側のテーブル41に示されている符号化器出力は、適用された透かしの差に起因して、A及びB変数についてサイズがほとんど異なり、例えば、透かしA及び透かしBではGOP#0についてそれぞれ16393バイト及び16235バイトである。パディングは、フラグメント(N)にアクセスするためのバイト要求が、AバージョンとBバージョンとの両方に対して同じ「開始-終了」バイト範囲を使用するように、A/Bのサイズを等しくする、例えばGOP#0について16393バイトにするために適用され得る。初期整合後の変数は、依然として、例えばエレメンタリストリーム(ES)中のH.264又はHEVCフラグメントとしてフォーマットされ得る。初期パディングは、典型的には、OTTストリーミング中に使用される最終コンテナフォーマット、最も一般的には(フラグメント化された)MP4又はTS、で存在し続ける必要がある。
【0081】
[0085]GOPフラグメントの変数は、例えば、H264又はHEVCフォーマットから別のコンテナ及びパケットフォーマット、例えば、MP4、フラグメント化されたMP4又はTSフラグメントを有するCMAFコンテナフォーマットに変換され得る302。この変換の結果は、
図4の第3のテーブル43に示され、ピクチャのグループGOP#0...GOP#10は、それぞれフラグメントFrag#0...Frag#10に変換されており、例えば、Frag#0の変数は、17051バイトの長さを有する。フラグメントFrag#0...Frag#10は、
図1の例のフラグメントf
1...f
4と同様であり得、変数は、
図1の例の変数V
A及びV
Bと同様であり得る。
【0082】
[0086]
図4の第4のテーブル44は、テーブル45に示されるように、シンボルインデックスを変数の長さに符号化303した結果を示す。追加のパディングが、位置情報を符号化するためにフラグメントに適用され得る。追加のパディングは、時間的情報を符号化するためにフラグメントのA/Bバージョンの両方に等しく追加され得る。これは、通常はファイル名(インデックス番号又はタイムスタンプ)から取得されることができ、バイト範囲要求では利用不可能な位置情報が符号化されることを可能にする。
【0083】
[0087]例えば、32個の位置についてシンボルインデックスを符号化するためには、以下のモジュロ演算を使用するとき、最大で31バイトのパディングが必要とされるであろう:
- mod
0(N) = size
0(N) MODULO 32、ここにおいて、size
0は、例えば
図4の第3のテーブルに示されるように、フラグメントNの初期整合後のサイズである;
- padding(N) = ( 32 + SymbolIndex(N) - mod0(N) ) MODULO 32;
- size
1(N) = size
0(N) + padding(N)、ここにおいて、size
1は、例えば
図4の第4のテーブルに示されるように、フラグメントNの追加パディング後のサイズである。
【0084】
[0088]例えばCDNエッジにおける位置情報の回復は、バイト範囲要求を受信したときに実行され得る。より早くパディングによって慎重に調整された要求のサイズは、以下のモジュロ演算を使用して、要求されたフラグメントNについての符号化された位置、即ちシンボルインデックスを決定するために使用され得る:
- SymbolIndex(N) = size1(N) MODULO 32
【0085】
[0089]例えば、
図4の第4のテーブルで19139の長さを有するFrag#3を求めるバイト範囲要求が受信され得る。このFrag#3についてのシンボルインデックスは、19139 MODULO 32を演算することによって取得されることができ、その結果、SymbolIndex=3となる。このバイト範囲を要求する要求元に対して、透かしメッセージは、「ABBBAABAABBBABABAABBBAAAAABABBBA」になる前に決定された。この透かしメッセージのシンボルインデックス3において、シンボルBが示され、このことから、バイト範囲要求に応答して返されるべき変数は、MP4フラグメントのB変数である。
【0086】
[0090]上記の例では、フラグメント長(バイト単位のサイズ)は、フラグメントnの時間的位置を示し得る。これは、フラグメントnの位置がフラグメントnの長さの関数によって定義されるものとして定式化され得る:position[n] = function(length[n])、ここで、関数は、例えばmodulo Mであり、この例では以下の式をもたらす:position[n] = length[n] modulo M。
【0087】
[0091]いくつかの長さ値は、無効であるように割り当てられ得る。例えば、最大値より大きい位置にマッピングするものである。無効な長さ値の使用は、特に変数を要求するときに、エラーをシグナリングし得、記録され得る。例えば、function(length[n]) > MAXである場合、エラーがシグナリングされ得、ここで、MAXは、無効であることが知られている予め定義された値である。そのようなセキュリティ対策は、例えばハッカーによる、変数を取得するための無効で潜在的に違法な試みを検出するために使用され得る。
【0088】
[0092]後続の変数が等しい長さを有するとき、単一の有効な長さ値のときに完全なファイルが要求され得る。例えば、第1の位置にマッピングする第1のフラグメントが、長さが12000バイトである場合、攻撃者は、0~12000、12000~24000、24000~36000、36000~48000、等のバイト範囲を要求し得る。全ての長さが同じ且つ有効であるので、これらの要求は、それが第1のフラグメントであるかのようにサービスされ得る。
【0089】
[0093]同じ長さ値を使用して後続のフラグメントを要求することに対する対抗策として、1つ以上の変数の長さは、変数のオフセットによって長さに変更され得、効果的に時間的位置も変更する。位置は、次いで、開始-オフセット、長さ、及びオプションとして秘密(鍵)の関数として表され得る:position[n] = function(length[n], offset[n], optional secret)。
【0090】
[0094]いくつかのオフセット-長さ対(又は対応する位置値)は、無効であるように割り当てられ得る。例えば、オフセットを使用しない上記の例と同様に、「function(length[n], offset[n], optional secret) > MAX」である場合、エラーがシグナリング及び/又は記録され得る。そのような対抗策では、上記で述べた攻撃は、失敗する可能性が高い。
【0091】
[0095]オフセットを適用するとき、第1の呼は、典型的には、オフセット0を有するが、後続の呼は、異なるオフセットを有し得る。function(length[n], offset[n], secret)は、上記で説明したmodulo M関数などの関数に加えて、暗号ハッシュ関数又は暗号化を伴い得る。フラグメントnの位置は、このことから、この例ではposition[n] = hash(length[n], offset[n], secret) modulo Mを使用して取得され得る。
【0092】
[0096]秘密は、システム全体、配信者毎、又はコンテンツ毎であり得る。CDNは、典型的には、コンテンツ要求を処理するために、対応する秘密を知っているべきである。
【0093】
[0097]調整された長さを決定するための処理ステップは、順番に実行される必要がある。現在のフラグメントの開始オフセットは、前のフラグメントの長さに依存することに留意されたい。疑似コードでは、処理は、オフセットを含む時間的位置を取得するための以下のステップを含み得る:
offset[0] = 0;
find padding[0] which makes function(length[0]+padding[0], offset[0], secret) == 0;
offset[1] = offset[0] + length[0] + padding[0];
find padding[1] which makes function(length[1]+padding[1], offset[1], secret) == 1;
...;
offset[i] = offset[i-1] + length[i-1] + padding[i-1];
find padding[i] which makes function(length[i]+padding[i], offset[i], key) == i。
【0094】
[0098]バイト範囲要求を使用するとき、要求は、開始-オフセット(上記の例ではoffset[0])及び長さ(又は開始-オフセット及び終了-オフセット)を含み得る。このことから、開始-オフセット又は終了-オフセットは、時間的位置又は要求されたフラグメントについてのインジケータとして、又は時間的位置又は要求されたフラグメントについて取得するために使用され得る。
【0095】
[0099]開始-オフセットが0であるとき、時間的位置は、デフォルトでposition[0] = 0にマッピングし得る。開始-オフセットが非0であるとき、即ち第1のフラグメント(例えばヘッダ)の前にデータがあるとき、先行するセクション(例えばヘッダ)は、必要に応じてパディングされ得る。終了-オフセットの場合、現在のフラグメントは、終了-オフセットに正しい位置を示させるようにパディングされ得る。
【0096】
[00100]実施形態では、開始-オフセットは、以下のように位置を示すために使用されると仮定され得る:position[n] = function(offset[n], secret)。次のフラグメントのためのオフセットは、典型的には、offset[n+1] = offset[n] + length[n]として表され得る(両方ともバイト範囲要求中で与えられ得る)ので、position[n+1] = function(offset[n] + length[n], secret)と計算され得る。本明細書では、position[n]が制限されたシーケンス中の最後の位置である場合、position[n+1] = position[n] + 1 又はposition[n+1] = 0であることを必要とされ得る。
【0097】
[00101]上記の例で使用されるコーデックは、本開示の範囲を限定するものと解釈されるべきではない。以下のうちの1つなどの他のコーデックが使用され得る。過去10年間にAVC(H.264)及びVP9の2つの主なオーディオ/ビデオコーデックがあった。これらの2つは、それぞれHEVC(H.265)及びAVIに取って代わられつつある。VP9は、現在、共通メディアアプリケーションフォーマット(CMAF:Common Media Application Format)の一部としてMP4と共に使用されることができる。
【0098】
[00102]HTTPライブストリーミング(HLS:HTTP Live Streaming)は、共通メディアアプリケーションフォーマット(CMAF)の形式でフラグメント化されたMP4(fMP4:fragmented MP4)ファイルをサポートするであろう。MP4(MPEG-4 Part 12又はISO/IEC 14496-12)として一般に知られているISOベースメディアファイルフォーマット(ISOBMFF:ISO Base Media File Format)に依拠するこのMPEG承認(MPEG-ratified)メディアフォーマットは、バイト範囲アドレス指定方式を使用してMP4ファイルのフラグメント化又はセグメント化されたストリーミングを可能にするために、MPEG-4規格のこの基本的なベースラインフォーマットに依拠する。CMAFは、現在、MPEG-A Part 19又はISO/IEC 23000-19である。
【0099】
[00103]CMAFは、コーデック非依存(codec-agnostic)であるように意図されており、これは、CMAFがAVC又はHEVCのうちのいずれか、及び潜在的にAVIと共に使用されることができることを意味する。
【0100】
[00104]本開示の1つ以上の実施形態は、コンピュータシステムと共に使用するためのコンピュータプログラム製品として実装され得る。プログラム製品のプログラム(複数可)は、実施形態の機能(本明細書で説明した方法を含む)を定義し得、様々なコンピュータ可読記憶媒体上に包含されることができる。コンピュータ可読記憶媒体は、非一時的記憶媒体であり得る。例示的なコンピュータ可読記憶媒体は、(i)情報が永久的に記憶され得る書込み不能記憶媒体(例えば、CD-ROMドライブによって可読なCD-ROMディスク、ROMチップ、又は任意のタイプのソリッドステート不揮発性半導体メモリなどのコンピュータ内の読み出し専用メモリデバイス)、及び(ii)変更可能な情報が記憶され得る書込み可能記憶媒体(例えば、ハードディスクドライブ又は任意のタイプのソリッドステートランダムアクセス半導体メモリ、フラッシュメモリ)を含むが、それらに限定されない。
以下に、出願当初の特許請求の範囲に記載の事項を、そのまま、付記しておく。
[C1]
ビデオフラグメント(f
1
...f
4
)を前記ビデオフラグメントの2つ以上の変数(V
A
,V
B
)に処理する方法であって、前記方法は、
ビデオコンテンツ(10)をフラグメントのシーケンスにフラグメント化すること(101)と、
複数の前記フラグメントの各々の2つ以上の変数を作成するために前記複数のフラグメントに透かしを入れること(102)と、ここにおいて、1つのフラグメントの前記2つ以上の変数は、異なる透かしを使用して透かしを入れられる、
前記フラグメントのうちの少なくとも1つについての前記2つ以上の変数の長さを同じ調整された長さに調整すること(104)ことと、ここにおいて、前記調整された長さは、前記フラグメントのシーケンス中の他のフラグメントの変数と比較した前記フラグメントのうちの前記少なくとも1つの前記2つ以上の変数の時間的位置を示す、
を備える、方法。
[C2]
長さの前記調整は、パディングデータを前記フラグメントのうちの前記少なくとも1つの前記変数のうちの1つ以上に追加することを備える、C1に記載の方法。
[C3]
長さを調整する前に、前記フラグメントの各々について前記2つ以上の変数の長さを均等化することを更に備える、C1又は2に記載の方法。
[C4]
長さの前記均等化は、パディングデータを前記変数のうちの1つ以上に追加することを備える、C3に記載の方法。
[C5]
長さの前記調整は、前記フラグメントのうちの前記少なくとも1つの前記変数の長さが前記フラグメントのシーケンス中の先行するフラグメントの前記変数の長さよりも長くなることをもたらす、C1~4のうちのいずれか一項に記載の方法。
[C6]
前記フラグメントのうちの前記少なくとも1つの前記変数の長さは、前記フラグメントのシーケンス中の前記先行するフラグメントの前記変数の長さよりも長い予め定義された数のデータ単位、例えば1つのデータ単位であり、前記データ単位は、好ましくはバイトである、C5に記載の方法。
[C7]
1つのフラグメントの前記変数に透かしを入れるために使用されるのと同じ又は関連する透かしが、他のフラグメントの前記変数に透かしを入れるために使用される、C1~6のうちのいずれか一項に記載の方法。
[C8]
前記時間的位置は、時間的に繰り返される限られた数の可能な位置内の位置として定義され、前記調整された長さは、前記限られた数の可能な位置内の前記調整された長さを有する変数の前記位置を反映する、C1~7のうちのいずれか一項に記載の方法。
[C9]
前記変数の前記時間的位置は、前記限られた数の可能な位置を法とする前記変数の長さから導出可能である、C8に記載の方法。
[C10]
前記透かし入れは、ABRビデオコンテンツ用のA/B透かし入れである、C1~9のうちのいずれか一項に記載の方法。
[C11]
前記2つ以上の変数のうちの1つ以上の前記時間的位置は、変数のオフセットから導出可能である、C1~10のうちのいずれか一項に記載の方法。
[C12]
要求元への配信のためのビデオフラグメント(f
1
...f
4
)の変数(V
A
,V
B
)を選択するための方法であって、前記方法は、
フラグメントのシーケンスにフラグメント化されているビデオコンテンツの全て又は一部を求める要求を受信すること(201)と、ここにおいて、複数の前記フラグメントは、C1~11のうちのいずれか一項に従って、前記複数の前記フラグメントの各々の2つ以上の変数を作成するために透かしを入れられている、
前記フラグメントのシーケンス中の他のフラグメントの変数と比較したフラグメントの前記2つ以上の変数の時間的位置を決定すること(202)と、
前記決定された時間的位置と前記要求元の識別子とに基づいて前記2つ以上の変数から1つの変数を前記複数の前記フラグメントの各々について選択すること(203)と、ここにおいて、前記識別子は、前記時間的位置に基づいて、各フラグメントについて前記2つ以上の変数のうちのどれを選択すべきかを定義する、
を備える、方法。
[C13]
前記時間的位置は、時間的に繰り返される限られた数の可能な位置内の位置として定義され、前記時間的位置は、前記限られた数の可能な位置を法とする前記変数の長さから決定される、C12に記載の方法。
[C14]
前記要求は、バイト範囲要求の形態で受信される、C12又は13に記載の方法。
[C15]
前記要求が誤った又は存在しない変数に対して成されたことを示す境界外要求を検出することを更に備える、C12~14のうちのいずれか一項に記載の方法。
[C16]
前記時間的位置の前記決定は、前記2つ以上の変数のうちの1つ以上のオフセットに更に基づく、C12~15のうちのいずれか一項に記載の方法。
[C17]
前記オフセットは、前記要求で受信される、C16に記載の方法。
[C18]
前記時間的位置の前記決定は、秘密に更に基づく、C12~17のうちのいずれか一項に記載の方法。
[C19]
C1~11のうちのいずれか一項に記載の方法を実行するように構成される、変数プリプロセッサモジュール。
[C20]
C19に記載の変数プリプロセッサモジュールを備える、ヘッドエンドシステム。
[C21]
C12~18のうちのいずれか一項に記載の方法を実行するように構成される、透かし埋め込み器モジュール。
[C22]
C21に記載の透かし埋め込み器モジュールを備える、CDNサーバ。