(57)【要約】  本公開は、メタデータ容器の解析方法、装置及び記憶媒体を提供する。方法は、メディアファイルにおけるメタデータ容器の位置に基づいて、メディアファイルのバイナリデータからメタデータ容器に対応するバイナリデータを取得すること；取得されたバイナリデータ内のメタデータ容器ヘッダの標準長に対応するバイナリデータを順次に解析して、メタデータ容器内のサブ容器の容器タイプ、及びサブ容器の容器データの長さを取得すること；及びサブ容器の容器タイプに対応するタイプの解析器を呼び出し、未解析のデータ内の容器データの長さに対応するバイナリデータを順次に解析して、容器データが表すメディア情報を取得すること、を備える。
2021508977.tif 000002
【特許請求の範囲】
【請求項１】
メタデータ容器の解析方法であって、
メディアファイルにおけるメタデータ容器の位置に基づいて、メディアファイルのバイナリデータからメタデータ容器に対応するバイナリデータを取得すること；
取得されたバイナリデータ内の前記メタデータ容器ヘッダの標準な長さに対応するバイナリデータを順次に解析して、前記メタデータ容器内のサブ容器の容器タイプ、及び前記サブ容器の容器データの長さを取得すること；及び
前記サブ容器の容器タイプに対応するタイプの解析器を呼び出して、未解析のデータ内の前記容器データの長さに対応するバイナリデータを順次に解析し、前記容器データが表すメディア情報を取得すること；
を備えた解析方法。
【請求項２】
前記サブ容器の容器タイプに対応するタイプの解析器を呼び出すことは、
前記サブ容器の容器タイプをプリ標識された容器タイプと対比すること；及び
対比を行うことで、前記サブ容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されたと確定した時に、
前記サブ容器の容器タイプに対応する解析器を呼び出し、前記解析器によって前記サブ容器内の容器データを解析し、前記容器データが表すメディア情報を取得すること；
を備える、請求項１に記載の方法。
【請求項３】
前記サブ容器の容器タイプをプリ標識された容器タイプと対比すること；
対比を行うことで、前記サブ容器の容器タイプがプリ標識され、且つ引き続き容器をパッケージすることに用いられるとプリ標識されたと確定した時に、
前記サブ容器内にパッケージされている容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されるまで、前記メディアファイル内の容器ヘッダの標準長に基づいて、前記サブ容器に対応するバイナリデータを再帰的に解析すること；
をさらに備える、請求項１に記載の方法。
【請求項４】
対比を行うことで、前記サブ容器内にパッケージされている容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されたと確定した時に、
サブ容器内にパッケージされている容器の容器タイプに対応する解析器を呼び出し、バイナリデータをバイト単位毎に解析し、解析されたバイナリデータの長さが前記サブ容器内にパッケージされている容器の容器データの長さに対応することで、サブ容器内にパッケージされている容器の容器データが表すメディア情報を取得すること
をさらに備える、請求項３に記載の方法。
【請求項５】
呼び出された前記解析器内で解析するサブ容器を記録すること；及び
記録されたサブ容器の実例をサブ容器属性に設置し、ここで、前記サブ容器属性が、前記サブ容器が所属する容器に含まれ、前記サブ容器と所属する容器との間のネスト関係を記述することに用いられること；
をさらに備える、請求項１に記載の方法。
【請求項６】
前記サブ容器と所属する容器との間のネスト関係、及び前記サブ容器とパッケージしている容器とのネスト関係に基づいてオブジェクトを作成すること；及び
前記サブ容器の容器タイプバイナリデータを直接にパッケージすることに用いられるとプリ標識された時に、前記サブ容器に対応して作成されたオブジェクト内へメディア情報を含めた配列を格納し、ここで、格納されたメディア情報が前記サブ容器の容器データで表されること；
をさらに備える、請求項１に記載の方法。
【請求項７】
前記サブ容器の容器タイプに対応するタイプの解析器を呼び出せられなかった時に、
前記サブ容器に対応するバイナリデータを解析することを無視すること；及び
前記サブ容器の長さに基づいて、前記バイナリデータのうち次のサブ容器に対応する部分へジャンプし引き続いて解析を行うこと；
をさらに備える、請求項１から６の何れか１項に記載の方法。
【請求項８】
メタデータ容器の解析装置であって、
メディアファイルにおけるメタデータ容器の位置に基づいて、メディアファイルのバイナリデータからメタデータ容器に対応するバイナリデータを取得するように配置されたデータ取得ブロックと；及び
取得されたバイナリデータ内の前記メタデータ容器ヘッダの標準な長さに対応するバイナリデータを順次に解析して、前記メタデータ容器内のサブ容器の容器タイプ、及び前記サブ容器の容器データの長さを取得するように配置されたデータ解析ブロックと、
を備え、
前記データ解析ブロックは、前記サブ容器の容器タイプに対応するタイプの解析器を呼び出して、未解析のデータ内の前記容器データの長さに対応するバイナリデータを順次に解析し、前記容器データが表すメディア情報を取得するように配置された、解析装置。
【請求項９】
前記データ解析ブロックは、前記サブ容器の容器タイプをプリ標識された容器タイプと対比するようにさらに配置され；
前記データ解析ブロックは、前記サブ容器の容器タイプに対応する解析器を呼び出し、前記解析器によって前記サブ容器内の容器データを解析し、前記容器データが表すメディア情報を取得するようにさらに配置された、請求項８に記載の装置。
【請求項１０】
前記データ解析ブロックは、前記サブ容器の容器タイプをプリ標識された容器タイプと対比するようにさらに配置され；
前記データ解析ブロックは、前記サブ容器内にパッケージされている容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されるまで、前記メディアファイル内の容器ヘッダの標準長に基づいて、前記サブ容器に対応するバイナリデータを再帰的に解析するようにさらに配置された、請求項８に記載の装置。
【請求項１１】
前記データ解析ブロックは、サブ容器内にパッケージされている容器の容器タイプに対応する解析器を呼び出し、バイナリデータをバイト単位毎に解析し、解析されたバイナリデータの長さが前記サブ容器内にパッケージされている容器の容器データの長さに対応することで、前記サブ容器内にパッケージされている容器の容器データが表すメディア情報を取得するようにさらに配置された、請求項１０に記載の装置。
【請求項１２】
呼び出された前記解析器内で解析するサブ容器を記録するように配置されたデータ記録ブロックをさらに備え、
記録されたサブ容器の実例をサブ容器属性に設置し、ここで、前記サブ容器属性が、前記サブ容器が所属する容器に含まれ、前記サブ容器と所属する容器との間のネスト関係を記述するように配置された、請求項８に記載の装置。
【請求項１３】
前記サブ容器と所属する容器との間のネスト関係、及び前記サブ容器とパッケージしている容器とのネスト関係に基づいてオブジェクトを作成し、前記サブ容器に対応して作成されたオブジェクト内へメディア情報を含めた配列を格納し、ここで、格納されたメディア情報が前記サブ容器の容器データで表されるように配置されたデータ格納ブロックをさらに備える、請求項８に記載の装置。
【請求項１４】
前記データ解析ブロックは、前記サブ容器に対応するバイナリデータを解析することを無視するようにさらに配置され；
前記データ解析ブロックは、前記サブ容器の長さに基づいて、前記バイナリデータのうち次のサブ容器に対応する部分へジャンプし引き続いて解析を行うようにさらに配置された、請求項８から１３の何れか１項に記載の装置。
【請求項１５】
メタデータ容器の解析装置であって、
実行可能な指令を格納するように配置されたメモリと；
前記実行可能な指令を実行する時に、請求項１から７の何れか１項に記載のメタデータ容器の解析方法を実現するように配置されたプロセッサと；
を備える、解析装置。
【請求項１６】
記憶媒体であって、
実行可能な指令が格納され、前記実行可能な指令が実行される時に、請求項１から７の何れか１項に記載のメタデータ容器の解析方法を実現するように配置された、記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の取り込み
本出願は、申請番号２０１８１０５３２３３１.８、申請日２０１８年０５月２９日である中国特許出願に基づいて提出し、該中国特許出願の優先権を要求し、該中国特許出願の全ての内容をここで本出願に参照として取り込んでいる。
【０００２】
本公開は、マルチメディアデータ技術に関し、特にメタデータ容器の解析方法、装置及び記憶媒体に関する。
【背景技術】
【０００３】
メディアファイル内にパッケージされたメタデータがメディア情報をキャリアしている。メディア情報に基づいてメディアファイル内にパッケージされたメタデータ（例えば、ビデオフレーム及びオディオフレーム）を正確にデコードすることができる。これにより、映像の非同期又は映像の欠落等の現象を回避する。
【０００４】
メディアファイルをネットワーク通じて伝送し再生する場合、再生のリアルタイム性によって、メタデータからメディア情報を正確且つ効率よく解析可能なことが要求されている。これにより、再生の遅延を回避する。
【発明の概要】
【課題を解決するための手段】
【０００５】
これを鑑みて、本公開の実施例は、メタデータからメディア情報を正確且つ効率よく解析することができるメタデータ容器の解析方法、装置及び記憶媒体を提供する。
本公開の実施例の形態は、以下のように実現されている。
【０００６】
本公開の実施例は、メタデータ容器の解析方法を提供する。前記解析方法は、メディアファイルにおけるメタデータ容器の位置に基づいて、メディアファイルのバイナリデータからメタデータ容器に対応するバイナリデータを取得することと；取得されたバイナリデータ内の前記メタデータ容器ヘッダの標準な長さに対応するバイナリデータを順次に解析して、前記メタデータ容器内のサブ容器の容器タイプ、及び前記サブ容器の容器データの長さを取得することと；前記サブ容器の容器タイプに対応するタイプの解析器を呼び出して、未解析のデータ内の前記容器データの長さに対応するバイナリデータを順次に解析し、前記容器データが表すメディア情報を取得することと；を備える。
【０００７】
本公開の実施例は、さらにメタデータ容器の解析装置を提供する。前記解析装置は、メディアファイルにおけるメタデータ容器の位置に基づいて、メディアファイルのバイナリデータから相応するメタデータ容器のバイナリデータを取得するように配置されたデータ取得ブロックと；取得されたバイナリデータ内の前記メタデータ容器ヘッダの標準な長さに対応するバイナリデータを順次に解析して、前記メタデータ容器内のサブ容器の容器タイプ、及び前記サブ容器の容器データの長さを取得するように配置されたデータ解析ブロックと；を備え、前記データ解析ブロックは、前記サブ容器の容器タイプに対応するタイプの解析器を呼び出して、未解析のデータ内の前記容器データの長さに対応するバイナリデータを順次に解析し、前記容器データが表すメディア情報を取得するように配置されている。
【０００８】
他の形態では、本公開の実施例は、さらにメタデータ容器の解析装置を提供する。前記解析装置は、
実行可能な指令を格納するためのメモリと；
前記メモリに格納された実行可能な指令を実行して本公開の実施例が提供したメタデータ容器の解析方法を実現するためのプロセッサと；
を備える。
【０００９】
他の形態では、本公開の実施例は、さらに記憶媒体を提供する。前記記憶媒体は、実行可能な指令が格納され、前記実行可能な指令が実行される時に、本公開の実施例が提供したメタデータ容器の解析方法を実現することに用いられる。
【００１０】
本公開の実施例は、本公開の実施例に示す態様によって、メタデータ容器内の相応するデータに対する解析速度を効果的に向上させることができ、データ解析の正確率を向上させ、データ解析の速度が遅いことでユーザの使用体験が影響されることを回避できるという効果を有する。
【図面の簡単な説明】
【００１１】
【図１】図１は、本公開の実施例が提供したマルチメディアファイルパッケージ用の容器のある選択可能な構造の模式図である。
【図２】図２は、本公開の実施例のＭＰ４ファイルのある選択可能なパッケージ構造の模式図である。
【図３】図３は、本公開の実施例のメディアファイル内のメディアデータ容器がメディアデータを記憶する、ある選択可能な構造の模式図である。
【図４】図４は、本公開の実施例のＦＭＰ４ファイルのある選択可能なパッケージ構造の模式図である。
【図５】図５は、本公開の実施例のメタデータ容器の解析装置のある選択可能な構成の模式図である。
【図６】図６は、本公開の実施例のメタデータ容器の解析装置のある選択可能な構成の模式図である。
【図７】図７は、本公開の実施例が提供したメタデータ容器の解析方法のある選択可能なフローの模式図である。
【図８】図８は、本公開の実施例が提供したメタデータ容器からメディア情報を解析して取得する、ある選択可能なフローの模式図である。
【図９】図９は、本公開の実施例が提供したメタデータ容器の解析方法のある選択可能なフローの模式図である。
【図１０】図１０は、本公開の実施例が提供したメタデータ容器の解析方法のある選択可能なフローの模式図である。
【図１１】図１１は、本公開の実施例が提供したメタデータ容器の解析方法のある選択可能な使用場面の模式図である。
【図１２】図１２は、本公開の実施例が提供したＭＰ４ファイルをＦＭＰ４ファイルに変換してメディアソース拡張インターフェースを通じて再生する模式図である。
【発明を実施するための形態】
【００１２】
本開示の目的、態様、利点をより明確するために、以下で本開示を、図面を結合しながら詳しく説明する。下記の実施例が本開示を限定するものではなく、当業者が、創造的な労働せずに取得した全ての他の実施例は、本開示の技術的範囲に属する。
【００１３】
本明細書で使用される全ての技術や科学用語は、特に断りがない限り、本開示の技術領域に属する当業者に通常理解されるものと同義である。本明細書に使用される用語は、具体的な実施例を説明するためのものであり、本開示を限定する主旨ではない。
【００１４】
本開示をさらに詳しく説明する前に、本開示の実施例に係る名詞及び技術用語を説明する。本開示の実施例に係る名詞及び技術用語は、以下の解釈を適用する。
【００１５】
１）メディアファイルは、容器（Ｂｏｘ、ボックスとも呼ぶ）という形式で符号化されたメディアデータ（例えば、オディオデータ及びビデオデータの少なくとも一種）を記憶するファイルである。メディアファイルには、メディアデータを正確的に復号されることを確保するために、メディアデータを記述するメタデータをさらに含む。
【００１６】
例えば、ＭＰＥＧ（Ｍｏｖｉｎｇ Ｐｉｃｔｕｒｅ Ｅｘｐｅｒｔｓ Ｇｒｏｕｐ）−４というパッケージＭＰ４容器という方式でマルチメディアデータをパッケージすることで形成されるメディアファイルは、ＭＰ４ファイルという。典型的には、ＭＰ４ファイルには、ＡＶＣ（Ａｄｖａｎｃｅｄ Ｖｉｄｅｏ Ｃｏｄｉｎｇ、即ちＨ.２６４）又はＭＰＥＧ-４（Ｐａｒｔ２）標準に符合化された映像データ及びＡＡＣ（Ａｄｖａｎｃｅｄ Ａｕｄｉｏ Ｃｏｄｉｎｇ）標準に符合化された音声データが格納されており、もちろん映像と音声の他の符号化方式を除外しない。
【００１７】
２）容器（Ｂｏｘ）は、ボックスとも呼ばれ、唯一の類別識別子と長さで定義される、オブジェクト向けの部材である。図１は、本開示の実施例に係る容器の選択可能な構造の一つを模式的に示す図である。図１を参照して、容器には、容器ヘッダ（容器ヘッダ）及び容器データ（Ｂｏｘ Ｄａｔａ）が含まれ、各種情報を表現するためのバイナリデータが充填されている。ここで、容器が相互にネストされるとこができ、容器のデータは一連のサブ容器である場合、この容器がコンテナ容器（Ｃｏｎｔａｉｎｅｒ Ｂｏｘ）となる。
【００１８】
容器ヘッダは、容器がメディアファイルに占用する長さ記憶空間の大きさを示す容量（ｓｉｚｅ）、及び容器の種類を示すタイプ（ｔｙｐｅ）を含む。図２は、本開示の実施例に係るＭＰ４ファイルの選択可能なパッケージ構造の一つを模式的に示す図である。図２を参照して、ＭＰ４ファイルには、ファイルタイプ容器（ｆｔｙｐ ｂｏｘ）、メタデータ容器（ｍｏｏｖ ｂｏｘ）及びメディアデータ容器（ｍｄａｔ ｂｏｘ）という三つの基本的な容器タイプを含む。
【００１９】
容器データ部は、具体的なデータを記憶することができ、このときの容器が「データ容器」と呼ばれる。容器データ部は別の種類の容器をさらにパッケージすることができ、このときの容器が「容器の容器」と呼んでもよい。
【００２０】
３）トラック（Ｔｒａｃｋ）は、ストリーム（Ｓｔｒｅａｍ）とも呼ばれ、メディアデータ容器において時間順にソートする相関のサンプル（Ｓａｍｐｌｅ）である。メディアデータにおいては、トラックが一つの映像フレーム系列又は一つの音声フレーム系列を表し、映像フレーム系列に同期した字幕トラックを含んでもよい。同一のトラックにおける一組の連続するサンプルはチャンク（Ｃｈｕｎｋ）と呼ばれる。
【００２１】
４）ファイルタイプの容器は、メディアファイルにおいてファイルの容量（即ち、占用するバイトの長さ）やタイプを格納するための容器である。図２に示すように、ファイルタイプの容器は、ｆｔｙｐ 容器と付けられ、格納されるバイナリデータが、ファイル容器の種類及び互換性を標準バイト長さに従って記述する。
【００２２】
５）メタデータ容器は、メディアファイルにおいてメタデータ（即ち、メディアデータ容器に格納されるマルチメディアデータを記述するデータ）を記憶するための容器である。ＭＰ４ファイルのメタデータ容器に格納されるバイナリデータが表現する情報をメディア情報と呼ぶ。
【００２３】
図２に示すように、メタデータ容器のヘッダは、容器タイプが「ｍｏｏｖ ｂｏｘ」であることをバイナリデータで表す。容器データ部は、ＭＰ４ファイルの全体情報を記憶するためのｍｖｈｄ容器をパッケージしており、時間長、作成時刻、修正時間などを含み、ＭＰ４ファイルから独立して、ＭＰ４ファイルの再生に関するものである。
【００２４】
メディアファイルのメディアデータ容器に、複数のトラック、例えば音声トラック容器（オディオトラック容器）及び映像トラック容器（ビデオトラック容器）、に対応するサブ容器を含んでもよい。音声トラック容器及び映像トラック容器のサブ容器のそれぞれには、対応するトラックのメディアデータの参照及び記述を含んでいる。必要なサブ容器には、トラックの特性及び全体情報（例えば時間、高さ、幅）を記述するための容器（ｔｋｈｄ ｂｏｘと記す）と、トラックのメディア情報（例えばメディアタイプ及びサンプルに関する情報）を記録する容器（ｍｄｉａ ｂｏｘと記す）と、を含む。
【００２５】
メディア容器にパッケージされるサブ容器については、トラックの関連属性及び内容を記録する容器（ｍｄｈｄ ｂｏｘと記す）と、メディアを再生する過程情報を記録する容器（ｈｄｌｒ ｂｏｘと記す）と、トラックにおけるメディアデータのメディア情報を記述する容器（ｍｉｎｆ ｂｏｘと記す）と、を含むことができる。ｍｉｎｆ 容器には、どのようにメディア情報を位置決めるかを解釈するためのサブ容器（ｄｉｎｆ ｂｏｘと記す）、及びトラックでサンプリングした全ての時間情報（復号時間/表示時間）、位置情報及び復号/符号などの情報を記録するためのサブ容器（ｓｔｂｌ ｂｏｘと記す）がさらにパッケージされる。
【００２６】
図３は、本開示の実施例に係るメディアファイルにおけるメディアデータ容器がメディアデータを記憶する構造模式図である。図３に示すように、ｓｔｂｌ容器のバイナリデータから識別されるメディア情報を用いて、サンプルの時間、タイプ、容量及びメディアデータ容器における位置を解釈可能である。次に、ｓｔｂｌ容器における各サブ容器について説明する。
【００２７】
ｓｔｓｄ容器は、１つのサンプルディスクリプション（ｓａｍｐｌｅ ｄｅｓｃｒｉｐｔｉｏｎ）テーブルを含む。各メディアファイルには、異なる符号化方式及び記憶データのファイル数に応じて、一つ又は複数のディスクリプションテーブルが含まれることができる。ディスクリプションテーブルを通じて、サンプル毎のディスクリプション情報を見当たることができる。ディスクリプション情報は、サンプルを正しく復号されることを保証できる。異なるメディアタイプに対して相違するディスクリプション情報、例えば映像メディアについてのディスクリプション情報が画像の構造、を格納する。
【００２８】
ｓｔｔｓ容器は、サンプルの時間長に関する情報を格納するものであり、時間（復号時間）とサンプルの番号とをマッピングするためのテーブルを提供する。ｓｔｔｘ ｂｏｘにより、メディアファイルおける任意の時間のサンプルを位置決めすることができる。ｓｔｔｓ容器はさらに他のテーブルを用いてサンプルの容量とポインタとをマッピングし、テーブルにおけるエントリごとに同じ時間オフセット内で連続するサンプルの番号、およびサンプリングのオフセットを与え、これらのオフセットを増加させて、完全な時間−サンプルのマッピングテーブルを作成し、数式は次のようになる。
【００２９】
ＤＴ(ｎ+１)=ＤＴ(ｎ)+ＳＴＴＳ(ｎ)               （１）
【００３０】
ここで、ＳＴＴＳ（ｎ）は、第ｎのサンプルの時間長であり、ＤＴ(ｎ)は第ｎのサンプルの表示時間である。サンプルの配列が時間順にソートされているので、オフセット量は常に非負である。ＤＴは、一般的に０から開始する。第ｉのサンプルの表示時間ＤＴ（ｉ）を例として、計算式は次の通りである。
【００３１】
ＤＴ(ｉ)=ＳＵＭ(ｆｏｒ ｊ=０ ｔｏ ｉ-１ ｏｆ ｄｅｌｔａ(ｊ))           （２）
【００３２】
全てのオフセットの和はトラックにおけるメディアデータの時間長である。
【００３３】
ｓＳｔｓｓ（Ｔｉｍｅ-Ｔｏ-Ｓａｍｐｌｅ Ａｔｏｍｓ）容器は、メディアファイルにおけるキーフレームの番号を記録するものである。
【００３４】
ｓｔｓｃ（Ｓａｍｐｌｅ-Ｔｏ-Ｃｈｕｎｋ Ａｔｏｍ）容器は、サンプルとサンプルを格納するチャンクとのマッピング関係を記録するものであり、テーブルによりサンプルの番号とチャンクの番号との関係をマッピングし、テーブルを調べることで特定のサンプルを含むチャンクを見つけることができる。
【００３５】
ｓｔｃｏ容器は、トラック内における各チャンクの位置を定義するものであり、位置が、メディアデータ容器の先頭バイトのオフセットと、先頭バイトに対する長さ（容量）で表される。
【００３６】
ｓｔｓｚ（Ｓａｍｐｌｅ Ｓｉｚｅ Ａｔｏｍ）容器は、メディアファイルの各サンプルの容量（即ちサイズ）を記録する。
【００３７】
６）メディアデータ容器は、メディアファイルにおいてマルチメディアデータを記憶するための容器である。例えば、ＭＰ４ファイルにおけるメディアデータ容器は、図３に示すように、サンプルがメディアデータ容器において記憶する単位であって、メディアファイルのチャンクに記憶され、チャンクとサンプルの長さは互いに異なってもよい。
【００３８】
７）セグメントメディアファイルは、メディアファイルを分割して形成され、それぞれ独立して復号できるサブファイルである。
【００３９】
ＭＰ４ファイルを例とすれば、ＭＰ４ファイルのメディアデータがキーフレームによって分割され、分割されたメディアデータと対応するメタデータとをセグメントメ化ＦＭＰ４ファイルにパッケージし、各ＦＭＰ４ファイルにおけるメタデータがメディアデータが正確的に復号されることを保証できる。
【００４０】
図４は、本開示の実施例に係るセグメント化ＭＰ４(ＦＭＰ４)ファイルの選択可能なパッケージ構造の一つを模式的に示す図である。例えば、図２に示すＭＰ４ファイルを複数のＦＭＰ４ファイルに変換するとき、図４に示すように、一つのＭＰ４ファイルは、複数のＦＭＰ４ファイルに変換でき、各ＦＭＰ４ファイルには、ｍｏｏｖ容器、ｍｏｏｆ容器及びｍｄａｔ容器という三つの基本的な容器が含まれる。
【００４１】
ｍｏｏｖ容器は、ＭＰ４ファイルレベルのメタデータを含み、ＦＭＰ４ファイルの由来となるＭＰ４ファイルにおける全てのメディアデータ、例えばＭＰ４ファイルの時間長、作成時刻、修正時間などを記述するためのものである。
【００４２】
ｍｏｏｆ容器は、セグメントレベルのメタデータを記憶し、ＦＭＰ４ファイルにパッケージされたメディアデータを記述し、ＦＭＰ４におけるメディアデータの復号が可能であることを保証するためのものである。
【００４３】
１つのｍｏｏｆ容器と１つのｍｄａｔ容器は、セグメント化ＭＰ４ファイルの１つのセグメントを構成し、１つのセグメント化ＭＰ４ファイルに一つ又は複数のこのようなセグメントが含まれてもよい。各セグメントにパッケージされたメタデータは、当該セグメント内にパッケージされたメディアデータが独立して復号することができることを保証する。
【００４４】
８）メディアソース拡張（ＭＳＥ、Ｍｅｄｉａ Ｓｏｕｒｃｅ Ｅｘｔｅｎｓｉｏｎｓ）インターフェースは、ウェブページで実現されプレーヤ向けのインターフェースであって、ウェブページにおけるローディング期間にウェブブラウザのインタープリタによって解析されて、フロントエンドのプログラミング言語（例えばＪａｖａＳｃｒｉｐｔ）を実行することで実現され、プレーヤにハイパーテキストマークアップ言語（ＨＴＭＬ）メディア要素（Ｍｅｄｉａ Ｅｌｅｍｅｎｔ）を呼び出すというメディアストリーミングを再生する機能を提供する。例としては、映像要素<ｖｉｄｅｏ>、及び音声要素<ａｕｄｉｏ>でビデオ/オーディオを再生する機能を実現する。
【００４５】
９）ストリームメディアパッケージフォーマットフォーマットメディアは、メディアデータをストリームのメディアファイルにパッケージする。メディアファイルを完全にダウンロードする必要がなく、別途トランスコードする必要がなく、復号されて再生されることができる、すなわち、本来にダウンロードしながら再生することをサポートする技術である。典型的なストリームメディアパッケージフォーマットストリームメディアフォーマットのファイルは、ＨＴＴＰライブストリーム（ＨＬＳ、ＨＴＴＰ Ｌｉｖｅ Ｓｔｒｅａｍｉｎｇ)技術に基づくＴＳメディアファイルセグメント、ＦＬＶ（Ｆｌａｓｈ Ｖｉｄｅｏ）ファイルなどが挙げられる。
【００４６】
１０）非ストリームメディアパッケージフォーマットストリームメディアフォーマットは、メディアデータをメディアファイルにパッケージし、且つメディアファイルを完全にダウンロードしてから復号されて再生されるパッケージ技術である。典型的には、非ストリームメディアパッケージフォーマットストリームメディアフォーマットのファイルは、ＭＰ４ファイル、ＷＭＶ（Ｗｉｎｄｏｗｓ Ｍｅｄｉａ Ｖｉｄｅｏ）ファイル、ＡＳＦ（Ａｄｖａｎｃｅｄ Ｓｔｒｅａｍｉｎｇ Ｆｏｒｍａｔ）ファイルなどが挙げられる。
【００４７】
なお、ＭＰ４ファイルは本来にストリームメディアの形式の再生をサポートしないが、オンライントランスコードした後に、プレーヤによりトランスコードされたメディアストリームに、又は部分的にダウンロードしたＭＰ４ファイルの欠落部分に無効なバイナリデータを充填（例えば、ｆｔｙｐ容器及びｍｏｏｖ容器が完全にダウンロードされた場合、ｍｄａｔ容器の欠落部分に無効なバイナリデータを代わりに充填）することで、ダウンロードしながら再生する技術効果を実現できる。本明細書には、このような本来にストリームメディアの形式の再生をサポートしないパッケージフォーマットを、非ストリームメディアフォーマットという。
【００４８】
まず、本公開の実施例を実現するメタデータ容器の解析装置を説明する。メタデータ容器の解析装置は、ハードウェア、ソフトウェア又はソフト-ハードウェア結合の方式として提供され得る。
【００４９】
以下、メタデータ容器の解析装置のソフト-ハードウェア結合の実施を説明する。図５を参照して、図５は、本公開の実施例のメタデータ容器の解析装置のある選択可能な構成の模式図である。メタデータ容器の解析装置５００は、ビデオ再生機能を有する携帯電話、コンピューター、デジタル放送端末、情報送受信設備、ゲーム操作卓、タブレット設備、医療設備、フィットネス設備、個人用デジタル補助装置等であってよい。図５に示すメタデータ容器の解析装置５００は、少なくとも１つのプロセッサ５０１、メモリ５０２、少なくとも１つのネットワークインターフェース５０４、及びユーザインターフェース５０３を備える。メタデータ容器の解析装置５００の各アセンブリのそれぞれは、バスシステム５０５によって結合されている。バスシステム５０５は、これらのアセンブリの間の接続や通信を実現するために用いられると理解される。バスシステム５０５は、データバスの他に、電源バス、制御バス、及び状態信号バスを備える。しかし、明確に説明するために、図５において各種のバスを全てバスシステム５０５として示している。
【００５０】
ここで、ユーザインターフェース５０３は、ディスプレー、キーボード、マウス、トラックボール、クリック輪、キー、ボタン、タッチパネル又はタッチスクリーン等を備えてよい。
【００５１】
メモリ５０２は、発揮性メモリ又は非発揮性メモリでもよいし、発揮性と非発揮性メモリとの両者を備えてもよいと理解される。ここで、非発揮性メモリは、読み出し専用メモリ（ＲＯＭ，Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）、プログラマブル読み出し専用メモリ（ＰＲＯＭ，Ｐｒｏｇｒａｍｍａｂｌｅ Ｒｅａｄ-Ｏｎｌｙ Ｍｅｍｏｒｙ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ，Ｅｒａｓａｂｌｅ Ｐｒｏｇｒａｍｍａｂｌｅ Ｒｅａｄ-Ｏｎｌｙ Ｍｅｍｏｒｙ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ，Ｅｌｅｃｔｒｉｃａｌｌｙ Ｅｒａｓａｂｌｅ Ｐｒｏｇｒａｍｍａｂｌｅ Ｒｅａｄ-Ｏｎｌｙ Ｍｅｍｏｒｙ）であってよい。磁気表面メモリは、磁気ディスクメモリ又は磁気テープメモリであってよい。発揮性メモリは、ランダムアクセスメモリ（ＲＡＭ，Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）であってよく、外部キャッシュとして用いられる。制限的ではなく例示的な説明によって、多くの形式のＲＡＭ、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ，Ｓｔａｔｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、同期型スタティックランダムアクセスメモリ（ＳＳＲＡＭ，Ｓｙｎｃｈｒｏｎｏｕｓ Ｓｔａｔｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ，Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）、同期型ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ，Ｓｙｎｃｈｒｏｎｏｕｓ Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）を使用可能である。本公開の実施例に記述されたメモリ５０２は、これらと任意の他の適合なタイプのメモリとを含める旨である。
【００５２】
本公開の実施例のメモリ５０２は、三状態コンテントアドレッシングメモリ（ＴＣＡＭ）、スタティックランダムメモリを含めているが、これらに限定されることではなく、メタデータ容器の解析装置５００の操作を支持できるようにサーバから取得されたメディアファイルデータを記憶することができる。これらのデータの例としては、メタデータ容器の解析装置５００で操作される何のコンピュータープログラム、例えばオペレーティングシステム５０２１及びアプリケーション５０２２、各タイプのメディアファイルデータ情報等を含める。ここで、オペレーティングシステム５０２１は、各種のシステムプログラム、例えばアーキテクチャ層、コアライブラリ（Ｃｏｒｅ ｌｉｂｒａｒｉｅｓ）層、駆動層等を含め、各種の基礎業務の実現及びハードウェアに基づくタスクの処理に用いられる。アプリケーション５０２２は、各種のアプリケーション、例えばメタデータ容器の解析機能を有するクライアント、又はアプリケーション等を含めることができる。本公開の実施例のメタデータ容器の解析方法を実現するプログラムは、アプリケーション５０２２に含められることができる。
【００５３】
前記した本公開の実施例に開示された方法は、プロセッサ５０１によって実現される。プロセッサ５０１は、集積回路チップであり得、信号の処理能力を有している。本公開の実施例が提供したメタデータ容器の解析方法は、実現する過程で、プロセッサ５０１内のハードウェアの集積理論回路又はソフトウェア形式の操作により完成され可能である。前記したプロセッサ５０１は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ，Ｄｉｇｉｔａｌ Ｓｉｇｎａｌ Ｐｒｏｃｅｓｓｏｒ）、又は他のプログラム可能論理デバイス、離散ゲート又はランジスタ論理デバイス、離散ハードウェアアセンブリ等であり得る。プロセッサ５０１は、本公開の実施例が提供した各方法、ステップ及び論理ブロック図を実現又は実行することができる。汎用プロセッサは、マイクロプロセッサ又は何の従来のプロセッサ等であり得る。本公開の実施例が提供した方法のステップは、ハードウェア復号プロセッサによって実行されて完成される、又は、復号プロセッサ内のハードウェアとソフトウェアブロックの協働によって実行されて完成されるように直接に表すことができる。ソフトウェアブロックは、記憶媒体にあることができる。該記憶媒体がメモリ５０２にある。プロセッサ５０１は、メモリ５０２内の情報を読み出して、そのハードウェアと協働してメタデータ容器の解析方法を完成する。
【００５４】
例示的な実施例では、本公開の実施例は、コンピューター読取り可能な記憶媒体、例えば、コンピュータープログラムを含めたメモリ５０２を更に提供している。前記したコンピュータープログラムは、メタデータ容器の解析方法を完成するように、メタデータ容器の解析装置５００のプロセッサ５０１により実行されることができる。コンピューター読取り可能な記憶媒体は、ＦＲＡＭ（登録商標）、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、Ｆｌａｓｈ Ｍｅｍｏｒｙ、磁気表面メモリ、光ディスク、又はＣＤ-ＲＯＭ等メモリであってもよいし、前記メモリの一つ又は任意の組合せを備えた各種の設備、例えば携帯電話、コンピューター、タブレット設備、個人用デジタル補助装置等であってもよい。
【００５５】
以下、メタデータ容器の解析装置の単純ハードウェア実施を説明する。本公開の実施例のメタデータ容器の解析装置は、一つ又は複数のアプリケーション専用集積回路（ＡＳＩＣ，Ａｐｐｌｉｃａｔｉｏｎ Ｓｐｅｃｉｆｉｃ Ｉｎｔｅｇｒａｔｅｄ Ｃｉｒｃｕｉｔ）、ＤＳＰ、プログラム可能論理デバイス（ＰＬＤ，Ｐｒｏｇｒａｍｍａｂｌｅ Ｌｏｇｉｃ Ｄｅｖｉｃｅ）、複雑プログラム可能論理デバイス（ＣＰＬＤ，Ｃｏｍｐｌｅｘ Ｐｒｏｇｒａｍｍａｂｌｅ Ｌｏｇｉｃ Ｄｅｖｉｃｅ）、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ，Ｆｉｅｌｄ-Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙ）又は他の電子デバイスにより実現することができ、本公開の実施例が提供したメタデータ容器の解析方法を実行して実現することに用いられる。
【００５６】
以下、メタデータ容器の解析装置の単純ソフトウェア実施を説明する。本公開の実施例のメタデータ容器の解析装置は、アプリケーション又はプラグインによって実現することができ、あるいは、両者が協働する方式で実現することができる。
【００５７】
例示として、アプリケーションは、メタデータ容器解析に専用されるクライアントであってもよく、メタデータ容器の解析機能を選択可能な機能としたクライアントであってもよく、相応のプラグインをインストールすることで実現される。
【００５８】
例示として、プラグインは、アプリケーションの機能アップグレードインスタレーションパッケージとして実現されることができ、メディア再生用のアプリケーションにメタデータ容器の解析の機能が重畳される。メディア再生のウェブサイト内の要素であってもよく、フラントエンド言語で実現され、ブラウザにより直接に解釈実行されることでウェブサイトでメタデータ容器の解析及びメディア再生の機能を実現する。
【００５９】
メタデータ容器の解析装置のハードウェア実施又はソフトウェア実施の例示として、メタデータ容器の解析装置は、信号/情報/データ層で結合関係がある一連のブロックとして提供されることができる。以下、図６に合わせて説明する。図６を参照して、図６は、本公開の実施例のメタデータ容器の解析装置のある選択可能な構成の模式図であって、メタデータ容器の解析を実現した解析装置が備えた一連のブロックを示している。しかし、メタデータ容器の解析装置のブロック構造は、図６に示すもののみに限定されることではなく、例えば、その中のブロックに対して、実現する機能の相違に応じてさらに分解又は合併することができる。以下、図６に示すブロックが実現する機能について説明する。
【００６０】
以下、引き続いて図５に基づいて図６に示す各ブロックの機能を説明する。
【００６１】
データ取得ブロック６０１は、メディアファイルにおけるメタデータ容器の位置に基づいて、メディアファイルのバイナリデータからメタデータ容器に対応するバイナリデータを取得するように配置されている。
【００６２】
データ解析ブロック６０２は、取得されたバイナリデータ内の前記メタデータ容器ヘッダの標準な長さに対応するバイナリデータを順次に解析して、前記メタデータ容器内のサブ容器の容器タイプ、及び前記サブ容器の容器データの長さを取得するように配置されている。
【００６３】
前記データ解析ブロック６０２は、前記サブ容器の容器タイプに対応するタイプの解析器を呼び出して、未解析のデータ内の前記容器データの長さに対応するバイナリデータを順次に解析して、前記容器データが表すメディア情報を取得するように配置されている。
【００６４】
ある実施例では、提供されたメタデータ容器の解析装置は、アプリケーションに対応するサーバに適用されることができる。ここで、前記したアプリケーションに対応するサーバは、フラントエンドのプレーヤの請求に反応して、フラントエンドへメディアファイル内のバイナリデータを提供するためのものである。前記フラントエンドのプレーヤは、下記の場合を含む：プレーヤが埋め込みブラウザ（又は埋め込みブラウザの任意のアプリケーション）によりロードされたウェブサイト内のＨＴＭＬ５（Ｈ５）プレーヤであって、フラントエンド向けの言語（例えばＪａｖａＳｃｒｉｐｔ）を用いて実現され、ブラウザによりメディア再生のウェブサイトがロードされると、プレーヤコードとウェブサイト要素とが共にブラウザにダウンロードされる。プレーヤがフラントエンド向けの言語を採用して実現されるため、集約を経る必要がなく、ブラウザにより直接に解釈され、プレーヤコードを実行するとウェブサイトでプレーヤの機能を実現することができ、適用できるプラットホームが広く存在し、実現効率が高い。
【００６５】
ある実施例では、前記バイナリデータは、ファイルタイプ容器、メタデータ容器及びメディアデータ容器内のバイナリデータを含め、フラントエンドに、取得されたファイルタイプのバイナリデータ、キーフレームの間のメディアデータ、及び取得されたメタデータに基づいて、取得されたメディアデータに対応する新しいメタデータを新たに計算させることに供される。
【００６６】
ある実施例では、前記した取得されたメタデータに基づいて、取得されたメディアデータに対応する新しいメタデータを新たに計算することは、セグメントメディアファイルレベルのメタデータ（例えば、ＦＭＰ４内のｍｏｏｖ容器及びそれが含めたデータ）をセグメント化し、メディアファイル内のセグメントレベルのメタデータ（例えば、ＦＭＰ４内のｍｏｏｆボックス及びそれが含めたデータである。ここで、一つのセグメントのＦＭＰ４ファイル内には一つ又は複数のセグメントが有する可能性がある）をセグメント化し、セグメントメディアファイルのパッケージ構造内の対応する容器へ充填することを備える。
【００６７】
ある実施例では、提供されたメタデータ容器の解析装置は、例えば端末設備に適用可能である。例えば、端末設備に使用されるプレーヤであってもよい。プレーヤは、嵌め込みブラウザ（又は嵌め込みブラウザの任意のアプリケーション）にロードされるウェブサイト内のＨ５プレーヤであってもよく、フラントエンド向けの言語（例えばＪａｖａＳｃｒｉｐｔ）で実現される。ブラウザがメディア再生のウェブサイトをロードすると、プレーヤコードとウェブサイト要素とが共にブラウザにダウンロードされる。プレーヤがフラントエンド向けの言語を採用して実現されているため、集約を経る必要がなく、ブラウザにより直接に解釈され、プレーヤコードが実行されると、ウェブサイトでプレーヤの機能を実現することができ、適用できるプラットホームが広く存在し、実現効率が高い。
【００６８】
ある実施例では、前記メタデータ容器の解析装置を適用したプレーヤは、まず、相応のサーバにメディアファイル内のファイルタイプ容器及びメタデータ容器のバイナリデータを請求し、メディアファイルのタイプ及びメディア情報を解析する。次に、プレーヤは、メディア情報に関連して、時間スパンに再生待ち時間帯が含まれている２つのキーフレームを計算し、サーバにメディアデータ容器内の２つのキーフレームの間のメディアデータ（ビデオ/オディオデータ）を請求する。最後に、プレーヤは、取得されたメディアデータを表すメタデータを計算し、新しいメタデータ（セグメントメディアファイルレベルのメタデータ、及びセグメントメディアファイル内のセグメントレベルのメタデータを含み）を計算し、セグメントメディアファイルのパッケージ構造に応じて充填を行う。
【００６９】
ある実施例では、前記メタデータ容器の解析装置を適用したプレーヤは、まず、相応のサーバに請求するファイルがＭＰ４ファイルである。ＭＰ４ファイルのメタデータ容器は、複数のサブ容器が嵌め込んだ嵌め込み構造であり、嵌め込み構造において、一部のサブ容器内には具体的なバイナリデータがパッケージされ、一部のサブ容器内には他のサブ容器もパッケージされている。
【００７０】
取得されたメタデータ容器のバイナリデータについては、パッケージングルールによって、その開始部分のバイトが前記メタデータ容器の容器タイプ及び容量を表すためのものである。そこで、メディアファイル内のメタデータ容器に対応するバイナリデータを取得する時に、まず、前記メディアファイル内の容器ヘッダの標準長によって、バイナリデータ内の相応の標準長のデータをバイト単位毎に解析して、前記メディアデータ容器の容器タイプ及び容量を取得する。次に、容器タイプがメタデータ容器であると解析した時に、引き続いて前記メディアファイル内の容器ヘッダの標準長によってメタデータ容器内の後続データ、即ち、容器データ（複数のセルフ容器を含む）のサブ容器のヘッダに対応するバイナリデータをバイト単位毎に解析する。
【００７１】
メタデータを解析する過程で、前記ＭＰ４ファイルのパッケージルールに基づいて相応のデータの解析処理を行う必要がある。
【００７２】
ＭＰ４ファイルを例として、容器ヘッダの標準長について以下のように説明する。容器ヘッダの先頭の４バイト（３２ビット）が容器の長さ（容量）であって、容器ヘッダと容器データとが占める記憶空間を含めている。長さが１であれば、容器の容量が続く８ビットユニット６４の大きいサイズの（ｌａｒｇｅ ｓｉｚｅ）フィールドに格納されることを表す。ｓｉｚｅが０であれば、容器が最後の容器であることを表す。容器ヘッダにおける容量を示すバイトより後ろにある４つのバイトが容器タイプ、例えば“ｆｔｙｐ”、“ｍｏｏｖ”等を表すためのものであって、特定のタイプの容器を表す。“ｕｕｉｄ”であれば、容器が拡張タイプであることを表す。容器のタイプが共通唯一識別コード（ｕｕｉｄ）であれば、続く１６バイトがｕｕｉｄの格納に用いられる。続くバイトからはｍｏｏｖ容器内の容器データである。ｍｏｏｖ容器内には、複数の容器のバイナリデータが含まれ、サブ容器のヘッダも同様に標準長に従う。
【００７３】
ある実施例では、前記データ解析ブロック６０２は、前記サブ容器の容器タイプをプリ標識された容器タイプと対比するように配置されている。前記データ解析ブロック６０２は、前記サブ容器の容器タイプに対応する解析器を呼び出し、前記解析器によって前記サブ容器内の容器データを解析し、前記容器データが表すメディア情報を取得するように配置されている。対比を行うことで前記サブ容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されたと確定した時に、相応の容器データに対する快速解析を実現することができ、解析処理速度を効率的に向上させることができる。
【００７４】
ある実施例では、前記データ解析ブロック６０２は、前記サブ容器の容器タイプをプリ標識された容器タイプと対比するように配置されている。前記データ解析ブロック６０２、前記サブ容器内にパッケージされている容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されるまで、前記メディアファイル内の容器ヘッダの標準長によって、前記サブ容器に対応するバイナリデータを再帰的に解析するように配置されている。対比を行うことで前記サブ容器の容器タイプがプリ標識され、且つ引き続き容器をパッケージすることに用いられるとプリ標識されたと確定した時に、前記メディアファイル内の容器ヘッダの標準長によって、前記サブ容器に対応するバイナリデータを再帰的に解析するため、データ解析の正確性を確保することができる。
【００７５】
ある実施例では、前記データ解析ブロック６０２は、前記サブ容器内にパッケージされている容器の容器データが表すメディア情報を取得するために、サブ容器内にパッケージされている容器の容器タイプに対応する解析器を呼び出し、バイナリデータをバイト単位毎に解析し、解析されたバイナリデータの長さが前記サブ容器内にパッケージされている容器の容器データの長さに対応するように配置されている。対比を行うことで前記サブ容器内にパッケージされている容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されたと確定した時に、バイナリデータをバイト単位毎に解析し、解析されたバイナリデータの長さが前記サブ容器内にパッケージされている容器の容器データの長さに対応するため、データ解析の正確性を効率的に向上させることができる。
【００７６】
ある実施例では、前記装置は、呼び出された前記解析器において解析されるサブ容器を記録することに用いられるように配置されているデータ記録ブロック（図示せず）を更に備える。記録されたサブ容器の実例をサブ容器属性に設置する。前記サブ容器属性が前記サブ容器が所属する容器に含められ、前記サブ容器と所属する容器との間のネスト関係を記述することに用いられる。呼び出された解析器内で解析するサブ容器を記録することで、前記サブ容器と所属する容器との間のネスト関係を正確に記述することができる。
【００７７】
ある実施例では、前記装置は、データ格納ブロック（図示せず）を更に備える。該データ格納ブロックは、前記サブ容器と所属する容器との間のネスト関係、及び前記サブ容器とパッケージしている容器とのネスト関係に基づいてオブジェクトを作成し、前記サブ容器に対応して作成されたオブジェクト内へメディア情報を含めた配列を格納するように配置されている。格納されたメディア情報が前記サブ容器の容器データで表される。オブジェクトの方式によって、ネスト構造を解析する過程で、バイナリデータサブ容器に格納されたメディア情報を同期的に直接にパッケージすることができる。
【００７８】
ある実施例では、前記サブ容器の容器タイプに対応するタイプの解析器を呼び出せられなかった時に、前記データ解析ブロック６０２は、前記サブ容器に対応するバイナリデータの解析を無視するようにも配置されている。具体的に、前記サブ容器に対応するバイナリデータの解析を無視することは、以下の２つの場合を含める。（ａ）解析不可なサブ容器が全てのサブ容器のうち最後に並べているサブ容器ではない時に、完全な解析過程を実現するために、該サブ容器に対応するバイナリデータを無視した後に前記バイナリデータのうち次のサブ容器に対応する部分へジャンプして引き続き解析を行う必要がある場合。（ｂ）解析不可なサブ容器が全てのサブ容器のうち最後に並べているサブ容器である時に、該サブ容器に対応するバイナリデータのみを無視することができる。ここで、サブ容器が解析不可であることは、サブ容器に対応する解析器の欠落、及びサブ容器に対応する解析器の呼び出し不可を含める。前記サブ容器に対応するバイナリデータの解析を無視すること、及び前記サブ容器の長さによって前記バイナリデータのうち次のサブ容器に対応する部分へジャンプし引き続いて解析を行うことで、解析不可な容器に対する処理を実現し、容器解析中の互換性及び安定性を保証し、解析不可又は解析過程中のエラーの発生による解析過程の滞りを回避した。同時に、メディアファイル内にカスタム容器の存在によって解析できなくなる場合があっても、実施例が提供した態様を採用すれば、解析過程でのエラーの通知が生じて後続の解析を継続できなくなることがなく、メディアファイルが最大限に完全に解析可能なことを確保した。
【００７９】
前記データ解析ブロックは、前記サブ容器の長さによって、前記バイナリデータのうち次のサブ容器に対応する部分へジャンプし引き続いて解析を行うように配置されている。ここで、解析不可なサブ容器が全てのサブ容器のうち最後に並べているサブ容器である時に、該サブ容器に対応するバイナリデータのみを無視することができる。逆に、解析不可なサブ容器が全てのサブ容器のうち最後に並べているサブ容器ではない時に、完全な解析過程を実現するために、該サブ容器に対応するバイナリデータを無視した後に、前記バイナリデータのうち次のサブ容器に対応する部分へジャンプし引き続いて解析を行う必要もある。前記サブ容器に対応するバイナリデータの解析を無視すること、及び前記サブ容器の長さによって前記バイナリデータのうち次のサブ容器に対応する部分へジャンプし引き続いて解析を行うことで、解析不可な容器に対する処理を実現し、容器解析中の互換性及び安定性を保証し、解析不可又は解析過程中のエラーの発生による解析過程の滞りを回避した。同時に、メディアファイル内にカスタム容器の存在によって解析できなくなる場合があっても、本実施例が提供した態様を採用すれば、解析過程でのエラーの通知が生じて後続の解析を継続できなくなることがなく、メディアファイルが最大限に完全に解析可能なことを確保した。
【００８０】
ある実施例では、解析されるメタデータ容器はデータが壊された場合が存在する可能性があるため、本実施例に示す態様を採用すれば、ジャンプの方式で一部のサブ容器に対する解析を無視して、データの解析速度を向上させることができ、同時に、元データの一部が壊した解析待ちデータに対して、サブ容器内でのジャンプによって、壊されていないデータを引き続いて解析することができる。壊されたデータの存在によるデータ解析の失敗を回避する。
【００８１】
ある実施例では、容器内のネスト関係は、前記サブ容器と親容器とのネスト関係、及び前記サブ容器と前記サブ容器のサブ容器との間のネスト関係を含めている。サブ容器の容器タイプがバイナリデータを直接にパッケージするためのものである時に、後者のネスト関係が存在しないと理解される。
【００８２】
ある実施例では、プレーヤが所定の時間帯に対応するメディアデータを取得するフローについて説明する。プレーヤが一本のビデオファイル又は１トラックのメディアファイルを再生する時に、プレーヤは、データストリームを正確に解析しなければならないとともに、一定の時間で対応するメディアデータを取得しこの１セグメントのメディアデータが独立にデコード可能であることを確保しなければならない。
【００８３】
本公開の実施例が提供したメタデータ容器の解析装置に合わせて、本公開の実施例を実現するメタデータ容器の解析方法について説明する。以下、メディアファイルがＭＰ４ファイルであることを例として説明するが、以下に記載されるＭＰ４ファイルについての変換方法が他の非ストリームメディア様式にも容易に適用することができると理解される。
【００８４】
本公開の実施例が提供したメタデータ容器の解析方法は、フラントエンドのプレーヤへ適用することができる。プレーヤは、嵌め込みブラウザがロードする、フラントエンド向けの言語（例えばＪａｖａＳｃｒｉｐｔ）で実現されるウェブサイト内のＨＴＭＬ５（Ｈ５）プレーヤを含めるが、これに限定することではない。ブラウザがメディア再生のウェブサイトをロードする時に、プレーヤコードとウェブサイト要素とが共にブラウザにダウンロードされる。プレーヤがフラントエンド向けの言語で実現されるため、集約を経る必要がなく、ブラウザにより直接に解釈され、プレーヤコードを実行するとウェブサイトでプレーヤの機能を実現することができ、適用できるプラットホームが広く存在し、実現効率が高い。
【００８５】
ある実施例では、プレーヤは、メディア情報に基づいてメディアファイル内のメディアデータを正確にデコードするために、メディアファイルのメタデータを解析してメディア情報を取得する必要がある。図７を参照して、図７は、本公開の実施例が提供したメタデータ容器の解析方法のある選択可能なフローの模式図である。図７が示すステップに合わせて説明する。
【００８６】
ステップ７０１において、メディアファイルにおけるメタデータ容器の位置を位置決める。
【００８７】
ある実施例では、メディアファイル内におけるメタデータ容器のオフセット及び容量を位置決めるまで、読み出されたバイナリデータから識別された容器のタイプ及び長さに基づいて、メディアファイルのバイナリデータから容器ヘッダ標準に合致するバイナリデータを読み出す。
【００８８】
例を挙げて説明する。メディアファイルのバイナリデータについて、０バイトから始まるバイナリデータがファイルタイプ容器に対応している。容器ヘッダの標準長によってメディアファイルのバイナリデータの開始位置を読み取り、容器ヘッダの標準長に合致するバイナリデータを読み取り、読み取られたバイナリデータを解析することで、メディアファイル内でファイルタイプ容器の後ろに位置する容器のタイプ及び長さを確定することができる。
【００８９】
解析されたタイプがファイルタイプ容器であれば、メタデータ容器の長さ（即ち容量）を解析することができる。この時、メタデータ容器のオフセットがファイルタイプ容器の長さとなる。
【００９０】
解析されたタイプがメディアデータ容器であれば、メディアデータ容器の長さに基づき、容器タイプによる長さをオフセットとして、容器ヘッダの標準長に合致するバイナリデータを引き続き読み取ることで、メタデータ容器の長さ（即ち容量）を解析することができる。この時、メタデータ容器の長さは、ファイルタイプ容器の長さとメディアデータ容器の長さとの加算値である。
【００９１】
メディアファイルのうち、開始の容器がファイルタイプ容器であることを除き、後続の容器のパッケージ順序について規範がないため、前記解析方式によって、メディアファイル内で容器のパッケージ順序がファイルタイプ容器、メタデータ容器及びメディアデータ容器であるか、或いはファイルタイプ容器、メディアデータ容器及びメタデータ容器であるかを問わず、メディアファイル内におけるファイルタイプ容器の位置を正確に効率よく位置決めることができる。
【００９２】
ステップ７０２において、メディアファイルにおけるメタデータ容器の位置に基づいてメディアファイルのバイナリデータからメタデータ容器に対応するバイナリデータを取得する。
【００９３】
オフセット及び容量によってメディアファイルにおけるメタデータ容器の位置を表すことができるため、読み取られたバイナリデータの長さがメタデータ容器の容量に合致するまで、メディアファイルからオフセットに対応する位置を始点としてバイナリデータを読み取る。これにより、メタデータ容器に対応するバイナリデータを読み取ることができる。
【００９４】
ステップ７０３において、メタデータ容器バイナリデータ内の容器ヘッダの標準長に対応するバイナリデータを順次に解析して、メタデータ容器内のサブ容器の容器タイプ、及びサブ容器の容器データの長さを取得する。
【００９５】
ある実施例では、メタデータ容器内に複数のサブ容器がネストされている場合について、毎度バイナリデータを読み取るときのオフセットがいずれも既に識別されたサブ容器長の加算値であり、読み取るバイナリデータの長さが容器ヘッダの標準長に合致することで、現時点で処理するサブ容器のタイプ及び長さを解析することができる。
【００９６】
例を挙げて説明する。初回に読み取る時に、メタデータ容器のバイナリデータの０バイトからバイナリデータの読み取りを開始し、且つ読み取るバイナリデータの長さが容器ヘッダの標準長に合致することで、１番目のサブ容器のタイプ及び長さを解析することができる。２回目の読み取りを行う時に、初回に読み取られたサブ容器の長さをオフセットとして、バイナリデータの読み取りを開始し、且つ読み取るバイナリデータの長さが容器ヘッダの標準長に合致することで、２番目のサブ容器のタイプ及び長さを解析することができる。
【００９７】
該実施例に示す方式を採用してバイナリデータを読み取ると、過度な読み取りによって戻すことはなく、読み取り不足によって二次読み取りを行うこともないことで、解析の効率及び正確率を向上させた。
【００９８】
ステップ７０４において、サブ容器の容器タイプに対応するタイプの解析器を呼び出し、未解析のデータ内の容器データの長さに対応するバイナリデータを順次に解析して、容器データが表すメディア情報を取得する。
【００９９】
ある実施例では、メタデータ容器内にネストされた典型的な容器タイプに対してプリ標識して、容器がバイナリデータをパッケージすることに直接に用いられるか、或いはさらに容器をパッケージしているかを示す。例えば、図２に示すｍｖｈｄ容器、オディオトラック容器和ビデオトラック容器等に対して、さらに容器をパッケージしていると標識し、図２に示すｓｔｔｓ容器、ｓｔｓｄ容器 等に対して、バイナリデータを直接にパッケージしていると標識する。
【０１００】
バイナリデータを直接にパッケージすると標識された容器タイプに対して，容器タイプにそれぞれ対応する解析器を設置する。解析器は、バイナリデータからそれが表すメディア情報を解析するためのものである。ステップ７０４において、ステップ７０３で解析されたサブ容器の容器タイプとプリ標識された容器タイプとを対比する時に、以下の２つの場合に関わる。
【０１０１】
場合１）対比を行うことで、サブ容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されたと確定した時に、サブ容器の容器タイプに対応する解析器を呼び出し、解析器によってサブ容器内の容器データを解析して、容器データが表すメディア情報を取得する。
【０１０２】
場合２)対比を行うことで、サブ容器の容器タイプがプリ標識され、且つ引き続き容器をパッケージすることに用いられるとプリ標識されたと確定した時に、サブ容器内にパッケージされている容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されることが解析されるまで、メディアファイルの容器ヘッダの標準長に基づいてサブ容器に対応するバイナリデータを再帰的に解析する。サブ容器内にパッケージされている容器の容器データが表すメディア情報を取得するために、サブ容器内にパッケージされている容器の容器タイプに対応する解析器を呼び出し、バイナリデータをバイト単位毎に解析し、解析されたバイナリデータの長さがサブ容器内にパッケージされている容器の容器データの長さに対応する。
【０１０３】
ある実施例では、メタデータ容器を解析する過程でメディア情報を記録する方式について説明する。メタデータ容器バイナリデータ内の容器ヘッダの標準長に対応するバイナリデータを順次に解析して、メタデータ容器内のサブ容器の容器タイプを取得する時に、サブ容器と所属する容器との間のネスト関係、及びサブ容器とパッケージしている容器とのネスト関係に基づいてオブジェクトを作成し、サブ容器の容器タイプがバイナリデータを直接にパッケージすることに用いられるとプリ標識された時に、サブ容器に対応して作成したオブジェクト内へメディア情報を含めた配列を格納する。格納されたメディア情報は、サブ容器の容器データによって表される。
【０１０４】
例えば、図２において、解析されるサブ容器のタイプがｓｔｔｓ容器である時に、ｓｔｔｓ容器がバイナリデータを直接にパッケージするとプリ標識されているため、ｓｔｔｓ容器に対応して作成したオブジェクト内へメディア情報を含めた配列を格納する。ここでのメディア情報は、ｓｔｔｓ容器の容器データによって表される時間長情報である。
【０１０５】
ある実施例では、メタデータ容器を解析する過程でサブ容器の間のネスト関係を記録する方式について説明する。メタデータ容器バイナリデータ内の容器ヘッダの標準長に対応するバイナリデータを順次に解析して、メタデータ容器内のサブ容器の容器タイプを取得する時に、容器タイプがバイナリデータを直接にパッケージするとプリ標識されていれば、呼び出された解析器の中へ解析するサブ容器を記録する。記録されたサブ容器の実例をサブ容器属性に設置する。サブ容器属性は、サブ容器が所属する容器に含められ、サブ容器と所属する容器との間のネスト関係を記述することに用いられる。
【０１０６】
例えば、図２において、解析されるサブ容器のタイプがｓｔｓｄ容器である時に、ｓｔｓｄ容器がバイナリデータを直接にパッケージするとプリ標識されているため、ｓｔｓｄ容器に対応する解析器の中へｓｔｓｄ容器を記録し、ｓｔｓｄ容器の実例をｓｔｂｌ容器サブ容器属性に設置する。以降は同様であり、最後にｓｔｓｄ容器のサブ容器属性にｓｔｓｄ容器、ｓｔｔｓ容器、ｓｔｓｃ容器等の、ｓｔｂｌ容器にネストされている複数のサブ容器を記録した。
【０１０７】
ある実施例では、対比を行うことで、サブ容器の容器タイプがプリ標識されていないと確定した、又はバイナリデータを直接にパッケージするとプリ標識されたが対応するタイプの解析器の呼び出しができなかった時に、サブ容器に対応するバイナリデータを解析することを無視し、サブ容器の長さに基づいて、バイナリデータのうち次のサブ容器に対応する部分へジャンプして引き続いて解析する。ここで、解析不可なサブ容器が全てのサブ容器のうち最後に並べているサブ容器である時に、該サブ容器に対応するバイナリデータのみを無視することができる。逆に、解析不可なサブ容器が全てのサブ容器のうち最後に並べているサブ容器ではない時に、完全な解析過程を実現するために、該サブ容器に対応するバイナリデータを無視した後に、前記バイナリデータのうち次のサブ容器に対応する部分へジャンプし引き続いて解析を行う必要もある。前記サブ容器に対応するバイナリデータを解析することを無視すること、及び前記サブ容器の長さに基づいて前記バイナリデータのうち次のサブ容器に対応する部分へジャンプし引き続いて解析を行うことで、解析不可な容器に対する処理を実現し、容器解析中の互換性及び安定性を保証し、解析不可又は解析過程中のエラーの発生による解析過程の滞りを回避した。同時に、メディアファイル内にカスタム容器の存在によって解析できなくなる場合があっても、本実施例が提供した態様を採用すれば、解析過程でのエラーの通知が生じて後続の解析を継続できなくなることがなく、ディアファイルが最大限に完全に解析可能なことを確保した。
【０１０８】
ある実施例では、解析されるメタデータ容器はデータが壊された場合が存在する可能性があるため、本実施例に示す態様を採用すれば、ジャンプの方式で一部のサブ容器に対する解析を無視して、データの解析速度を向上させることができ、同時に、元データの一部が壊した解析待ちデータに対して、サブ容器内でのジャンプによって、壊されていないデータを引き続いて解析することができる。壊されたデータの存在によるデータ解析の失敗を回避する。
【０１０９】
さらに、メディアファイルの源が多様であるため、メディアファイル内にカスタムの容器タイプが出現することはあり得る。幾つかの実施例に記載された採用されたジャンプの方式によって、メタデータ容器の全体の解析の進度を影響することがない。同時に、解析器を設置することで、メタデータ容器の容器タイプが変化した時に、対応するタイプの解析器の増加、削除及び修正を通じて、最新のメタデータ容器に対する互換的な解析を快速的に実現することができ、解析の融通度を向上させ、使用コストも低減させた。
【０１１０】
ある実施例では、呼び出された前記解析器の中で解析されるサブ容器を記録してもよい。記録されたサブ容器の実例をサブ容器属性に設置する。前記サブ容器属性は、前記サブ容器が所属する容器に含められ、前記サブ容器と所属する容器との間のネスト関係を記述することに用いられる。本実施例に示す態様を採用すれば、呼び出された解析器内で解析するサブ容器を記録することができる。記録情報を分析することで解析器の呼び出された頻度を判断することができ、呼び出される頻度が高い解析器を基礎解析ユニットとしてパッケージングして、データの解析速度の向上を実現する。
【０１１１】
ある実施例では、前記サブ容器と所属する容器との間のネスト関係、及び前記サブ容器とパッケージしている容器とのネスト関係に基づいてオブジェクトを作成し、前記サブ容器の容器タイプがバイナリデータを直接にパッケージすることに用いられるとプリ標識された時に、前記サブ容器に対応して作成されたオブジェクト内へメディア情報を含めた配列を格納する。格納されたメディア情報が前記サブ容器の容器データで表される。
【０１１２】
ある実施例では、前記サブ容器の容器タイプに対応するタイプの解析器を呼び出せられなかった時に、前記サブ容器に対応するバイナリデータを解析することを無視する。本実施例に示す態様を採用すれば、呼び出し不可な解析器に対応するバイナリデータを無視することで、大容量データに対する解析速度を効果的に向上させることができる。
【０１１３】
ある実施例では、容器内のネスト関係は、前記サブ容器と親容器とのネスト関係、及び前記サブ容器と前記サブ容器のサブ容器との間のネスト関係を含めている。ここで、サブ容器の容器タイプがバイナリデータを直接にパッケージするためのものである時に、後者のネスト関係が存在しない。
【０１１４】
ある実施例では、前記サブ容器の長さに基づいて、前記バイナリデータのうち次のサブ容器に対応する部分へジャンプし引き続いて解析を行ってもよい。本実施例に示す態様を採用すれば、サブ容器内でのジャンプによって、データの解析速度を向上させることができ、同時に、元データの一部が壊した解析待ちデータについて、サブ容器内でのジャンプによって、壊されていないデータを解析することができる。さらに、プリ標識されていなくて使用待ち解析器で解析に失敗したサブ容器について、それの対応するオブジェクト内のデータが空であるが、完全なネスト関係を形成するために、サブ容器の実例をそれの所属する容器のサブ容器属性へ設置することが依然として必要である。
【０１１５】
本公開の実施例が提供したメタデータ容器の解析装置に合わせて、ウェブサイトに埋め込まれたＨ５プレーヤがＭＰ４ファイルを解析する場合を例として説明する。図８を参照して、図８は、本公開の実施例が提供したメタデータ容器の解析方法のある選択可能なフローの模式図である。図８に示すステップに合わせて説明する。
【０１１６】
ステップ８０１において、ウェブサイトに埋め込まれたＨ５プレーヤによってサーバからメディアファイルのメタデータ容器内にパッケージされているメタデータを取得する。
【０１１７】
ある実施例では、プレーヤは、以下のようにメディアファイルのメタデータ容器内にパッケージされているメタデータを取得することができる。プレーヤは、設定されたオフセット及び容量を携帯したネットワーク請求をサーバへ送信することで、サーバが返したメディアファイル内での０バイトから開始し、且つ設定容量に合致するバイナリデータを取得する。サーバが返したバイナリデータからメタデータ容器内のメタデータを識別する。
【０１１８】
ここで、設定された容量は、既存のメディアファイルのファイルタイプ容器及びメタデータ容器の容量に基づいて統計して取得することができる。設定された容量は、設定された割合（例えば全ての）メディアファイルのファイルタイプ容器及びメタデータ容器の容量の加算値をカバーすることができようにして、メディアファイルのパッケージ構造が、ファイルタイプ容器、メタデータ容器及びメディアデータ容器を順序にバッケージしたものであるとき、一回の要求でメタデータ容器にバッケージされたメタデータを完全に取得できることを確保する。ネットワーク伝送時に接続を占有する状況を節約でき、さらに接続占有に起因してウェブページ内の非メディア再生サービスが接続を使用できないことで応答を遅延させる状況を回避する。
【０１１９】
プレーヤが取得したメタデータ容器にバッケージされたメタデータは、ＭＰ４ファイルにおけるｍｏｏｖ 容器にバッケージされたバイナリデータである。ＭＰ４ファイルのパッケージ構造がｆｙｔｐ容器、ｍｏｏｖ容器及びｍｄａｔ容器を順序にバッケージするものであるとき、設定容量が既存のＭＰ４ファイルのｆｔｙｐ容器及びｍｏｏｖ容器の容量に基づいて統計して取得できる。設定容量が、設定割合（例えば全ての）ＭＰ４ファイルのｆｔｙｐ容器及びｍｏｏｖ容器のバイナリデータの加算値をカバーできるようにして、多数の場合、ｍｏｏｖ容器に含まれた全てのバイナリデータをサーバから一回だけで取得できることを保証する。
【０１２０】
ある実施例において、プレーヤが設定されたオフセット及び容量によってサーバから請求したバイナリデータにおいて、ゼロバイトから始まる一段のバイナリデータがファイルタイプ容器に対応するものである。プレーヤが容器ヘッダを読み出すことでファイルタイプ容器の容量を取得し、第２の容器のヘッダを読み出すことで次の容器のタイプ及び容量を知り、第２の容器のタイプがメタデータ容器であり、且つ返信したバイナリデータの容量がファイルタイプ容器の容量及びメタデータ容器容量の加算値以上である場合、設定されたオフセット及び容量によってサーバから要求したバイナリデータには、メタデータ容器にバッケージされたメタデータが含まれることを表明する。それに対して、第２の容器のタイプがメタデータ容器であり、且つ返信したバイナリデータの容量がファイルタイプ容器の容量及びメタデータ容器容量の加算値に未満である場合、設定されたオフセット及び容量によってサーバから要求したバイナリデータには、メタデータ容器にバッケージされたメタデータが含まれていないことを表明する。プレーヤが設定されたオフセット及び容量によってサーバから要求したバイナリデータには、メタデータ容器におけるメタデータを完全に含んでいない場合、プレーヤは、サーバから返信されたバイナリデータから容器の容量を読み出す必要がある。メタデータ容器のヘッダによってメタデータ容器のオフセット及び容量を算出し、算出されたオフセット及び容量をネットワーク要求に運ばせて、サーバにメタデータを要求する。サーバは、要求に従ってメディアファイルにおいて算出されたオフセットから、読み出されるバイナリデータが算出された容量に合致するようにバイナリデータを読み出し、プレーヤにデータを返信する。
【０１２１】
例を挙げて説明する。プレーヤは、サーバから返信したバイナリデータから容器の容量を読み出し、メタデータ容器のヘッダに基づいてメタデータ容器のオフセット及び容量を算出する。以下の二つの場合に関わる。
【０１２２】
場合１）残余のバイナリデータ（即ち返信されたバイナリデータのうちファイルタイプ容器のバイナリデータ以外のデータ）から読み出された容器のタイプがメタデータ容器であり、且つ残余のバイナリデータの容量がメタデータ容器の容量よりも小さい場合、メタデータ容器の容量と残余バイナリデータ容量の差分値を算出して二回目の請求の新たな容量とし、初回請求したオフセット及び容量の加算値を新たのオフセットとし、サーバにバイナリデータを二回目で請求する。
【０１２３】
場合２）残余のバイナリデータから読み出された容器のタイプがメディアデータ容器である場合、メディアデータ容器の容量とファイルタイプ容器容量の加算値を二回目で要求する新たなオフセットとし、設定された容量（メタデータ容器の容量をカバーできる経験値であってもよい）でサーバにバイナリデータを二回目で要求する。
【０１２４】
メディアファイルがＭＰ４ファイルである場合を例とする。プレーヤが設定されたオフセット及び容量によってサーバから要求されたバイナリデータにはｍｏｏｖ容器の完全なバイナリデータを含まないとき、プレーヤは、サーバから返信されたバイナリデータから容器のタイプ及び容量を読み出して、ＭＰ４ファイルにおけるｍｏｏｖ容器のオフセット及び容量を確定する必要がある。
【０１２５】
ＭＰ４ファイルのバイナリデータは、最初のバイトがいつもｆｔｙｐ容器に対応するものであって、返信されたバイナリデータからｆｙｔｐ容器のバイナリデータを識別し、ｆｔｙｐ容器のヘッダに基づいてその長さを取得できる。そして、残余のバイナリデータから、ヘッダの基準長さによって次の容器のバイナリデータを読み出す。ヘッダが示す容器タイプによって、以下の場合が含まれる。
【０１２６】
１）残余のバイナリデータ（即ち返信されたバイナリデータのうちｆｙｔｐ容器のバイナリデータ以外のデータ）から読み出された容器のタイプがｍｏｏｖ容器であり、且つ残余のバイナリデータの容量がｍｏｏｖ容器の容量以上である場合、確定されたオフセット及び容量によって、サーバからＭＰ４ファイル内の、ＭＰ４ファイルにおけるｍｏｏｖ容器のオフセットで始まり、且つＭＰ４ファイルにおけるｍｏｏｖ容器の容量に合致するｍｏｏｖデータを取得する。
【０１２７】
２）残余のバイナリデータから読み出された容器のタイプはｍｏｏｖ容器であり、且つ残余のバイナリデータの容量がｍｏｏｖ容器の容量よりも小さいとき、ｍｏｏｖ容器の容量と残余のバイナリデータ容量の差分値を算出して二回目で要求する新たな容量とし、一回目に要求されたオフセット及び容量の加算値を二回目で請求する新たなオフセットとし、サーバにバイナリデータを二回目で要求する。
【０１２８】
３）残余のバイナリデータから読み出した容器のタイプはｍｄａｔ容器であるとき、ｍｄａｔ容器の容量及びｆｔｙｐ容器容量の加算値を算出して二回目で要求する新たなオフセットとし、設定された容量でサーバにバイナリデータを二回目で要求する。
【０１２９】
このように、メディアファイルがいずれのパッケージ構造であっても、つまりメディアファイルにおけるファイルタイプ容器、メタデータ容器及びメディアデータ容器のパッケージ順序がどうなるかにもかかわらず、プレーヤが多くでも二回要求することでサーバからメタデータ容器におけるメタデータを取得することを保証でき、メタデータを取得する効率を向上させることができる。
【０１３０】
例を挙げて説明する。ＭＰ４ファイルについては、サーバから返信したバイナリデータにおいて、ＭＰ４ファイルのパッケージ基準によって、ゼロバイトからの一段のバイナリデータがｆｔｙｐ容器に対応するものである。容器のヘーダのパッケージ基準によって、ｆｔｙｐ容器のヘーダからｆｔｙｐ容器の容量（即ち長さ）及びＭＰ４ファイルの完全な容量を読み取ることができる。ｆｔｙｐ容器の容量をａとすれば（単位がバイトである）、ａ+１から引き続く容器のヘーダ情報を読み取り、引き続く容器のタイプ及び容量を取得する。読み取ることで得られたｆｔｙｐ容器に引き続くものはｍｏｏｖ容器であり、且つ残余のバイナリデータの容量（設定の容量-ｆｔｙｐ容器の容量）がｍｏｏｖ容器の容量よりも大きい場合、ｍｏｏｖ容器の完全のバイナリデータを取り戻したことを表明し、ｍｏｏｖ容器のオフセット及び容量によって残余のバイナリデータからｍｏｏｖ容器におけるメタデータを抽出することができる。
【０１３１】
ステップ８０２において、取得したメタデータを解析し、メディアファイルを記述するための、メディアデータ容器にパッケージされたメディアデータのメディア情報を取得する。
【０１３２】
プレーヤは、サーバからメタデータ容器にパッケージされたメタデータを取得した後、メタデータ容器におけるサブ容器のネスト構造を解析し、サブ容器のネスト構造に応じて、それぞれのサブ容器におけるバイナリデータを読み取り、読み取ったバイナリデータからそれぞれのサブ容器が表すメディアデータのメディア情報を解析する。実際の応用において、メディア情報がメディアファイルにおける映像フレーム及び/又は音声フレームのオフセット、容量、復号時間などの情報を含んでもよい。
【０１３３】
メディアファイルがＭＰ４ファイルであることを例とする。メタデータ容器がｍｏｏｖ容器である。図２から分かるように、ｍｏｏｖ容器にはｍｖｈｄ容器及びトラック容器がパッケージされ要る。ここで、ｍｖｈｄ容器のバイナリデータを解析することで、ＭＰ４ファイルの作成時刻、修正時刻、時間計量スケール、再生可能な時間長、デフォルトボリュームなどの情報を取得できる。ｍｏｏｖ容器には複数のトラック容器が含まれ、各メィデアトラックの特有な記述情報を記録している。例えば、ビデオトラックであるビデオトラック容器に対して、ビデオトラック容器には複数のサブ容器が複数層にネストされ、ビデオトラック容器のネスト構造によって、対応するバイナリデータを解析してＭＰ４ファイルの映像フレーム情報及び対応する画面情報を取得する。
【０１３４】
ある実施例において、プレーヤは、取得されたメタデータを以下の方式で解析して、メディア情報を取得する。メタデータ容器のバイナリデータにおける容器ヘッダの基準長さに対応するバイナリデータを順序に解析し、前記メタデータ容器のサブ容器の容器タイプ、及び前記サブ容器の容器データの長さを取得する；前記サブ容器の容器タイプに対応する解析器を呼び出し、解析されていないデータのうち前記容器データの長さに対応するバイナリデータを順序に解析し、前記容器データが表すメディア情報を取得する。
【０１３５】
ここで、プレーヤは、メタデータ容器に複数のサブ容器がネストされた状況に対して、バイナリデータを毎回に読み取る際のオフセットを、識別されたサブ容器の長さの加算値にし、読み取ったバイナリデータの長さが容器ヘッダの基準長さに合致することで、現在に処理するサブ容器のタイプと長さを解析することができる。
【０１３６】
例えば、初めて読み取るとき、メタデータ容器のバイナリデータのゼロバイトからバイナリデータを読み出し、且つ読み出したバイナリデータの長さが容器ヘッダの基準長さと合致することで、第１のサブ容器のタイプ及び長さを解析できる。２回目で読み取るとき、１回目で読み取ったサブ容器の長さをオフセットとし、バイナリデータの読み取りを始め、読み取ったバイナリデータの長さが容器ヘッダの基準長さと合致することで、第２のサブ容器のタイプと長さを解析できる。
【０１３７】
前記した方式によってバイナリデータを読み取ると、過度な読み取りによって戻すことはなく、読み取り不足によって二次読み取りを行うこともないことで、解析の効率及び正確率が保証される。
【０１３８】
ある実施例において、容器が直接にバイナリデータをパッケージすることに用いられるか、または容器をさらにパッケージすることに用いられるかを示すように、メタデータ容器にネストされた典型的な容器タイプをプリ標識する。例えば図２に示すｍｖｈｄ容器、オディオトラック容器及びビデオトラック容器などに対して容器をさらにパッケージしていると標識し、図２に示すｓｔｔｓ容器、ｓｔｓｄ容器などに対してバイナリデータを直接にパッケージしていると標識する。
【０１３９】
バイナリデータを直接にパッケージすると標識された容器タイプに対して、容器タイプと一つずつ対応する解析器を設置する。解析器は、表すメディア情報をバイナリデータに基づいて解析するためのものである。解析されたサブ容器の容器タイプとプリ標識された容器タイプとを比較することは、以下の二つの場合に関わる。
【０１４０】
場合１）対比を行うことで、前記サブ容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されたと確定されたとき、前記サブ容器の容器タイプに対応する解析器を呼び出し、前記解析器によって前記サブ容器における容器データを解析することで、前記容器データが表すメディア情報を取得する。
【０１４１】
場合２）対比を行うことで、前記サブ容器の容器タイプがプリ標識され、且つ容器をさらにパッケージすることに用いられるとプリ標識されたと確定されたとき、前記サブ容器にパッケージされた容器の容器タイプがプリ標識され、且つバイナリデータを直接にパッケージすることに用いられるとプリ標識されるまで、前記メディアファイルにおける容器ヘッダの基準長さに基づいて、前記サブ容器に対応するバイナリデータを再帰的に解析する。サブ容器にパッケージされた容器の容器タイプに対応する解析器を呼び出し、バイナリデータをバイト単位で解析し、解析されたバイナリデータの長さが前記サブ容器にパッケージされた容器の容器データの長さと対応することで、前記サブ容器にパッケージされた容器の容器データが表すメディア情報を取得する。
【０１４２】
ある実施例では、メタデータ容器を解析する過程でメディア情報を記録する方式について説明する。メタデータ容器バイナリデータ内の容器ヘッダの標準長に対応するバイナリデータを順次に解析して、前記メタデータ容器内のサブ容器の容器タイプを取得する時に、サブ容器と所属する容器との間のネスト関係、及びサブ容器とパッケージしている容器とのネスト関係に基づいてオブジェクトを作成し、サブ容器の容器タイプがバイナリデータを直接にパッケージすることに用いられるとプリ標識された時に、前記サブ容器に対応して作成したオブジェクト内へメディア情報を含めた配列を格納する。格納されたメディア情報は、サブ容器の容器データによって表される。
【０１４３】
例えば、図２において、解析されるサブ容器のタイプがｓｔｔｓ容器である時に、ｓｔｔｓ容器がバイナリデータを直接にパッケージするとプリ標識されているため、ｓｔｔｓ容器に対応して作成したオブジェクト内へメディア情報を含めた配列を格納する。ここでのメディア情報は、ｓｔｔｓ容器の容器データによって表される時間長情報である。
【０１４４】
ある実施例では、メタデータ容器を解析する過程でサブ容器の間のネスト関係を記録する方式について説明する。メタデータ容器バイナリデータ内の容器ヘッダの標準長に対応するバイナリデータを順次に解析して、前記メタデータ容器内のサブ容器の容器タイプを取得する時に、容器タイプがバイナリデータを直接にパッケージするとプリ標識されていれば、呼び出された前記解析器の中へ解析するサブ容器を記録する。記録されたサブ容器の実例をサブ容器属性に設置する。サブ容器属性は、サブ容器が所属する容器に含められ、サブ容器と所属する容器との間のネスト関係を記述することに用いられる。
【０１４５】
例えば、図２において、解析されるサブ容器のタイプがｓｔｓｄ容器である時に、ｓｔｓｄ容器がバイナリデータを直接にパッケージするとプリ標識されているため、ｓｔｓｄ容器に対応する解析器の中へｓｔｓｄ容器を記録し、ｓｔｓｄ容器の実例をｓｔｂｌ容器サブ容器属性に設置する。以降は同様であり、最後にｓｔｓｄ容器 のサブ容器属性にｓｔｓｄ容器、ｓｔｔｓ容器、ｓｔｓｃ容器等の、ｓｔｂｌ容器にネストされている複数のサブ容器を記録した。
【０１４６】
ある実施例では、対比を行うことで、前期サブ容器の容器タイプがプリ標識されていないと確定した、又はバイナリデータを直接にパッケージするとプリ標識されたが対応するタイプの解析器の呼び出しができなかった時に、サブ容器に対応するバイナリデータを解析することを無視し、サブ容器の長さに基づいて、前記バイナリデータのうち次のサブ容器に対応する部分へジャンプして引き続いて解析する。
【０１４７】
実際に、メディアファイルには、カスタムの容器タイプが含まれ、メタデータ容器の全体解析の進度に影響を及ぼすことがない。それと同時に、解析器を設置することで、メタデータの容器タイプが変化するとき、対応するタイプの解析器を追加・削除・修正することで、最新のメタデータ容器に対する互換的な解析を速やかに実現でき、アップデートの融通度が高いという特徴がある。
【０１４８】
実際に、メディアファイル内にカスタムの容器タイプが出現することはあり得る。ジャンプの方式によって、メタデータ容器の全体の解析の進度を影響することがない。同時に、解析器を設置することで、メタデータ容器の容器タイプが変化した時に、対応するタイプの解析器の増加、削除及び修正を通じて、最新のメタデータ容器に対する互換的な解析を快速的に実現することができ、柔軟かつ快速的にアップデートできるという特性がある。
【０１４９】
本公開の実施例が提供したメタデータ容器の解析装置に合わせて、ウェブサイトに埋め込まれたＨ５プレーヤがＭＰ４ファイルを解析する場合を例として説明する。図１０を参照して、図１０は、本公開の実施例が提供したメタデータ容器の解析方法のある選択可能なフローの模式図である。図１０に示すステップに合わせて説明する。
【０１５０】
ステップ１００１：バイナリビデオデータを取得する；
メディアファイルにおけるメタデータ容器の位置をオフセット及び容量で表すことができるため、読み取られたバイナリデータの長さがメタデータ容器の容量に合致するまで、メディアファイルからオフセットに対応する位置からバイナリデータを読み取ることで、メタデータ容器に対応するバイナリデータを読み取ることができる。
【０１５１】
ステップ１００２：容器集合を作成する；
相応する解析器を呼び出すために、ステップ１００２によって、取得されたバイナリビデオデータに対する標識を実現することができる。
【０１５２】
プレーヤは、設定のオフセット及び容量を携帯したデータ請求をサーバへ送信することで、ＭＰ４ファイル内で０バイトから開始し、且つ設定容量に合致するバイナリデータを取得する。ＭＰ４ファイルのパッケージ構造に順次にパッケージされたｆｙｔｐ容器、ｍｏｏｖ容器及びｍｄａｔ容器が含まれた場合を例として、設定容量は、既存のＭＰ４ファイルのｆｔｙｐ容器 及びｍｏｏｖ容器 容量に基づいて統計して得られる。設定容量が設定割合（例えば全部）のＭＰ４ファイル的ｆｔｙｐ容器とｍｏｏｖ容器との加算値をカバーできるようにすることで、サーバから完全なｍｏｏｖ容器 バイナリデータを１回だけで請求できることを確保する。図９を参照して、プレーヤ請求に設定されたオフセットが０バイトであり、設定された容量がＭａｔｈ.ｐｏｗ(２５,４)バイトのバイナリデータであり、サーバが返したバイナリデータからｍｏｏｖデータを取得する。１回の請求で完全なｍｏｏｖデータを取得できなかったら、改めてオフセット（図９の開始（ｓｔａｒｔ））及容量（開始〜サイズ（ｓｔａｒｔ~ｓｉｚｅ））を計算し、２回目の請求を行う。
【０１５３】
ステップ１００３：ストリーム（Ｓｔｒｅａｍ）を読み取る実例を作成する；
ステップ１００４：容器実例を作成する；
ステップ１００５：容器ヘッダを読み取る；
前記容器ヘッダを解析することで前記容器のタイプ及び長さ等情報を知ることができる。
【０１５４】
ステップ１００６：容器体（ｂｏｘ Ｂｏｄｙ）を読み取る；
ステップ１００７：容器に対応する解析器を呼び出す；
ここで、容器内のメタデータ容器の解析は、以下のように行うことができる。
【０１５５】
メタデータ容器バイナリデータ内の容器ヘッダの標準長に対応するバイナリデータを順次に解析して、前記メタデータ容器内のサブ容器の容器タイプ、及び前記サブ容器の容器データの長さを取得する。前記サブ容器の容器タイプに対応するタイプの解析器を呼び出して、未解析のデータ内の前記容器データの長さに対応するバイナリデータを順次に解析し、前記容器データが表すメディア情報を取得する。
【０１５６】
ここで、プレーヤは、メタデータ容器内に複数のサブ容器がネストされた場合について、毎度にバイナリデータを読み取る時のオフセットが既に識別されたサブ容器長の加算値であり、読み取るバイナリデータの長さが容器ヘッダの標準長に合致することで、現時点で処理するサブ容器のタイプ及び長さを解析することができる。
【０１５７】
例えば、初回の読み取りを行う時に、メタデータ容器のバイナリデータの０バイトからバイナリデータの読み取りを開始し、且つ読み取るバイナリデータの長さが容器ヘッダの標準長に合致することで、１番目のサブ容器のタイプ及び長さを解析することができる。２回目の読み取りを行う時に、初回に読み取られたサブ容器の長さをオフセットとして、バイナリデータの読み取りを開始し、且つ読み取るバイナリデータの長さが容器ヘッダの標準長に合致することで、２番目のサブ容器のタイプ及び長さを解析することができる。
【０１５８】
前記した方式によってバイナリデータを読み取ると、過度な読み取りによって戻すことはなく、読み取り不足によって二次読み取りを行うこともないことで、解析の効率及び正確率が保証される。
【０１５９】
ステップ１００８：各容器の間のネスト関係を確定する；
ある実施例では、メタデータ容器を解析する過程でサブ容器の間のネスト関係を記録する方式について説明する。メタデータ容器バイナリデータ内の容器ヘッダの標準長に対応するバイナリデータを順次に解析して前記メタデータ容器内のサブ容器の容器タイプを取得する時に、容器タイプがバイナリデータを直接にパッケージするとプリ標識されていれば、呼び出された前記解析器内へ解析されるサブ容器を記録する。記録されたサブ容器の実例をサブ容器属性に設置する。前記サブ容器属性は、前記サブ容器が所属する容器に含まれ、前記サブ容器と所属する容器との間のネスト関係を記述することに用いられる。
【０１６０】
例えば、図２において、解析されるサブ容器のタイプがｓｔｓｄ容器である時に、ｓｔｓｄ容器がバイナリデータを直接にパッケージするとプリ標識されたため、ｓｔｓｄ容器に対応する解析器の中でｓｔｓｄ容器を記録し、ｓｔｓｄ容器の実例をｓｔｂｌ容器サブ容器属性中に設置する。以降は同様であり、最後に、ｓｔｓｄ容器のサブ容器属性にｓｔｓｄ容器、ｓｔｔｓ容器、ｓｔｓｃ容器等の、ｓｔｂｌ容器にネストされている複数のサブ容器を記録した。
【０１６１】
ステップ１００９：ストリーム（Ｓｔｒｅａｍ）を読み取る位置を更新する。
【０１６２】
ステップ１００８及び１００９によって、サブ容器と所属する容器との間のネスト関係、及び前記サブ容器とパッケージしている容器とのネスト関係に対する解析及び標識を実現することができる。
【０１６３】
図１０に示す処理過程によって、取得されたバイナリビデオデータに対する解析を実現した。ここで、取得されたバイナリビデオデータ内の関係する容器にサブ容器と所属する容器との間のネスト関係、及び前記サブ容器とパッケージしている容器とのネスト関係が存在している。
【０１６４】
図１１は本公開の実施例が提供したメタデータ容器の解析方法のある選択可能な使用場面の模式図である。図１１を参照して、本公開の実施例が提供したメタデータ容器の解析装置は、ユーザ端末１０として実施されることができる。ある例示的な応用を支持することを実現するために、ユーザ端末１０（例示的にユーザ端末１０-１とユーザ端末１０-２を示している）は、ネットワーク２０を介してサーバ３０に接続されている。ネットワーク２０は、広域ネットワーク又はローカルネットワークであってもよいし、或いは両者の組合せであってもよい。無線リンクを用いてデータ伝送を実現する。
【０１６５】
ユーザ端末１０は、プレーヤがはめ込んだウェブサイトによってメディアファイル再生を行い、グラフィックインターフェース１１０（例示的にグラフィックインターフェース１１０-１とグラフィックインターフェース１１０-２を示している）によって再生する内容を表示する。ユーザ端末１０は、再生の過程で、メディアファイルにおけるメタデータ容器の位置に基づいて、前記サーバ３０から取得されたメディアファイルのバイナリデータからメタデータ容器に対応するバイナリデータを取得する。取得されたバイナリデータ内の前記メタデータ容器ヘッダの標準な長さに対応するバイナリデータを順次に解析して、前記メタデータ容器内のサブ容器の容器タイプ、及び前記サブ容器の容器データの長さを取得する。前記サブ容器の容器タイプに対応するタイプの解析器を呼び出して、未解析のデータ内の前記容器データの長さに対応するバイナリデータを順次に解析し、前記容器データが表すメディア情報を取得する。
【０１６６】
図１２は、本公開の実施例が提供した、ＭＰ４ファイルをＦＭＰ４ファイルへ変換してメディアソース拡張インターフェースによって再生する模式図である。図１３を参照して、プレーヤは、メディアファイルの実アドレス（図中ｈｔｔｐ://ｗｗｗ.ｔｏｕｔｉａｏ.ｃｏｍ/ａ/ｂ.ｍｐ４）に基づいて一定の時間長に満足するメディアデータを取得する。その後、取得されたメディアデータ構造に基づいてメディアファイルをセグメント化する、即ち、それをセグメントＭＰ４様式のメディアファイルへ変換する。その後、セグメントメディアファイルをＭＳＥのメディアソースオブジェクト（例えば、クラスファイルオブジェクト（Ｂｌｏｂ）の方式を用いて実現する）へ添加する。ＭＳＥは、メディアソースオブジェクトに対応する仮想ＵＲＬを作成し、ビデオ素子へ該仮想ＵＲＬを伝送することで、ビデオ素子が相応のメディアソースオブジェクトを取得させる。前記した抽出されたメディアデータ、及び前記メディアデータを記述するメタデータを、セグメントメディアファイルのパッケージ構造によってパッケージすることを実現して、独立にデコードすることに使用可能なセグメントメディアファイルを取得する。
【０１６７】
前記した実施例によって、メタデータ容器内の相応するデータに対する解析速度を効率的に向上させることができ、データ解析の速度が遅いことでユーザの使用体験が影響されることを回避し、同時に、メタデータ容器を解析することで取得した相応の情報は、前記メタデータに対応するメディア情報を変換することに使用することができる。
【０１６８】
当業者は、本公開の実施例が方法、システム、或コンピュータープログラム製品として提供され得ると理解される。そこで、本公開の実施例は、ハードウェア実施例、ソフトウェア実施例、或いはソフトウェアとハードウェア形態を組み合わせた実施例の形式を採用し得る。そして、本公開の実施例は、コンピューター使用可能なプログラムコードを含めた一つ又は複数のコンピューター使用可能な記憶媒体（磁気ディスクメモリ及び光学メモリ等を含め）で実施されるコンピュータープログラム製品の形式を採用し得る。
【０１６９】
本公開の実施例は、本公開の実施例による方法、設備（システム）、及びコンピュータープログラム製品のフロー図、及び/又はブロック図を参照して記述された。コンピュータープログラム操作によって、フロー図及び/又はブロック図内の各フロー及び/又はブロック、及びフロー図及び/又はブロック図内のフロー及び/又はブロックの組み合わせを実現することができると理解すべきである。これらのコンピュータープログラム操作を汎用コンピューター、専用コンピューター、嵌め込み型処理機又は他のプログラマブルデータ処理設備のプロセッサへ提供して機器を生成することで、コンピューター又は他のプログラマブルデータ処理設備のプロセッサで実行される操作によって、フロー図の一つ又は複数のフロー及び/又はブロック図の一つ又は複数のブロックで指定した機能を実現するための装置を生じることができる。
【０１７０】
これらのコンピュータープログラム操作は、コンピューター又は他のプログラマブルデータ処理設備をガイドして特定の方式で作動させることができるコンピューター読み取り可能なメモリに格納されることにより、該コンピューター読み取り可能なメモリ内に格納された操作が操作装置を含めた製造品を生じて、該操作装置により、フロー図の一つ又は複数のフロー及び/又はブロック図の一つ又は複数のブロックで指定された機能を実現してもよい。
【０１７１】
これらのコンピュータープログラム操作は、コンピューター又は他のプログラマブルデータ処理設備に搭載されることで、コンピューター又は他のプログラマブル設備で一連の操作ステップを実行してコンピューターで実現される処理を生じて、コンピューター又は他のプログラマブル設備で実行された操作が、フロー図の一つ又は複数のフロー及び/又はブロック図の一つ又は複数のブロックで指定された機能を実現するためのステップを提供しても良い。
【０１７２】
以上のように、本公開の好ましい実施例に過ぎず、本公開の技術的範囲を限定するためではなく、本公開の精神と原則内でなされる何の補正、同等入れ換え、及び改善等は、いずれも本公開の技術的範囲に含まれる。
【符号の説明】
【０１７３】
20  ネットワーク
30  サーバ
500  メタデータ容器の解析装置
501  プロセッサ
502  メモリ
503  ユーザインターフェース
504  ネットワークインターフェース
600  メタデータ容器の解析装置
601  データ取得ブロック
602  データ解析ブロック
5021  オペレーティングシステム
5022  アプリケーション
【図１】
2021508977.tif 000003
【図２】
2021508977.tif 000004
【図３】
2021508977.tif 000005
【図４】
2021508977.tif 000006
【図５】
2021508977.tif 000007
【図６】
2021508977.tif 000008
【図７】
2021508977.tif 000009
【図８】
2021508977.tif 000010
【図９】
2021508977.tif 000011
【図１０】
2021508977.tif 000012
【図１１】
2021508977.tif 000013
【図１２】
2021508977.tif 000014
【国際調査報告】
2021508977.tif 000015
2021508977.tif 000016
2021508977.tif 000017
2021508977.tif 000018