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