(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-12
(45)【発行日】2024-07-23
(54)【発明の名称】イベントメッセージトラックにおけるシグナリングスキーム
(51)【国際特許分類】
H04L 67/02 20220101AFI20240716BHJP
H04L 65/65 20220101ALI20240716BHJP
【FI】
H04L67/02
H04L65/65
(21)【出願番号】P 2022564459
(86)(22)【出願日】2022-03-28
(86)【国際出願番号】 US2022022107
(87)【国際公開番号】W WO2022225651
(87)【国際公開日】2022-10-27
【審査請求日】2022-10-21
(32)【優先日】2021-04-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
【審査官】岩田 玲彦
(56)【参考文献】
【文献】国際公開第2021/067171(WO,A1)
【文献】特表2016-527753(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/02
H04L 65/65
(57)【特許請求の範囲】
【請求項1】
ハイパーテキストトランスファープロトコルによるダイナミックアダプティブストリーミング(DASH)クライアントの少なくとも1つのプロセッサによって実行される方法であって、
イベントメッセージトラックを取得するステップと、
前記イベントメッセージトラック
から1つ又は複数のイベントスキームを識別する
ためのスキーム識別子ボックスを取得するステップであって、前記1つ又は複数のイベントスキームの各イベントスキームは、前記イベントメッセージトラックに含まれるイベントを処理するために少なくとも1つのパラメータを指定する、ステップと、
前記スキーム識別子ボックスによって識別された前記1つ又は複数の前記イベントスキームに従って前記イベントメッセージトラックに基づいてメディアコンテンツを表示す
るステップと
を含む、方法。
【請求項2】
前記スキーム識別子ボックスは前記イベントメッセージトラックのトラックヘッダに含まれる、請求項1に記載の方法。
【請求項3】
前記スキーム識別子ボックスは、前記スキーム識別子ボックスにおいて識別される前記1つ又は複数のイベントスキームの数を指定するシンタックス要素を含む、請求項1に記載の方法。
【請求項4】
前記スキーム識別子ボックスは、前記各イベントスキームの識別子、又は前記各イベントスキームに対応する命名スキームの識別子の中から少なくとも1つを宣言するユニフォームリソース識別子を含む、請求項1に記載の方法。
【請求項5】
前記命名スキームを宣言する前記ユニフォームリソース識別子に基づいて、前記スキーム識別子ボックスは、前記命名スキームの名前の中から前記各イベントスキームに対応する名前を示す値を更に含む、請求項4に記載の方法。
【請求項6】
前記スキーム識別子ボックスは、前記各イベントスキームが前記イベントメッセージトラックにおいて少なくとも1回発生するかどうかを示すフラグを含む、請求項1に記載の方法。
【請求項7】
前記スキーム識別子ボックスは、前記スキーム識別子ボックスにおいて識別されていないスキームが前記イベントメッセージトラックにおいて発生することができるかどうかを示すフラグを含む、請求項1に記載の方法。
【請求項8】
請求項1~7のいずれか一項に記載の方法を行うように構成されたデバイス。
【請求項9】
少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、請求項1~7のいずれか一項に記載の方法を行わせるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年4月19日に出願された米国仮特許出願第63/176,768号の優先権を主張し、この特許の開示内容は、参照することによってその全体が本明細書に組み込まれる。
【0002】
本開示の実施形態は、メディアストリーミング、より詳細には、HTTPプロトコルによるダイナミックアダプティブストリーミング(Dynamic Adaptive Streaming over HTTP)(DASH)に関する。
【背景技術】
【0003】
ISO/IEC 23009-1のHTTPプロトコルによるダイナミックアダプティブストリーミング(DASH)の規格により、メディアセグメントに関するイベントを搬送するためのイベントメッセージボックスが導入された。更に、ISO/IEC 23001-19 CDは、トラックがイベントメッセージを搬送することができるイベントメッセージトラックフォーマットを定義している。
【0004】
しかしながら、現在のイベントメッセージトラックフォーマットには、トラックに現れる可能性があるスキームをシグナリングする能力がない。
【0005】
“Information technology-Coding of audiovisual objects-Part 12:ISO base media file format”,ISO/IEC 14496-12(December 2015),“Draft of FDIS of ISO/IEC 23000-19 Common Media Application Format for Segmented Media”,ISO/IEC JTC1/SC29/WG11 MPEG117/16819(April 2017)、及び“Text of ISO/IEC FDIS 23009-1 4th edition”,ISO/IEC JTC 1/SC 29/WG 11 N18609(August 2019)は、その全体が参照により本明細書に組み込まれる。
【発明の概要】
【課題を解決するための手段】
【0006】
実施形態において、少なくとも1つのプロセッサによって実行される方法は、メディアコンテンツを表示するためにハイパーテキストトランスファープロトコルによるダイナミックアダプティブストリーミング(DASH)クライアントによって処理されるように構成されたイベントメッセージトラックを取得するステップと、イベントメッセージトラックに現れる1つ又は複数のイベントスキームを識別するスキーム識別子ボックスを取得するステップであって、1つ又は複数のイベントスキームの各イベントスキームは、イベントメッセージトラックに含まれるイベントを処理するために少なくとも1つのパラメータを指定する、ステップと、1つもしくは複数のイベントスキームに従ってイベントメッセージトラックに基づいてメディアコンテンツを表示するためにイベントメッセージトラックをDASHクライアントに提供するステップとを含む。
【0007】
実施形態では、デバイスは、プログラムコードを記憶する少なくとも1つのメモリと、プログラムコードを読み取り、プログラムコードによって命令されるように動作するように構成された少なくとも1つのプロセッサとを含み、プログラムコードは、少なくとも1つのプロセッサに、メディアコンテンツを表示するためにハイパーテキストトランスファープロトコルによるダイナミックアダプティブストリーミング(DASH)クライアントによって処理されるように構成されたイベントメッセージトラックを取得させるように構成された第1の取得コードと、少なくとも1つのプロセッサに、イベントメッセージトラックに現れる1つ又は複数のイベントスキームを識別するスキーム識別子ボックスを取得させるように構成された第2の取得コードであって、1つ又は複数のイベントスキームの各イベントスキームは、イベントメッセージトラックに含まれるイベントを処理するための少なくとも1つのパラメータを指定する、第2の取得コードと、少なくとも1つのプロセッサに、1つもしくは複数のイベントスキームに従ってイベントメッセージトラックに基づいてメディアコンテンツを表示させるためにイベントメッセージトラックをDASHクライアントに提供させるように構成された提供コードとを含む。
【0008】
実施形態では、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、メディアコンテンツを表示するためにハイパーテキストトランスファープロトコルによるダイナミックアダプティブストリーミング(DASH)クライアントによって処理されるように構成されたイベントメッセージトラックを取得させ、イベントメッセージトラックに現れる1つ又は複数のイベントスキームを識別するスキーム識別子ボックスを取得させ、1つ又は複数のイベントスキームの各イベントスキームは、イベントメッセージトラックに含まれるイベントを処理するための少なくとも1つのパラメータを指定し、1つもしくは複数のイベントスキームに従ってイベントメッセージトラックに基づいてメディアコンテンツを表示させるためにイベントメッセージトラックをDASHクライアントに提供させる命令を記憶する、非一時的コンピュータ可読媒体。
【0009】
本開示の主題の更なる特徴、性質、及び様々な利点は、以下の詳細な説明、及び添付の図面でより明らかになるであろう。
【図面の簡単な説明】
【0010】
【
図1】実施形態による、本明細書に説明された方法、装置、及びシステムがその中で実装され得る環境の図である。
【
図2】
図1の1つ又は複数のデバイスの例示的なコンポーネントを示すブロック図である。
【
図3】一実施形態によるDASHクライアントの図である。
【
図5】一実施形態によるコンピュータコードの図である。
【発明を実施するための形態】
【0011】
図1は、いくつかの実施形態による、本明細書に説明された方法、装置、及びシステムがその中で実装され得る環境100の図である。
図1に示されるように、環境100は、ユーザデバイス110と、プラットフォーム120と、ネットワーク130とを含んでもよい。環境100のデバイスはそれぞれ、有線接続、無線接続、又は有線接続と無線接続との組合せを介して相互接続されてもよい。
【0012】
ユーザデバイス110は、プラットフォーム120に関連付けられた情報を受信し、生成し、記憶し、処理し、及び/又は提供することができる、1つ又は複数のデバイスを含む。例えば、ユーザデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(例えば、スマートフォン、無線電話など)、ウェアラブルデバイス(例えば、スマートグラスもしくはスマートウォッチなど)、又は同様のデバイスを含んでもよい。いくつかの実装形態では、ユーザデバイス110は、プラットフォーム120から情報を受信し、及び/又はプラットフォーム120に情報を送信してもよい。
【0013】
プラットフォーム120は、本明細書の他の箇所に説明されているような、1つ又は複数のデバイスを含んでもよい。いくつかの実装形態では、プラットフォーム120は、クラウドサーバ又はクラウドサーバのグループを含んでもよい。いくつかの実装形態では、プラットフォーム120は、特定の要求に応じてソフトウェアコンポーネントを交換できるように、モジュール式に設計されてもよい。したがって、プラットフォーム120は、異なる用途向けに、容易に及び/又は迅速に再構成できる。
【0014】
いくつかの実装形態では、図示のように、クラウドコンピューティング環境122下で、プラットフォーム120を受け入れることができる。とりわけ、本明細書に説明の実装形態では、プラットフォーム120がクラウドコンピューティング環境122下で受け入れられるものとして説明されているが、いくつかの実装形態では、プラットフォーム120はクラウドベースでなくてもよく(すなわち、クラウドコンピューティング環境の外部で実装されてもよい)、あるいは部分的にクラウドベースであってもよい。
【0015】
クラウドコンピューティング環境122は、プラットフォーム120を受け入れる環境を含む。クラウドコンピューティング環境122は、プラットフォーム120を受け入れる1つ又は複数のシステム及び/又は1つもしくは複数のデバイスの物理的な位置や構成に関するエンドユーザ(例えば、ユーザデバイス110)の知識を必要としない、計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供してもよい。図示のように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(集合的に「コンピューティングリソース(複数)124」と呼ばれ、個別に「コンピューティングリソース124」と呼ばれる)を含んでもよい。
【0016】
コンピューティングリソース124は、1つ又は複数のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス、又は他のタイプの計算デバイス及び/又は通信デバイスを含む。いくつかの実装形態では、コンピューティングリソース124は、プラットフォーム120を受け入れてもよい。クラウドリソースは、コンピューティングリソース124内で実行されるコンピューティングインスタンス、コンピューティングリソース124内に設けられるストレージデバイス、コンピューティングリソース124によって提供されるデータ転送デバイスなどを含んでもよい。いくつかの実装形態では、コンピューティングリソース124は、有線接続、無線接続、又は有線接続と無線接続との組合せを介して他のコンピューティングリソース124と通信してもよい。
【0017】
図1に更に示されているように、コンピューティングリソース124は、1つ又は複数のアプリケーション(「APP」)124-1、1つ又は複数の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つ又は複数のハイパーバイザ(「HYP」)124-4など、1群のクラウドリソースを含む。
【0018】
アプリケーション124-1は、ユーザデバイス110及び/又はプラットフォーム120に提供されるか、又はアクセスされてもよい1つ又は複数のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110にソフトウェアアプリケーションをインストールして実行する必要を排除することができる。例えば、アプリケーション124-1は、プラットフォーム120に関連付けられたソフトウェア及び/又はクラウドコンピューティング環境122を介して提供され得る他の任意のソフトウェアを含んでもよい。いくつかの実装形態では、1つのアプリケーション124-1は、仮想マシン124-2を介して、1つ又は複数の他のアプリケーション124-1との間で情報を送受信できる。
【0019】
仮想マシン124-2は、物理マシンのようにプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装を含む。仮想マシン124-2は、仮想マシン124-2による用途及び任意の実マシンとの対応関係の程度に応じて、システム仮想マシン又はプロセス仮想マシンのいずれかであり得る。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供できる。プロセス仮想マシンは、単一のプログラムを実行することができ、単一のプロセスをサポートすることができる。いくつかの実装形態では、仮想マシン124-2は、ユーザ(例えば、ユーザデバイス110など)に代わって動作してもよく、データ管理、同期、又は長期間にわたるデータ転送などのクラウドコンピューティング環境122のインフラストラクチャを管理してもよい。
【0020】
仮想化ストレージ124-3は、コンピューティングリソース124のストレージシステム又はデバイス内で仮想化技術を使用する1つ又は複数のストレージシステム及び/又は1つもしくは複数のデバイスを含む。いくつかの実装形態では、ストレージシステムのコンテキスト内で、仮想化のタイプがブロック仮想化とファイル仮想化とを含んでもよい。ブロック仮想化とは、物理ストレージから論理ストレージを抽出する(又は分離する)ことを指し、物理ストレージであるか異種構造であるかに関係なくストレージシステムにアクセスできる。分離することにより、ストレージシステムの管理者は、エンドユーザのストレージをどのように管理するかについて、柔軟性を持たせることができる。ファイルの仮想化により、ファイルレベルでアクセスされるデータと、ファイルが物理的に記憶されている場所との間の依存関係が排除される。これにより、ストレージ使用が最適化され、サーバが統合され、及び/又は中断することなくファイルを移行できるようになる。
【0021】
ハイパーバイザ124-4は、コンピューティングリソース124などのホストコンピュータ上で複数のオペレーティングシステム(例えば、「ゲストオペレーティングシステム」など)を同時に実行することができるハードウェア仮想化技術を提供することができる。ハイパーバイザ124-4は、仮想オペレーティングプラットフォームをゲストオペレーティングシステムに提示することができ、ゲストオペレーティングシステムの実行を管理することができる。様々なオペレーティングシステムの複数のインスタンスが、仮想化されたハードウェアリソースを共有することができる。
【0022】
ネットワーク130は、1つ又は複数の有線及び/又は無線ネットワークを含む。例えば、ネットワーク130は、セルラーネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワークなど)、公衆陸上移動体ネットワーク(PLMN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、電話ネットワーク(例えば、公衆交換電話網(PSTN))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバベースネットワークなど、及び/又はこれらもしくは他のタイプのネットワークの組合せを含んでもよい。
【0023】
図1に示すデバイス及びネットワークの数ならびに配置は、一例として提供されている。実際には、
図1に示されるものに比べて、追加のデバイス及び/又はネットワーク、より少ないデバイス及び/又はネットワーク、異なるデバイス及び/又はネットワーク、異なる配置のデバイス及び/又はネットワークがあってもよい。更に、
図1に示された2つ以上のデバイスは、単一のデバイス内に実装されてもよく、又は
図1に示された単一のデバイスを、複数の分散型デバイスとして実装してもよい。追加的又は代替的に、環境100のデバイスのセット(例えば、1つ又は複数のデバイス)は、環境100のデバイスの別のセットによって実行されるものとして説明される1つ又は複数の機能を実行することができる。
【0024】
図2は、
図1の1つ又は複数のデバイスの例示的なコンポーネントを示すブロック図である。デバイス200は、ユーザデバイス110及び/又はプラットフォーム120に対応し得る。
図2に示すように、デバイス200は、バス210と、プロセッサ220と、メモリ230と、ストレージコンポーネント240と、入力コンポーネント250と、出力コンポーネント260と、通信インタフェース270とを備えてもよい。
【0025】
バス210は、デバイス200のコンポーネント間の通信を可能にするコンポーネントを含む。プロセッサ220は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組合せで実装される。プロセッサ220は、中央処理装置(CPU)、グラフィック処理装置(GPU)、加速処理装置(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は別のタイプの処理コンポーネントである。いくつかの実装形態では、プロセッサ220は、機能を実行するようにプログラムすることが可能な1つ又は複数のプロセッサを含む。メモリ230は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、及び/又はプロセッサ220が使用する情報及び/又は命令を記憶する別のタイプの動的又は静的な記憶デバイス(例えば、フラッシュメモリ、磁気メモリ、及び/又は光メモリ)を含む。
【0026】
ストレージコンポーネント240は、デバイス200の動作及び使用に関連する情報及び/又はソフトウェアを記憶する。例えば、ストレージコンポーネント240は、対応するドライブと共に、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、及び/又はソリッドステートディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、及び/又は別のタイプの非一時的コンピュータ可読媒体を含んでもよい。
【0027】
入力コンポーネント250は、デバイス200がユーザ入力(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、及び/又はマイクロフォン)などを介して情報を受信できるようにするコンポーネントを含む。追加的又は代替的に、入力コンポーネント250は、情報を検知するためのセンサ(例えば、全地球測位システム(GPS)コンポーネント、加速度計、ジャイロスコープ、及び/又はアクチュエータ)を含んでもよい。出力コンポーネント260は、デバイス200(例えば、ディスプレイ、スピーカ、及び/又は1つもしくは複数の発光ダイオード(LED))からの出力情報を提供するコンポーネントを含む。
【0028】
通信インタフェース270は、有線接続、無線接続、又は有線接続と無線接続との組合せなどを介してデバイス200が他のデバイスと通信できるようにする、トランシーバ様のコンポーネント(例えば、トランシーバ及び/又は別個の受信機と送信機)を含む。通信インタフェース270は、デバイス200が別のデバイスから情報を受信し、及び/又は別のデバイスに情報を提供できるようにしてもよい。例えば、通信インタフェース270は、イーサネットインタフェース、光インタフェース、同軸インタフェース、赤外線インタフェース、高周波数(RF)インタフェース、ユニバーサルシリアルバス(USB)インタフェース、Wi-Fiインタフェース、又はセルラーネットワークインタフェースなどを含んでもよい。
【0029】
デバイス200は、本明細書に説明された1つ又は複数のプロセスを実行することができる。デバイス200は、プロセッサ220がメモリ230及び/又はストレージコンポーネント240などの非一時的コンピュータ可読媒体によって記憶されたソフトウェア命令を実行することに応答して、これらのプロセスを実行することができる。コンピュータ可読媒体は、本明細書では非一時的メモリデバイスと定義される。メモリデバイスは、単一の物理ストレージデバイス内のメモリ空間、又は複数の物理ストレージデバイスにわたって広がるメモリ空間を含む。
【0030】
ソフトウェア命令は、別のコンピュータ可読媒体から、又は通信インタフェース270を介して別のデバイスから、メモリ230及び/又はストレージコンポーネント240に読み込むことができる。メモリ230及び/又はストレージコンポーネント240に記憶されたソフトウェア命令は、実行されると、プロセッサ220に、本明細書に説明された1つ又は複数のプロセスを実行させることができる。追加的又は代替的に、本明細書に説明された1つ又は複数のプロセスを実行するために、ソフトウェア命令の代わりに、又はソフトウェア命令と組み合わせてハードワイヤード回路を使用してもよい。したがって、本明細書に説明の実装形態は、ハードウェア回路とソフトウェアとのいかなる特定の組合せにも限定されない。
【0031】
図2に示されるコンポーネントの数及び配置は、一例として提供されている。実際には、デバイス200は、
図2に示されるものに比べて、追加のコンポーネント、より少ないコンポーネント、異なるコンポーネント、又は異なる配置のコンポーネントを含んでもよい。追加的又は代替的に、デバイス200のコンポーネントのセット(例えば、1つ又は複数のコンポーネント)は、デバイス200の別のセットのコンポーネントによって実行されるものとして説明される1つ又は複数の機能を実行することもできる。
【0032】
図3は、本開示の実施形態による、MPDイベント301、インバンドイベント302、及びスパース(sparse)タイムドメタデータトラックイベントを処理するように構成された例示的なDASHクライアント300を示す。DASHクライアント300は、CMAFイベントの処理にも用いることができる。実施形態によれば、DASHクライアント300は、
図1のユーザデバイス
110によって実装されてもよい。
【0033】
非周期的な情報をDASHクライアント300又はアプリケーションにシグナリングするために、イベントが提供されてもよい。イベントは、時間指定されてもよい(例えば、各イベントは、特定のメディアプレゼンテーション時間に開始し、持続時間を有してもよい)。イベントは、DASH固有のシグナリング又はアプリケーション固有のイベントを含んでもよい。DASHイベントは、スキーム識別子によって識別してもよい。アプリケーション固有のイベントの場合、DASHクライアント300が適切なアプリケーションにイベントを転送することができるように、スキーム識別子がアプリケーションを識別してもよい。
【0034】
図3に示すように、DASHクライアント300は、アプリケーション310、DASHプレーヤの制御、選択、&ヒューリスティックロジック315、マニフェストパーサ320、DASHアクセスAPI325、インバンドイベント&「moof」(ムービーフラグメントボックス)パーサ330、タイムドメタデータトラックパーサ335、イベント&タイムドメタデータバッファ340、シンクロナイザ&ディスパッチャ345、ファイルフォーマットパーサ350、メディアバッファ355、メディアデコーダ360、及びHTTPスタック370を含んでもよい。
【0035】
図3において、破線は、制御及び/又は同期を表し、通常の実線はイベント及び/又はタイムドメタデータのフローを表し、太い実線はメディアデータのフローを表す。制御及び/又は同期は、例えば、サブスクリプション機能306及びイベント/メタデータAPI307を含んでもよい。イベント及び/又はタイムドメタデータのフローは、例えば、MPDイベント301、インバンドイベント302、タイムドメタデータ303、及びDASHイベント305を含んでもよい。メディアデータのフローは、例えば、メディアセグメント304を含んでもよい。
【0036】
DASHクライアント300は、MPDなどのマニフェストを受信することができ、それらを処理することができる。マニフェストは、CMAFスイッチングセットと選択セットにグループ化された独立パッケージのCMAFトラックの組合せと同期を記述し、同期されたマルチメディアプレゼンテーションを形成することができる。マニフェストは、再生されるCMAFトラックを選択し、初期化し、整列を開始し、同期させるための情報をDASHクライアント300に提供し、アクセスするためのリソースとしてCMAFメディアオブジェクト(例えば、CMAFヘッダ、CMAFチャンク、及びCMAFフラグメント)を識別し、場合によってはそれらをダウンロードすることができる場合がある。CMAFトラック及びCMAFフラグメントは、解読、復号、及びプレゼンテーションスケジューリングを可能にするために十分な情報を含むことができる。マニフェストはまた、リソース識別及びプレゼンテーション記述に加えて、配信プロトコル、ネットワーク管理、認可、ライセンス取得などに関する情報を提供することもできる。マニフェストはまた、トラックがCMAFメディアプロファイルに従うことをシグナリングすることができる。
【0037】
参考のために、CMAFフラグメントは、符号化及び復号化されたメディアオブジェクトであってもよい。CMAFフラグメントは、ムービーフラグメントボックス(「moof」)及びメディアデータボックス(「mdat」)の1つ又は複数のペアを含むことができる。「moof」及び「mdat」の各ペアは、CMAFチャンクと呼ばれることがあり、各CMAFチャンクは、CMAFフラグメントに属するメディアサンプルの連続したサブセットを含むことができる。
【0038】
CMAFトラックは、CMAFメディアプロファイルに準拠したプレゼンテーション順の1つ又は複数のCMAFフラグメント及び関連するCMAFヘッダの連続したシーケンスである場合がある。CMAFヘッダは、CMAFトラック内の全てのCMAFフラグメントを処理及び提示するのに十分なMovieBoxを含むことができる。CMAFトラックは、エンコーダ及びISOBMFFファイルパッケージャによって生成されてもよいが、外部メディアアプリケーション仕様によって定義されるリソースとして参照することができるCMAFアドレス指定可能メディアオブジェクトの形態でアクセス可能にされてもよい。
【0039】
DASHクライアント300は、マニフェスト内に記述されたアドレスに基づいてメディアセグメントを要求することができる。マニフェストはまた、メタデータトラックを記述することもできる。DASHクライアント300はまた、メタデータトラックのセグメントにアクセスし、それらを解析し、それらをアプリケーションに送信することもできる。
【0040】
また、メディアセグメント用のアドレスのうち、DASHマニフェストは、インデックスセグメント用のアドレスを提供することができる。各インデックスセグメントは、1つのセグメント持続時間とサイズに関する情報を提供することができる。表現インデックスは、所与の表現の全てのセグメントのインデックス情報を提供することができる。
【0041】
実施形態によれば、マニフェストパーサ320は、マニフェストからMPDイベント301を解析し、それらをイベント&タイムドメタデータバッファ340に付加することができる。MPDに基づいて、DASHクライアント300は、HTTPスタック370からのセグメントのフェッチ及び解析を管理することができる。セグメントの解析は、インバンドイベント&「moof」パーサ330によって実行され得る。インバンドイベント&「moof」パーサは、セグメントからのメディアセグメント304を解析してから、それらをメディアバッファ355に付加することができる。インバンドイベント&「moof」パーサ330による解析はまた、セグメントからのインバンドイベント302とタイムドメタデータ303(例えば、タイムドメタデータトラック)の解析を含むことができる。また、タイムドメタデータトラックパーサ335は、タイムドメタデータ303のイベントメッセージボックス及びタイムドメタデータ303のイベントメッセージインスタンスボックスなどの高レベルのボックスを解析して、イベント&タイムドメタデータバッファ340に付加することができる。
【0042】
イベント&タイムドメタデータバッファ340は、イベント&タイムドメタデータサンプルをシンクロナイザ&ディスパッチャ345に渡すことができ、これは、イベント&タイムドメタデータシンクロナイザ&ディスパッチャ機能と称されることがある。
【0043】
シンクロナイザ&ディスパッチャ345は、DASHクライアント300固有のイベントを、DASHプレーヤの制御、選択&ヒューリスティックロジック315にディスパッチすることができる。アプリケーション310が特定のイベント及び/又はタイムドメタデータストリームにサブスクライブされている場合、シンクロナイザ&ディスパッチャ345は、イベント/メタデータAPI307を介して対応するイベントインスタンス及び/又はタイムドメタデータサンプルをアプリケーション310にディスパッチすることができる。
【0044】
実施形態は、イベントメッセージトラックで利用可能なスキームをシグナリングするための方法に関する場合がある。例えば、実施形態において、要素イベントメッセージトラックは、イベントメッセージトラックに対応する1つ又は複数のイベントを処理するために使用できる1つ又は複数のイベントスキームをシグナリングするために使用されてもよい。
【0045】
実施形態では、イベントメッセージトラック内の各イベントスキームのschemeIdUri/valueを列挙するためのボックスが定義されてもよい。
【0046】
実施形態では、各スキームについて、スキームがイベントメッセージトラックで発生することが保証されているかどうかを示すバイナリフラグを含めてもよい。例えば、フラグatleast_onceは、次のように示すために使用することができる。
a.atleast_once=FALSEで、スキームは発生しない可能性がある。
b.atleast_once=TRUEで、スキームは少なくとも1回発生する。
【0047】
実施形態では、このボックスに列挙されていない1つ又は複数のスキームが発生し得ることを示すフラグが含まれる場合がある。例えば、フラグother_schemesは、次のように示すために使用することができる。
a.other_schemes=FALSEで、イベントメッセージトラックは、このボックスに列挙されたもの以外のスキームを含まない。
b.other_schemes=TRUEで、イベントメッセージトラックは、このボックスに列挙されている以外の1つ又は複数のスキームを含む可能性がある。
【0048】
実施形態では、新しいボックスを以下のように定義する場合がある。
aligned(8)class SchemeIdListBox extends FullBox(‘silb’,version,flags=0){
unsigned int(32)number_of_schemes;
for(i=1;i<number_of_schemes;i++){
string scheme_id_uri;
string value;
bit(1)atleast_once;
bit(7)reserved;
}
bit(1)other_schemes;
bit(7)reserved;
}
【0049】
上に示すボックスでは、
・number_of_schemesは、このボックスに列挙されたスキームの数を示すことができる。
・scheme_id_uriは、NULL終結のC言語文字列であり、値が後続しない場合にスキームの識別子を、値が後続する場合に命名スキームの識別子を宣言することができる。
・valueは、宣言されたスキームからの名前であってもよい。
・atleast_onceは、それがTRUEに設定された場合、このスキームの少なくとも1つのイベントインスタンスがトラックに含まれることを示すことができる。
・other_schemesは、それがTRUEに設定された場合、このボックスに列挙されている以外の他のスキームがトラックに含まれる可能性があることを示すことができる。
【0050】
実施形態では、「silb」ボックスは、イベントメッセージトラックヘッダ内で多くとも1回発生し得る。
【0051】
したがって、実施形態は、イベントメッセージトラックのトラックヘッダにおいて可能性のあるイベントスキームをシグナリングする方法に関しており、スキームの数がシグナリングされ、及び各スキームのscheme id/value識別子もシグナリングされ、更に、各scheme id/valueについてシグナリングされ、更に、このスキームがトラックに現れるかそれとも現れる可能性があるだけなのかもシグナリングされ、列挙されているもの以外のscheme id/valueが、イベントメッセージトラックに現れる可能性があるかどうかがシグナリングされ得る。
【0052】
図4は、DASHクライアント300を含むメディアストリーミングシステムを管理するための例示的なプロセス400のフローチャートである。いくつかの実装形態では、
図4の1つ又は複数のプロセスブロックは、ユーザデバイス
110によって実行されてもよい。いくつかの実装形態では、
図4の1つ又は複数のプロセスブロックは、プラットフォーム120などのユーザデバイス110とは別個の、又はユーザデバイスを含む別のデバイス又はデバイスのグループによって実行されてもよい。
【0053】
図4に示すように、プロセス400は、メディアコンテンツを表示するためにハイパーテキストトランスファープロトコルによるダイナミックアダプティブストリーミング(DASH)クライアントによって処理されるように構成された、イベントメッセージトラックを取得するステップを含んでもよい(ブロック410)。
【0054】
図4に更に示すように、プロセス400は、イベントメッセージトラックに現れる1つ又は複数のイベントスキームを識別するスキーム識別子ボックスを取得することを含んでもよく、1つ又は複数のイベントスキームの各イベントスキームは、イベントメッセージトラックに含まれるイベントを処理するための少なくとも1つのパラメータを指定する(ブロック420)。
【0055】
図4に更に示すように、プロセス400は
、1つもしくは複数のイベントスキームに従ってイベントメッセージトラックに基づいてメディアコンテンツを表示する
ためにイベントメッセージトラックをDASHクライアントに提供するステップを含んでもよい(ブロック430)。
【0056】
実施形態において、スキーム識別子ボックスは、イベントメッセージトラックのトラックヘッダに含まれてもよい。
【0057】
実施形態において、スキーム識別子ボックスは、スキーム識別子ボックスにおいて識別される1つ又は複数のイベントスキームの数を指定するシンタックス要素を含んでもよい。
【0058】
実施形態では、スキーム識別子ボックスは、各イベントスキームの識別子、又は各イベントスキームに対応する命名スキームの識別子の中から少なくとも1つを宣言するユニフォームリソース識別子を含むことができる。
【0059】
実施形態では、命名スキームを宣言するユニフォームリソース識別子に基づいて、スキーム識別子ボックスは、命名スキームの名前の中から各イベントスキームに対応する名前を示す値を更に含むことができる。
【0060】
実施形態では、スキーム識別子ボックスは、各イベントスキームがイベントメッセージトラックにおいて少なくとも1回発生するかどうかを示すフラグを含んでもよい。
【0061】
実施形態では、スキーム識別子ボックスは、スキーム識別子ボックスにおいて識別されていないスキームがイベントメッセージトラックにおいて発生することができるかどうかを示すフラグを含んでもよい。
【0062】
図4はプロセス400の例示的なブロックを示しているが、いくつかの実装形態では、プロセス400は、
図4に示されるものに比べて、追加のブロック、より少ないブロック、異なるブロック、又は異なる配置のブロックを含んでもよい。追加的又は代替的に、プロセス400の2つ以上ブロックを、並行して実行してもよい。
【0063】
図5を参照して、実施形態によるコンピュータコード500について説明する。コンピュータコード500は、DASHクライアント300を含むメディアストリーミングシステムによって実行することができる。例えば、メディアストリーミングシステムは、
図1に関して説明した環境100によって実装されてもよい。メディアストリーミングシステムは、コンピュータコード500を記憶するように構成されたメモリと、コンピュータコード500にアクセスし、コンピュータコード500によって命令されるように動作するように構成された少なくとも1つのプロセッサとを備えることができる。コンピュータコード500は、メディアストリーミングシステムの異なるコンポーネント(例えば、サーバ、クライアントなど)のメモリに分散されてもよく、特定のコンポーネントの少なくとも1つのプロセッサに、本開示で説明する機能を含めてその機能のうちの任意の数を実行させるように構成されてもよい。例えば、コンピュータコード500は、任意の数の第1の取得コード510、第2の取得コード520、及び提供コード530を含んでもよい。
【0064】
実施形態では、第1の取得コード510、第2の取得コード520、及び提供コード530を、それぞれ、DASHクライアント300を含むメディアストリーミングシステムに、
図4を参照して上記のプロセスの態様を実行させるように構成することができる。
【0065】
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わされてもよい。更に、方法、サーバ、及びクライアントの各々は、処理回路(例えば、1つ又は複数のプロセッサ又は1つもしくは複数の集積回路)によって実施され得る。一例では、1つ又は複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
【0066】
前述の開示は例示及び説明を提供しているが、網羅的なものではなく、開示されたまさにその形態に実装形態を限定するものではない。上記の開示に照らして変更及び変形が可能であり、又は実装の実施から取得され得る。
【0067】
本明細書に説明のシステム及び/又は方法は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組合せの異なる形態で実装されてもよいことは明らかであろう。これらのシステム及び/又は方法を実装するために使用される実際の専用の制御ハードウェア又はソフトウェアコードは、実装形態を限定するものではない。したがって、ソフトウェア及びハードウェアは、本明細書の説明に基づいてシステム及び/又は方法を実装するように設計され得ることを理解されたい。
【0068】
特許請求の範囲に特定の特徴の組合せが記載され、及び/又は本明細書に開示されているが、これらの組合せは、可能な実装形態の開示を限定することを意図するものではない。実際、これらの特徴の多くは、特許請求の範囲に具体的に記載されていない、及び/又は本明細書に開示されていない方法で組み合わされ得る。以下に列挙する各従属請求項は、1つの請求項のみに直接的に依存することができるが、可能な実装形態の開示は、請求項セット内の他の全ての請求項と組み合わせた各従属請求項を含む。
【0069】
本明細書で使用される要素、動作、又は命令は、そのように明示的に記載されていない限り、重要又は必須であると解釈されるべきではない。また、本明細書で使用される場合、冠詞「1つ(a)」及び「1つ(an)」は、1つ又は複数の項目を含むことを意図しており、「1つ又は複数」と交換可能に使用され得る。更に、本明細書で使用される「セット」という用語は、1つ又は複数の項目(例えば、関連項目、非関連項目、関連項目と非関連項目の組合せなど)を含むものであり、「1つ又は複数」と同じ意味で使用されてもよい。1つの項目のみが対象とされる場合、「1つ(one)」という用語又は同様の言葉が使用される。また、本明細書で使用される「有する(has)」、「有する(have)」、「有する(having)」などの用語は、非限定的な用語であることが意図される。更に、「に基づいて(based on)」という語句は、特に明記しない限り、「少なくとも部分的に~に基づいて」を意味することを意図している。
【符号の説明】
【0070】
100 環境
110 ユーザデバイス
120 プラットフォーム
122 クラウドコンピューティング環境
124 コンピューティングリソース
124-1 アプリケーション(「APP」)
124-2 仮想マシン(「VM」)
124-3 仮想化ストレージ(「VS」)
124-4 ハイパーバイザ(「HYP」)
130 ネットワーク
200 デバイス
210 バス
220 プロセッサ
230 メモリ
240 ストレージコンポーネント
250 入力コンポーネント
260 出力コンポーネント
270 通信インタフェース
300 DASHクライアント
301 MPDイベント
302 インバンドイベント
303 タイムドメタデータ
304 メディアセグメント
305 DASHイベント
306 サブスクリプション機能
307 イベント/メタデータAPI
310 アプリケーション
315 DASHプレーヤの制御、選択、&ヒューリスティックロジック
320 マニフェストパーサ
325 DASHアクセスAPI
330 インバンドイベント&「moof」パーサ
335 タイムドメタデータトラックパーサ
340 イベント&タイムドメタデータバッファ
345 シンクロナイザ&ディスパッチャ
350 ファイルフォーマットパーサ
355 メディアバッファ
360 メディアデコーダ
370 HTTPスタック
400 プロセス
500 コンピュータコード
510 第1の取得コード
520 第2の取得コード
530 提供コード