JP2021510991A5 - - Google Patents

Download PDF

Info

Publication number
JP2021510991A5
JP2021510991A5 JP2020548641A JP2020548641A JP2021510991A5 JP 2021510991 A5 JP2021510991 A5 JP 2021510991A5 JP 2020548641 A JP2020548641 A JP 2020548641A JP 2020548641 A JP2020548641 A JP 2020548641A JP 2021510991 A5 JP2021510991 A5 JP 2021510991A5
Authority
JP
Japan
Prior art keywords
media
media file
container
file
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020548641A
Other languages
English (en)
Other versions
JP2021510991A (ja
JP6961835B2 (ja
Filing date
Publication date
Priority claimed from CN201810532849.1A external-priority patent/CN110545469B/zh
Application filed filed Critical
Publication of JP2021510991A publication Critical patent/JP2021510991A/ja
Publication of JP2021510991A5 publication Critical patent/JP2021510991A5/ja
Application granted granted Critical
Publication of JP6961835B2 publication Critical patent/JP6961835B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

非ストリームメディアファイルのウェブページ再生方法、装置及び記憶媒体
関連出願の取り込み
本出願は、2018年05月29日付で出願された中国専利出願(出願番号201810532849.1)に基づくものであり、該中国専利出願の優先権を主張し、その内容をここに参照として取り込んでいる。
本開示は、メディア再生技術に関し、具体的に非ストリームメディアファイルのウェブページ再生方法、装置及び記憶媒体に関する。
ウェブページは、メディアファイルを再生するとき、現在の再生ポイントから終了時間までの全てのメディアデータをロードするまで、現在の再生ポイントを基にして後続のメディアデータをプリロードする。
再生ポイントがジャンプされるとき、多様なウェブページのローディングストラテジー(loading strategy)に応じて、一部のウェブページが新たな再生ポイントに基づいて改めてプリロードするが、一部のウェブページが既に取得したメディアデータと重複する可能性もある。
実際に、ユーザはメディアファイルを再生中に再生進度のジャンプを行うことが多いため、従来技術のどのローディングストラテジーを採用しても、プリロードされたメディアデータが流量や帯域幅を無駄に消耗してしまうため、ウェブページにおける他のサービスに遅延が生じることになる。
以上を鑑みると、本開示の実施例は、流量や帯域幅を無駄に消耗することを回避でき、ウェブページにおける他のサービスのリアルタイム性能を確保できる非ストリームメディアファイルのウェブページ再生方法、装置及び記憶媒体を提供する。
本開示の実施例の技術は以下のように実現される:
第1の側面において、本開示の実施例は非ストリームメディアファイルのウェブページ再生方法を提供する。該方法は、
ウェブページで再生しているメディアファイルの二つのキーフレームに基づいて、非ストリームメディアフォーマットの前記メディアファイル内のメディアデータの一部を取得することと、
前記二つのキーフレームの間のメディアデータに基づいて、セグメント化メディアファイルを構築することと、
構築されたセグメント化メディアファイルを、メディアリソース拡張インタフェースのメディアソースオブジェクトに添加することと、
前記ウェブページのメディア要素に、前記メディアソースオブジェクトをデータソースとして再生させるための仮想アドレスを伝達することと、
を含む。
第2の側面において、本開示の実施例は非ストリームメディアファイルのウェブページ再生装置を提供する。該装置は、
ウェブページで再生しているメディアファイルの二つのキーフレームに基づいて、非ストリームメディアフォーマットの前記メディアファイル内のメディアデータの一部を取得するように配置されている取得ユニットと、
前記二つのキーフレームの間のメディアデータに基づいて、セグメント化メディアファイルを構築するように配置されている構築ユニットと、
構築されたセグメント化メディアファイルを、メディアリソース拡張インタフェースのメディアソースオブジェクトに添加するように配置されている添加ユニットと、
前記ウェブページのメディア要素に、前記メディアソースオブジェクトをデータソースとして再生させるための仮想アドレスを伝達するように配置されている伝送ユニットと、
を含む。
第3の側面において、本開示の実施例は非ストリームメディアファイルのウェブページ再生装置を提供する。該装置は、
実行可能な指令を記憶するように配置されているメモリと、
前記実行可能な指令を実行するとき、本開示の実施例の非ストリームメディアファイルのウェブページ再生方法を実現するように配置されているプロセッサと、
を含む。ここで、実行可能な指令は、インストールパッケージ、プログラム、コード、プラグイン、ライブラリ(動的/静的ライブラリ)であってもよい。
第4の側面において、本開示の実施例は記憶媒体を提供する。該記憶媒体は、実行されるときに本開示の実施例に係る非ストリームメディアファイルのウェブページ再生方法を実現するための実行可能な指令を記憶する。
本開示の上記実施例を適用することで以下の効果が得られる。
1)、プレーヤは、メディアファイル内の二つのキーフレームの間のメディアデータの一部を取得して、セグメント化メディアファイルを構築して再生することで、メディアファイルを再生する期間にメディアデータのロードに対する制御を実現し、流量や帯域幅を無駄に消耗することを回避する。
2)、非ストリームメディアフォーマットのメディアファイル内のメディアデータを、セグメント化メディアファイルに変換し、ウェブページのメディアソース拡張インタフェースを通じて、ウェブページのメディア要素へ発送して復号し再生させることで、非ストリームメディアフォーマットのメディアファイルをウェブページによって再生することを実現し、非ストリームメディアカプセル化フォーマットのファイルを完全にダウンロードしてなければ独立に再生できないという制限を克服する。
3)、カプセル化して得たセグメント化メディアファイルは、メディアファイルの全てのメディアデータではなく、取得したメディアファイルの一部のメディアデータに基づくものであるため、変換遅延が小さく、予め記憶する必要がなく、元のメディアファイル以外に、添加的な記憶空間を占用しないため、記憶空間への占用を顕著に低減する。
4)、ウェブページにおけるメディア要素は、メディアファイルの実アドレスに基づいてメディアデータを取得してから再生するものではなく、メディアソース拡張インタフェースを介してセグメント化メディアファイルを取得して復号再生するため、メディアファイルの実アドレスの保護を実現する。
図1は、本開示の実施例に係るコンテナの選択可能な構造の一つの模式図である。 図2は、本開示の実施例に係るMP4ファイルの選択可能なカプセル化構造の一つの模式図である。 図3は、本開示の実施例に係るメディアファイルにおけるメディアデータコンテナにメディアデータを記憶する構造の模式図である。 図4は、本開示の実施例に係るセグメント化MP4ファイルの選択可能なカプセル化構造の一つの模式図である。 図5は、本開示の実施例に係るメディア再生のローディング制御システムのアーキテクチャの模式図である。 図6は、本開示の実施例に係る非ストリームメディアファイルのウェブページ再生装置の組成構造の模式図一である。 図7は、本開示の実施例に係る非ストリームメディアファイルのウェブページ再生方法のフローチャートの模式図一である。 図8は、本開示の実施例に係るセグメント化メディアファイルをカプセル化するフローチャートの模式図である。 図9は、本開示の実施例に係るプレーヤがウェブページのメディアソース拡張インタフェースによってセグメント化メディアファイルを再生する模式図である。 図10は、本開示の実施例に係るMP4ファイルをFMP4ファイルに変換してメディアソース拡張インタフェースによって再生する模式図である。 図11は、本開示の実施例に係る非ストリームメディアファイルのウェブページ再生方法のフローチャートの模式図二である。 図12は、本開示の実施例に係る非ストリームメディアファイルのウェブページ再生方法のフローチャートの模式図三である。 図13は、本開示の実施例に係る非ストリームメディアファイルのウェブページ再生装置の組成構造の模式図二である。
以下、図面及び実施例を参照して、本開示をさらに詳しく説明する。ここで提供する実施例は、本開示の解釈のために過ぎず、本開示を限定するものではないと理解される。また、以下に提供する実施例は、本開示を実施するための一部の実施例であり、本開示の全ての実施例を提供するものではない。衝突が生じない場合、本開示の実施例に記載される形態は、任意に組み合わせた形態で実施することができる。
なお、本開示の実施例において、用語「備える」、「含める」又はその何の他の変化物は、非排他的な含有を意図することで、一連の要素を備えた方法又は装置が、明確に記載された要素だけではなく、明確に挙げられていない他の要素をも備え、或いは、方法又は装置を実施するために固有の要素をも備える。更なる制限がない限り、「…を備える」という語句で限定されている要素は、該要素を備える方法又は装置において他の関連要素(例えば、方法のステップ又は装置のユニット、例えばユニットが一部の電気回路、一部のプロセッサ、一部のプログラム又はソフトウェア等であってもよい)も存在することを除外していない。
例えば、本開示の実施例が提供する非ストリームメディアファイルのウェブページ再生方法は、一連のステップを含んでいるが、本開示の実施例が提供する非ストリームメディアファイルのウェブページ再生方法は、記載されたステップに限らず、同様に、本開示の実施例が提供する非ストリームメディアファイルのウェブページ再生装置は、一連のユニットを備えているが、本開示の実施例が提供するウェブページに基づくメディアファイルの再生装置は、明確に記載されたユニットを備えることに限らず、関連情報を取得するために、或いは、情報に基づいて処理を行うときに必要となるユニットを備えてもよい。
本明細書で使用される技術や科学用語は、特に断りがない限り、本開示の技術分野に属する当業者に通常理解されるものと同義である。本明細書において使用される用語は、具体的な実施例を説明するためのものであり、本開示を限定する主旨ではない。
本開示の実施例をさらに詳しく説明する前に、本開示の実施例に係る名詞及び用語を説明する。本開示の実施例に係る名詞及び用語は、以下のような解釈を適用する。
1)メディアファイルは、コンテナボックスとも呼ぶ)という形式で符号化されたメディアデータ(例えば、オーディオデータ及びビデオデータの少なくとも一種)を記憶するファイルである。メディアファイルには、メディアデータを記述するメタデータをさらに含む。メディアデータには、メディアデータが正確的に復号されることを確保するメディア情報が担持されている。
例えば、MPEG(Moving Picture Experts Group)−4というカプセル化フォーマットでマルチメディアデータをカプセル化することで形成されるメディアファイルは、MP4ファイルという。典型的には、MP4ファイルには、AVC(Advanced Video Coding、即ちH.264)又はMPEG-4(Part2)標準に符合化されたビデオデータ及びAAC(Advanced Audio Coding)標準に符合化されたオーディオデータが格納されており、もちろんビデオとオーディオの他の符号化方式を除外しない。
2)コンテナボックス)は、とも呼ばれ、唯一の類別識別子と長さで定義される、オブジェクト向けの成分(component)である。図1は、本開示の実施例に係るコンテナの選択可能な構造の模式図である。図1を参照して、コンテナには、コンテナヘッダ(ボックスヘッダ)及びコンテナデータ(ボックスData)が含まれ、各種情報を表現するためのバイナリデータが充填されている。
コンテナヘッダは、コンテナが占用する記憶空間の大きさ(本明細書で「容量」又は「長さ」とも称する)を示す容量(size)、及びコンテナの種類を示すタイプ(type)を含む。図2は、本開示の実施例に係るMP4ファイルの選択可能なカプセル化構造の模式図である。図2を参照して、MP4ファイルには、ファイルタイプコンテナ(ftyp box)、メタデータコンテナ(moov box)及びメディアデータコンテナ(mdat box)という三つの基本的なコンテナタイプを含む。
コンテナデータ部は、具体的なデータを記憶することができ、このときのコンテナが「データコンテナ」と呼ばれる。コンテナデータ部は別の種類のコンテナをさらにカプセル化することができ、このときのコンテナが「コンテナコンテナ」と呼んでもよい。
3)トラック(Track)は、ストリーム(Stream)とも言う。メディアデータコンテナにおいて時間順にソートする相関のサンプル(Sample)である。メディアデータにおいては、トラックが一つのビデオフレーム系列又は一つのオーディオフレーム系列を表し、ビデオフレーム系列に同期した字幕トラックを含んでもよい。同一のトラックにおける一組の連続するサンプルはチャンク(Chunk)と呼ばれる。
4)ファイルタイプのコンテナは、メディアファイルにおいてファイルの容量(即ち、占用するバイトの長さ)やタイプを格納するためのコンテナである。図2に示すように、ファイルタイプのコンテナに格納されるバイナリデータが、コンテナの種類及び容量を標準バイト長さに従って記述する。
5)メタデータコンテナは、メディアファイルにおいてメタデータ(即ち、メディアデータコンテナに格納されるマルチメディアデータを記述するデータ)を記憶するためのコンテナである。MP4ファイルのメタデータコンテナに格納されるバイナリデータが表現する情報をメディア情報と呼ぶ。
図2に示すように、メタデータコンテナのヘッダは、コンテナタイプが「moov box」であることをバイナリデータで表す。コンテナデータ部は、MP4ファイルの全体情報を記憶するためのmvhdコンテナをカプセル化しており、時間長、作成時刻、修正時間などを含み、MP4ファイルから独立して、MP4ファイルの再生に関するものである。
メディアファイルのメディアデータコンテナに、複数のトラックに対応するサブコンテナ、例えばオーディオトラックコンテナ(オーディオトラックbox)及び映像トラックコンテナ(ビデオトラックbox)に対応するサブコンテナを含んでもよい。オーディオトラックコンテナ及び映像トラックコンテナのサブコンテナのそれぞれには、対応するトラックのメディアデータの参照及び記述を含んでいる。必要なサブコンテナには、トラックの特性及び全体情報(例えば時間、高さ、幅)を記述するためのコンテナ(tkhd boxと記す)と、トラックのメディア情報(例えばメディアタイプ及びサンプルに関する情報)を記録するコンテナ(mdia boxと記す)と、を含む。
mdia boxにカプセル化されるサブコンテナについては、トラックの関連属性及び内容を記録するコンテナ(mdhd boxと記す)と、メディアを再生する過程情報を記録するコンテナ(hdlr boxと記す)と、トラックにおけるメディアデータのメディア情報を記述するコンテナ(minf boxと記す)と、を含むことができる。minf boxには、どのようにメディア情報を位置決めるかを解釈するためのサブコンテナ(dinf boxと記す)、及びトラックにおいてサンプリングした全ての時間情報(復号時間/表示時間)、位置情報及び復号/符号などの情報を記録するためのサブコンテナ(stbl boxと記す)がさらにカプセル化されている。
図3は、本開示の実施例に係るメディアファイルにおけるメディアデータコンテナがメディアデータを記憶する構造模式図である。図3に示すように、stbl boxのバイナリデータから識別されたメディア情報を用いて、サンプルの時間、タイプ、容量及びメディアデータコンテナにおける位置を解釈可能である。次に、stbl boxにおける各サブコンテナについて説明する。
stsd boxは、1つのサンプルディスクリプション(sample description)テーブルを含む。各メディアファイルには、異なる符号化方式及び記憶データのファイル数に応じて、一つ又は複数のディスクリプションテーブルが含まれることができる。ディスクリプションテーブルを通じて、サンプル毎のディスクリプション情報を見当たることができる。ディスクリプション情報は、サンプルを正しく復号されることを保証できる。異なるメディアタイプに対して相違するディスクリプション情報を格納する。例えば、映像メディアについてのディスクリプション情報が画像の構造である。
stts boxは、サンプルの時間長に関する情報を格納するものであり、テーブルを提供することで時間(復号時間)とサンプルの番号とをマッピングする。sttx boxにより、メディアファイルおける任意の時間のサンプルを位置決めすることができる。stts boxは、さらに他のテーブルを用いてサンプルの容量とポインタとをマッピングし、テーブルにおけるエントリごとに同じ時間オフセット内で連続するサンプルの番号、およびサンプリングのオフセットを与え、これらのオフセットを増加させて、完全な時間−サンプルのマッピングテーブルを作成することができる。数式は次のようになる。
DT(n+1)=DT(n)+STTS(n) (1)
ここで、STTS(n)は、圧縮されていないSTTSの第nの項の情報であり、DTは第nのサンプルの表示時間である。サンプルの配列が時間順にソートされているため、オフセット量は常に非負である。DTは、一般的に0から開始する。DTの計算式は次の通りである。
DT(i)=SUM(for j=0 to i-1 of delta(j)) (2)
全てのオフセットの和はトラックにおけるメディアデータの時間長である。
stss boxは、メディアファイルにおけるキーフレームの番号を記録する。
stsc boxは、サンプルとサンプルを格納するチャンクとのマッピング関係を記録するものであり、テーブルによってサンプルの番号とチャンクの番号との関係をマッピングし、テーブルを調べることで特定のサンプルを含むチャンクを見つけることができる。
stco boxは、トラック内における各チャンクの位置を定義するものであり、位置が、メディアデータコンテナの先頭バイトのオフセットと、先頭バイトに対する長さ(即ち容量)で表される。
stsz boxは、メディアファイル内の各サンプルの容量(即ちサイズ)を記録する。
6)メディアデータコンテナは、メディアファイルにおいてマルチメディアデータを記憶するためのコンテナである。例えば、MP4ファイルにおけるメディアデータコンテナは、図3に示すように、サンプルがメディアデータコンテナにおいて記憶する単位であって、メディアファイルのチャンクに記憶され、チャンクとサンプルの長さは互いに異なってもよい。
7)セグメント化メディアファイルは、メディアファイルを分割して形成され、それぞれ独立して復号できるサブファイルである。
MP4ファイルを例とすれば、MP4ファイルのメディアデータがキーフレームによって分割され、分割されたメディアデータと対応するメタデータとをセグメント化MP4(FMP4,FragmentedMP4)ファイルにカプセル化する。各FMP4ファイルにおけるメタデータは、メディアデータが正確的に復号されることを保証できる。
図4は、本開示の実施例に係るセグメント化MP4(FMP4)ファイルの選択可能なカプセル化構造の模式図である。例えば、図2に示すMP4ファイルを複数のFMP4ファイルに変換するとき、図4に示すように、一つのMP4ファイルは、複数のFMP4ファイルに変換でき、各FMP4ファイルには、moovコンテナ、moofコンテナ及びmdatコンテナという三つの基本的なコンテナが含まれる。
moovコンテナは、MP4ファイルレベルのメタデータを含み、FMP4ファイルの由来となるMP4ファイルにおける全てのメディアデータ、例えばMP4ファイルの時間長、作成時刻、修正時間などを記述するためのものである。
moofコンテナは、セグメントレベルのメタデータを記憶、FMP4ファイルにカプセル化されたメディアデータを記述し、FMP4におけるメディアデータの復号が可能であることを保証するためのものである。
1つのmoofコンテナと1つのmdatコンテナは、セグメント化MP4ファイルの1つのセグメントを構成し、1つのセグメント化MP4ファイルに一つ又は複数のこのようなセグメントが含まれてもよい。各セグメントの各々にカプセル化されたメタデータは、当該セグメント内にカプセル化されたメディアデータが独立して復号することができることを保証する。
8)メディアソース拡張(MSE、Media Source Extensions)インタフェースは、ウェブページで実現されプレーヤ向けのインタフェースであって、ウェブページにおけるローディング期間にウェブブラウザのインタープリタによって解析されて、フロントエンドのプログラミング言語(例えばJavaScript)を実行することで実現され、ハイパーテキストマークアップ言語(HTML)メディア要素(Media Element)を呼び出すというメディアストリーミングを再生する機能をプレーヤに提供する。例としては、ビデオ要素<video>、及びオーディオ要素<audio>でビデオ/オーディオを再生する機能を実現する。
9)ストリームメディアフォーマットは、メディアデータをストリームメディアのメディアファイルにカプセル化する。メディアファイルを完全にダウンロードする必要がなく、別途にトランスコードする必要がなく、復号されて再生されることができる、すなわち、元のままダウンロードしながら再生することをサポートする技術である。典型的なストリームフォーマットのファイルは、HTTPライブストリーム(HLS、HTTP Live Streaming)技術に基づくTSメディアファイルセグメント、FLV(Flash Video)ファイルなどを含める。
10)非ストリームメディアフォーマットは、メディアデータをメディアファイルにカプセル化し、且つメディアファイルを完全にダウンロードしてから復号されて再生されるカプセル化技術である。典型的には、非ストリームフォーマットのファイルは、MP4ファイル、WMV(Windows Media Video)ファイル、MKVファイルフォーマット(MKV,MKV file format)、ASF(Advanced Streaming Format)ファイルなどが挙げられる。
なお、MP4ファイルは元のままでストリームメディア形式の再生をサポートしないが、オンライントランスコードした後に、プレーヤによりトランスコードされたメディアストリームに、又は部分的にダウンロードしたMP4ファイルの欠落部分に無効なバイナリデータを充填(例えば、ftypコンテナ及びmoovコンテナが完全にダウンロードされた場合、mdatコンテナの欠落部分に無効なバイナリデータを代わりに充填)することで、ダウンロードしながら再生する技術効果も実現できる。本明細書には、このような元のままでストリームメディアの再生をサポートしないファイルのカプセル化フォーマットを、全て非ストリームメディアフォーマットという。
まず、本開示の実施例のメディア再生を実現するロード制御装置について説明する。本開示の実施例が提供するメディア再生のロード制御装置は、スマートフォン、タブレット、ノートパソコンなどの各種のタイプのユーザ端末として実施されることができる。以下、装置をユーザ端末として実施するときにユーザ端末を含めた例示的な応用について説明する。
図5を参照して、図5は、本開示の実施例が提供するメディア再生のロード制御システム100のある選択可能なアーキテクチャの模式図である。例示的な応用のサポートを実現するために、ユーザ端末10(例示的に、ユーザ端末10−1とユーザ端末10−2とを示した)は、ネットワーク20を介してサーバ30に接続されている。ネットワーク20は、広域ネットワークまたはローカルネットワークであってもよいし、または、両者の組み合わせであってもよく、無線リンクを用いてデータ伝送を実現する。
ユーザ端末10は、プレーヤが嵌め込まれたウェブページを通じてメディアファイルを再生し、再生する内容をグラフィカルインタフェース110(グラフィカルインタフェース110−1及びグラフィカルインタフェース110−2を例示的に示す)によって表示する。メディアファイルの再生中、ユーザ端末10は、非ストリームメディアフォーマットのメディアファイルの二つのキーフレームに基づいて、前記メディアファイル内の一部のメディアデータをサーバ30から取得し、二つのキーフレームの間のメディアデータに基づいてセグメント化メディアファイルを構築する。構成されたセグメント化メディアファイルをメディアリソース拡張インタフェース内のメディアソースオブジェクトに添加する。前記ウェブページのメディア要素に、前記メディア要素に前記メディアソースオブジェクトをデータソースとして再生させるための仮想アドレスを伝達する。
次に、本開示の実施例に係る非ストリームメディアファイルのウェブページ再生装置について説明する。非ストリームメディアファイルのウェブページ再生装置は、ハードウェア、ソフトウェア又は両者を結合する方式として提供することができる。
次に、本開示の実施例の非ストリームメディアファイルのウェブページ再生装置の実現について説明し、非ストリームメディアファイルのウェブページ再生装置は、ハードウェア、ソフトウェア又はソフトウェアとハードウェアを組み合わせた形態として提供できる。
以下、非ストリームメディアファイルのウェブページ再生装置のソフトウェアとハードウェアの組み合わせの実施を説明し、図6を参照し、図6は、本開示の実施例による非ストリームメディアファイルのウェブページ再生装置の選択可能な組成構造模式図である。以下、本開示の実施例の非ストリームメディアファイルのウェブページ再生装置のハードウェア構造を詳細に説明する。なお、図6には、非ストリームメディアファイルのウェブページ再生装置のすべての構造ではなく、例示的な構造だけが示されており、必要に応じて図6に示された構造の一部又は全部を実施できる。
本開示の実施例による非ストリームメディアファイルのウェブページ再生装置600は、少なくとも1つのプロセッサ601、メモリ602、ユーザインターフェース603、及び少なくとも1つのネットワークインターフェース604を備える。非ストリームメディアファイルのウェブページ再生装置600の各アセンブリは、バスシステム605を介して結合される。なお、バスシステム605は、これらのアセンブリの間の通信可能な接続に用いられる。バスシステム605は、データバス以外、電源バス、制御バス及び状態信号バスを含む。しかし、明確に説明するために、図6には、様々なバスは、バスシステム605として示されている。
ユーザインターフェース603は、モニター、キーボード、マウス、トラックボール、クリックホイール、キー、ボタン、タッチパネルやタッチスクリーンなどを含み得る。
なお、メモリ602は、揮発性メモリ又は非揮発性メモリであってもよく、揮発性メモリ及び非揮発性メモリの両方を含んでもよい。
本開示の実施例におけるメモリ602は、非ストリームメディアファイルのウェブページ再生装置600の操作をサポートするように、さまざまなタイプのデータを記憶することに用いられる。これらデータの例には、非ストリームメディアファイルのウェブページ再生装置600に操作される任意の実行可能な指令、たとえば実行可能な指令6021が含まれ、本開示の実施例のウ非ストリームメディアファイルのウェブページ再生方法を実現するプログラムは、実行可能な指令6021に含まれ得る。
本開示の実施例で開示されていた非ストリームメディアファイルのウェブページ再生方法は、プロセッサ601に適用され、又はプロセッサ601によって実現されることができる。プロセッサ601は、信号処理能力を有する集積回路チップであってもよい。実現する過程において、非ストリームメディアファイルのウェブページ再生方法の各ステップは、プロセッサ601におけるハードウェアの集積ロジック回路又はソフトウェアの形態の指令によって実施できる。上記プロセッサ601は、汎用プロセッサ、デジタル信号プロセッサ(DSP、Digital Signal Processor)、又はそのほかのプログラマブルロジックデバイス、離散ゲート又はトランジスタロジックデバイス、離散ハードウェアユニットなどであってもよい。プロセッサ601は、本開示の実施例における開示された各方法、ステップ及びロジックブロック図を実現又は実行できる。汎用プロセッサは、マイクロプロセッサ又は任意の一般的なプロセッサなどであってもよい。本開示の実施例において開示された方法のステップを組み合わせ、ハードウェアデコードプロセッサで実行して完成し、或いはデコードプロセッサにおけるハードウェア及びソフトウェアモジュールの組み合わせによって実行して完成するように直接に現れることができる。ソフトウェアモジュールは、記憶媒体に位置することができ、該記憶媒体は、メモリ602に位置し、プロセッサ601は、メモリ602における情報を読み取り、そのハードウェアと組み合わせて本開示の実施例による非ストリームメディアファイルのウェブページ再生方法のステップを完成する。
以下、非ストリームメディアファイルのウェブページ再生装置の純粋なハードウェアの実施を説明する。本開示の実施例の非ストリームメディアファイルのウェブページ再生装置は、1つ又は複数の特定用途向け集積回路(ASIC、Application Specific Integrated Circuit)、デジタル信号処理(DSP、Digital Signal Processing)、プログラマブルロジックデバイス(PLD、Programmable Logic Device)、コンプレックスプログラマブルロジックデバイス(CPLD、Complex Programmable Logic Device)、フィールドプログラマブルゲートアレイ(FPGA、Field−Programmable Gate Array)又はそのほかの電子素子によって実現されることができ、本開示の実施例による非ストリームメディアファイルのウェブページ再生方法を実行することに用いられる。
以下、非ストリームメディアファイルのウェブページ再生装置の純粋なソフトウェアの実施を説明する。本開示の実施例の非ストリームメディアファイルのウェブページ再生装置の実現は、アプリケーション又はプラグインであってもよく、又は両方を組み合わせた形態で実現されてもよい。
一例として、アプリケーションは、メディアファイルの再生に用いられるクライアントであってもよいし、メディアファイル再生機能をオプション機能としたクライアントであってもよく、対応するプラグインをインストールすることにより実現される。
一例として、プラグインは、アプリケーションの機能アップグレードインストールパッケージであり、特定アプリケーションにメディアファイル再生機能を追加するように実現されてもよいし、メディア再生のウェブページにおける要素であってよく、フロントエンド言語により実現され、ウェブページによって直接解釈して実行されることによりウェブページにおいてメディアファイル再生機能を実現する。
次に、プレーヤがウェブページに埋め込まれ、ウェブページのハイパーテキストマークアップ言語(HTML、Hyper Text Markup Language)5メディア要素を使用してメディアファイルを再生する場合を例として、本開示の実施例による非ストリームメディアファイルのウェブページ再生方法を説明する。本開示の実施例におけるウェブページは、ブラウザのウェブページであってもよいし、ブラウザカーネルが埋め込まれたアプリケーション(APP、Application)のウェブページであってもよい。ウェブページは、プレーヤのJS(JavaScript)コードを解析して実行することによって、プレーヤのインスタンスを実現する。
図7には、本開示の実施例による非ストリームメディアファイルのウェブページ再生方法の選択可能な模式的なフローチャートが示されており、図7を参照して、本開示の実施例による非ストリームメディアファイルのウェブページ再生方法は、ステップ201〜ステップ204を含み、以下、それぞれ説明する。
ステップ201:ウェブページで再生しているメディアファイルの二つのキーフレームに基づいて、メディアファイルの一部のメディアデータを取得する。
ここで、ウェブページで再生しているメディアファイルが非ストリームメディアフォーマットを採用し、例えば、MP4/MKV/WMV/ASFなどのカプセル化フォーマットが挙げられる。本開示の実施例によるメディアデータは、メディアファイルのメディアデータコンテナ内のビデオフレーム及びオーディオフレームの少なくとも一つを意味する。
ある実施例において、プレーヤが以下のようにメディアファイルにおける一部のメディアデータを取得することができる。
プレーヤは、メディアファイルを再生する過程におけるリアルタイムの再生ポイントに基づいて、メディアファイル内の二つのキーフレームを確定し、メディアファイル内の二つのキーフレームの間のメディアデータを取得するようにネットワーク要求をサーバに発信する。
再生ポイントに基づいて二つのキーフレームを確定することについて説明する。プレーヤは、メディアファイルを再生する過程中、キーフレーム間のデータをローディングすることによりメディアファイルの再生を実現する。つまり、プレーヤが二つのキーフレームの間のメディアデータを再生ローディングユニットとする。再生ポイントについては、メディアファイルを連続して再生する(つまり、ユーザが関与しない状況で自然に再生する)ことで到着する再生時刻、例えば30分目から40分目まで再生するときの再生ポイントであってもよいし、ジャンプすることで(つまりユーザがカーソルでプログレスバーをクリックしてページジャンプを実現する)メディアファイルの再生時刻に到着してもよく、例えば元の再生ポイントが再生進度の20%に位置して、ジャンプした後の再生ポイントが再生進度の30%に位置するようになる。
実際の応用において、再生ポイントによって確定された二つのキーフレームは、メディアファイルにおける隣接する二つのキーフレームであってもよいし、二つのキーフレームの間に他の一つ又は複数のキーフレームが存在してもよい。二つのキーフレームの間のキーフレームの数は、ウェブブラウザのキャッシュ性能(例えば使用可能な容量)、ネットワーク性能(ネットワーク帯域幅)によって決められることができ、実際の必要に応じて設定することもできる。
ある実施例において、再生ポイントがメディアファイルを連続して再生することで到着する再生時刻である場合に、再生ポイントに対応するビデオフレームが通常フレームまたはキーフレームである状況に応じて、二つのキーフレーム(第1キーフレーム、及び復号時間が第1キーフレームよりも後にある第2キーフレームとする)を確定する方法を説明する。
場合1)、再生点に対応するビデオフレームが一般的なフレームである場合、プレーヤが2つのキーフレームの間のメディアデータを基本的な再生ロード単位とするため、再生点後且つ再生ポイント後の最初のキーフレーム(デコード時間が再生ポイントよりも遅いキーフレームのうち、再生ポイントに最も近いキーフレーム)の前のメディアデータがロード済みのメディアデータであり、当該ロード済みのメディアデータを繰り返して取得することを回避するために、メディアファイルにおいてデコード時間が再生ポイント以降の最初のキーフレームを所定期間帯の2つのキーフレームのうちの第1キーフレームする。メディアファイルにおいて復号時間が第1キーフレームよりも遅れるキーフレームを、二つのキーフレームのうちの第2キーフレームとする。
場合2)、再生ポイントに対応するビデオフレームはキーフレームである。再生ポイントに対応するキーフレーム、即ち再生ポイントの時間に合わせたキーフレームを、二つのキーフレームのうちの第1キーフレームとする。メディアファイルにおける復号時間が第1キーフレームよりも遅れるキーフレームを、二つのキーフレームのうちの第2キーフレームとする。
上記の場合1)において、再生ポイントを跨ぐキーフレームをメディアデータの端点とすることで、デコードデータ(即ちキーフレーム)の不足によるフレームスキップが発生しないように、再生ポイントに対応するビデオフレームにはデコードのための十分な情報を有することを保証することができる。
他の実施例において、再生ポイントがジャンプすることで到着する再生時刻である場合、再生ポイントに対応するビデオフレームが通常フレームまたはキーフレームである場合に応じて、二つのキーフレーム(第1キーフレーム、及び復号時間が第1キーフレームよりも遅れる第2キーフレームとする)を確定する方法を説明する。
場合1)再生ポイントに対応するビデオフレームが一般的なフレームである場合、再生ポイントがジャンプにより到達するため、再生ポイント前の最初のキーフレームと再生ポイントとの間のメディアデータがロードされておらず、メディアファイルにおいてデコード時間が再生ポイントよりも前の最初のキーフレームを、第1キーフレームとする。つまり、メディアデータの時間(即ち、メディア情報が示した番号とフレームのデコード時間との対応関係)の中で検索された、復号時間が所定期間帯の開始時間よりも早く且つ開始時間に最も近いキーフレームとする。メディアファイルにおいて復号時間が第1キーフレームよりも遅れるキーフレームを、二つのキーフレームのうちの第2キーフレームとする。再生ポイントから再生ポイントの前までのキーフレームの間のメディアデータを追加的に要求することにより、いずれの再生ポイントにジャンプしても正常にデコードできることを確保し、再生ポイントが一般的なフレームに対応する場合に復号できないことでフレームスキップが発生する状況を回避する。
場合2)再生点に対応するビデオフレームがキーフレームである場合、再生点に対応するキーフレームを、第1キーフレームとする。つまり、メディアデータの時間(即ち、メディア情報が示した番号とフレームのデコード時間との対応関係)の中から検索されたデコード時間が再生ポイント時間に合わせたキーフレームとする。メディアファイルにおいて復号時間が第1キーフレームよりも遅れるキーフレームを二つのキーフレームのうちの第2キーフレームとする。
上記の場合1)において、再生ポイントを跨ったキーフレームをメディアデータの端点とすることによって、再生ポイントに対応するビデオフレームには正確にデコードするための十分な情報を有し、デコードデータ(即ちキーフレーム)の不足によるフレームスキップが発生しないことを確保することができる。
場合2)において、再生点に合わせたキーフレームで取得待ちのメディアデータを規定することによって、再生点が正確にデコードされることができるという前提で、不必要なメディアデータの取得を最大限に減少させ、接続及び流量の使用を減少させ、さらにウェブページにおける非メディア再生サービスのリアルタイム性を確保する。
ある実施例において、プレーヤがサーバに発信したネットワーク要求には、要求された二つのキーフレームの間のメディアデータのオフセット及び容量を担持することで、サーバが、ネットワーク要求を解析した後に、オフセット及び容量に基づいて要求されたメディアファイル内のメディアデータを位置決め、前記オフセットから始め、且つ前記容量に合致するメディアデータをメディアファイルから抽出して、プレーヤに返す。そこで、プレーヤは、ネットワーク要求を発信する前に、メディアファイルのメディア情報(即ちビデオ/オーディオフレームの位置、オフセット、復号時刻などの情報)に基づいて、メディアファイルにおけるメディアデータのオフセット及び容量を確定する必要がある。オフセット及び容量を確定する前に、まずはメディアファイルのメタデータからメディア情報を識別する必要がある。
次に、プレーヤがメディア情報を識別することについて説明する。ある実施例において、プレーヤが以下のようにしてメディアファイルからメディア情報を識別することができる:設定されたオフセット及び容量に基づいて、サーバに、設定されたオフセット及び容量に対応するメディアファイル内のデータを要求し(即ち、一定の容量のデータを要求する)、サーバから返されたデータからメタデータコンテナ内のメタデータを識別し、識別されたメタデータを解析して、メディアファイルのメディアデータコンテナにカプセル化されたメディアデータを記述するためのメディア情報を取得する。
ここで、設定された容量は、既存のメディアファイルのファイルタイプコンテナ及びメタデータコンテナの容量に基づいて統計して取得することができる。設定された容量は、設定された割合(例えば全ての)メディアファイルのファイルタイプコンテナ及びメタデータコンテナの容量の加算値をカバーすることができようにして、メディアファイルのカプセル化構造が、ファイルタイプコンテナ、メタデータコンテナ及びメディアデータコンテナを順序にカプセル化したものであるとき、一回の要求でメタデータコンテナにカプセル化されたメタデータを完全に取得できることを確保する。ネットワーク伝送時に接続を占有する状況を節約でき、さらに接続占有に起因してウェブページ内の非メディア再生サービスが接続を使用できないことで応答を遅延させる状況を回避する。
メディアファイルがMP4ファイルである場合を例として、プレーヤが取得したメタデータコンテナにカプセル化されたメタデータは、MP4ファイルにおけるmoov boxにカプセル化されたバイナリデータである。MP4ファイルのカプセル化構造がfytp box、moov box及びmdat box順次カプセル化するものであるとき、設定容量が既存のMP4ファイルのftyp box及びmoov boxの容量に基づいて統計して取得できる。設定容量は、設定割合(例えば全ての)MP4ファイルのftyp box及びmoov boxのバイナリデータの加算値をカバーできるようにして、多数の場合、moov boxに含まれた全てのバイナリデータをサーバから一回だけで取得できることを保証する。
ある実施例において、プレーヤが設定されたオフセット及び容量に基づいてサーバから要求したバイナリデータにおいて、ゼロバイトから始まる一段のバイナリデータがファイルタイプコンテナに対応するものである。プレーヤは、コンテナヘッダを読み出すことでファイルタイプコンテナの容量を取得し、第2のコンテナのヘッダを読み出すことで次のコンテナのタイプ及び容量を知る。第2のコンテナのタイプがメタデータコンテナであり、且つ返されたバイナリデータの容量がファイルタイプコンテナの容量及びメタデータコンテナ容量の加算値以上である場合、設定されたオフセット及び容量に基づいてサーバから要求したバイナリデータには、メタデータコンテナにカプセル化されたメタデータが含まれることを表明する。それに対して、第2のコンテナのタイプがメタデータコンテナであり、且つ返されたバイナリデータの容量がファイルタイプコンテナの容量及びメタデータコンテナ容量の加算値に未満である場合、設定されたオフセット及び容量に基づいてサーバから要求したバイナリデータには、メタデータコンテナにカプセル化されたメタデータが含まれていないことを表明する。プレーヤが設定されたオフセット及び容量に基づいてサーバから要求したバイナリデータには、メタデータコンテナにおけるメタデータを完全に含んでいない場合、プレーヤは、サーバから返されたバイナリデータからコンテナの容量を読み出す必要がある。メタデータコンテナのヘッダによってメタデータコンテナのオフセット及び容量を算出し、算出されたオフセット及び容量をネットワーク要求に担持して、サーバにメタデータを要求する。サーバは、要求に従ってメディアファイルにおいて算出されたオフセットから、読み出されるバイナリデータが算出された容量に合致するようにバイナリデータを読み出し、プレーヤにデータを返す。
例を挙げて説明する。プレーヤは、サーバから返したバイナリデータからコンテナの容量を読み出し、メタデータコンテナのヘッダに基づいてメタデータコンテナのオフセット及び容量を算出する。以下の二つの場合に関わる。
場合1)残りのバイナリデータ(即ち返されたバイナリデータのうちファイルタイプコンテナのバイナリデータ以外のデータ)から読み出されたコンテナのタイプがメタデータコンテナであり、且つ残りのバイナリデータの容量がメタデータコンテナの容量よりも小さい場合、メタデータコンテナの容量と残余バイナリデータ容量の差分値を算出して二回目の要求の新たな容量とし、初回要求したオフセット及び容量の加算値を新たのオフセットとし、サーバにバイナリデータを二回目で要求する。
場合2)残りのバイナリデータから読み出されたコンテナのタイプがメディアデータコンテナである場合、メディアデータコンテナの容量とファイルタイプコンテナ容量の加算値を二回目で要求する新たなオフセットとし、設定された容量(メタデータコンテナの容量をカバーできる経験値であってもよい)でサーバにバイナリデータを二回目で要求する。
メディアファイルがMP4ファイルである場合を例とする。プレーヤが設定されたオフセット及び容量によってサーバから要求されたバイナリデータにはmoov boxの完全なバイナリデータを含まないとき、プレーヤは、サーバから返されたバイナリデータからコンテナのタイプ及び容量を読み出して、MP4ファイルにおけるmoov boxのオフセット及び容量を確定する必要がある。
MP4ファイルのバイナリデータは、最初のバイトがいつもftyp boxに対応するものであって、返されたバイナリデータからfytp boxのバイナリデータを識別し、ftyp boxのヘッダに基づいてその長さを取得することができる。そして、残りのバイナリデータから、ヘッダの基準長さによって次のboxのバイナリデータを読み出す。ヘッダが示すコンテナタイプによって、以下の場合が含まれる。
1)残りのバイナリデータ(即ち返されたバイナリデータのうちfytp boxのバイナリデータ以外のデータ)から読み出されたコンテナのタイプがmoov boxであり、且つ残りのバイナリデータの容量がmoov boxの容量以上である場合、確定されたオフセット及び容量によって、サーバからMP4ファイル内の、MP4ファイルにおけるmoov boxのオフセットで始まり、且つMP4ファイルにおけるmoov boxの容量に合致するmoovデータを取得する。
2)残りのバイナリデータから読み出されたコンテナのタイプはmoov boxであり、且つ残りのバイナリデータの容量がmoov boxの容量よりも小さいとき、moov boxの容量と残りのバイナリデータ容量の差分値を算出して二回目で要求する新たな容量とし、一回目に要求されたオフセット及び容量の加算値を二回目で要求する新たなオフセットとし、サーバにバイナリデータを二回目で要求する。
3)残りのバイナリデータから読み出したコンテナのタイプがmdat boxであるとき、mdat boxの容量及びftyp box容量の加算値を算出して二回目で要求する新たなオフセットとし、設定された容量でサーバにバイナリデータを二回目で要求する。
このように、メディアファイルがいずれのカプセル化構造であっても、つまり、メディアファイルにおけるファイルタイプコンテナ、メタデータコンテナ及びメディアデータコンテナのカプセル化順序がどうなるかにもかかわらず、プレーヤが多くでも二回要求することでサーバからメタデータコンテナにおけるメタデータを取得することを保証でき、メタデータを取得する効率を向上させることができる。
例を挙げて説明する。MP4ファイルについては、サーバから返されたバイナリデータにおいて、MP4ファイルのカプセル化基準によって、ゼロバイトからの一段のバイナリデータがftyp boxに対応するものである。boxのヘッダのカプセル化基準によって、ftyp boxのヘッダからftyp boxの容量(即ち長さ)及びMP4ファイルの完全な容量を読み取ることができる。ftyp boxの容量をaとすれば(単位がバイトである)、a+1から引き続くコンテナのヘッダ情報を読み取り、引き続くコンテナのタイプ及び容量を取得する。読み取ることで得られたftyp boxに引き続くものがmoov boxであり、且つ残りのバイナリデータの容量(設定の容量-ftyp boxの容量)がmoov boxの容量よりも大きい場合、moov boxの完全のバイナリデータを取得したことを表明し、moov boxのオフセット及び容量によって残りのバイナリデータからmoov boxにおけるメタデータを抽出することができる。
プレーヤは、サーバからメタデータコンテナにカプセル化されたメタデータを取得した後、メタデータコンテナにおけるサブコンテナのネスト構造を解析し、サブコンテナのネスト構造に応じて、それぞれのサブコンテナにおけるバイナリデータを読み取り、読み取ったバイナリデータからそれぞれのサブコンテナが表すメディアデータのメディア情報を解析する。実際の応用において、メディア情報がメディアファイルにおけるビデオフレーム及び/又はオーディオフレームのオフセット、容量、復号時間などの情報を含んでもよい。
メディアファイルがMP4ファイルである場合を例とする。メタデータコンテナがmoov boxである。図2から分かるように、moov boxにはmvhd box及びトラックboxがカプセル化されている。ここで、mvhd boxのバイナリデータを解析することで、MP4ファイルの作成時刻、修正時刻、時間計量スケール、再生可能な時間長、デフォルトボリュームなどの情報を取得することができる。moov boxには複数のトラックboxが含まれ、各メィデアトラックの特有な記述情報を記録している。例えば、ビデオトラックであるビデオトラックboxに対して、ビデオトラックboxには複数のサブコンテナが複数層にネストされ、ビデオトラックboxのネスト構造によって、対応するバイナリデータを解析してMP4ファイルのビデオフレーム情報及び対応する画面情報を取得する。
ある実施例において、プレーヤは、取得されたメタデータを以下のようにして解析して、メディア情報を取得する。メタデータコンテナのバイナリデータにおけるコンテナヘッダの基準長さに対応するバイナリデータを順序に解析し、前記メタデータコンテナのサブコンテナコンテナタイプ、及び前記サブコンテナコンテナデータの長さを取得する。前記サブコンテナコンテナタイプに対応する解析器を呼び出し、解析されていないデータのうち前記コンテナデータの長さに対応するバイナリデータを順序に解析し、前記コンテナデータが表すメディア情報を取得する。
ここで、プレーヤは、メタデータコンテナに複数のサブコンテナがネストされた状況に対して、バイナリデータを毎回に読み取る際のオフセットを、識別されたサブコンテナの長さの加算値にし、読み取ったバイナリデータの長さがコンテナヘッダの基準長さに合致することで、現在に処理するサブコンテナのタイプと長さを解析することができる。
例えば、初めて読み取るとき、メタデータコンテナのバイナリデータのゼロバイトからバイナリデータを読み出し、且つ読み出したバイナリデータの長さがコンテナヘッダの基準長さと合致することで、第1のサブコンテナのタイプ及び長さを解析することができる。2回目で読み取るとき、1回目で読み取ったサブコンテナの長さをオフセットとし、バイナリデータの読み取りを始め、読み取ったバイナリデータの長さがコンテナヘッダの基準長さと合致することで、第2のサブコンテナのタイプと長さを解析することができる。
前記した仕方によってバイナリデータを読み取ると、過度な読み取りによって戻すことはなく、読み取り不足によって二次読み取りを行うこともないことで、解析の効率及び正確率が保証される。
ある実施例において、コンテナが直接にバイナリデータをカプセル化することに用いられるか、またはさらにコンテナをカプセル化することに用いられるかを示すように、メタデータコンテナにネストされた典型的なコンテナタイプを前もってマークする。例えば図2に示すmvhd box、オーディオトラックbox及びビデオトラックboxなどに対してさらにコンテナをカプセル化しているとマークし、図2に示すstts box、stsd boxなどに対してバイナリデータを直接にカプセル化しているとマークする。
バイナリデータを直接にカプセル化するとマークされたコンテナタイプに対して、コンテナタイプと一つずつ対応する解析器を設置する。解析器は、バイナリデータに基づいてそれの表すメディア情報を解析するためのものである。解析されたサブコンテナコンテナタイプと前もってマークされたコンテナタイプとを比較することは、以下の二つの場合に関わる。
場合1)対比を行うことで、前記サブコンテナコンテナタイプが前もってマークされ、且つバイナリデータを直接にカプセル化することに用いられると前もってマークされたと確定されたとき、前記サブコンテナコンテナタイプに対応する解析器を呼び出し、前記解析器によって前記サブコンテナにおけるコンテナデータを解析することで、前記コンテナデータが表すメディア情報を取得する。
場合2)対比を行うことで、前記サブコンテナコンテナタイプが前もってマークされ、且つさらにコンテナをカプセル化することに用いられると前もってマークされたと確定されたとき、前記サブコンテナにカプセル化されたコンテナコンテナタイプが前もってマークされ、且つバイナリデータを直接にカプセル化することに用いられると前もってマークされるまで、前記メディアファイルにおけるコンテナヘッダの基準長さに基づいて、前記サブコンテナに対応するバイナリデータを再帰的に解析する。サブコンテナにカプセル化されたコンテナコンテナタイプに対応する解析器を呼び出し、バイナリデータをバイト単位で解析し、解析されたバイナリデータの長さが前記サブコンテナにカプセル化されたコンテナコンテナデータの長さと対応することで、前記サブコンテナにカプセル化されたコンテナコンテナデータが表すメディア情報を取得する。
ある実施例において、メタデータコンテナを解析する過程でメディア情報を記録する仕方について説明する。メタデータコンテナバイナリデータ内のコンテナヘッダの標準長に対応するバイナリデータを順次に解析して、前記メタデータコンテナ内のサブコンテナコンテナタイプを取得する時に、サブコンテナと所属するコンテナとの間のネスト関係、及びサブコンテナとカプセル化しているコンテナとのネスト関係に基づいてオブジェクトを作成し、サブコンテナコンテナタイプがバイナリデータを直接にカプセル化することに用いられると前もってマークされた時に、前記サブコンテナに対応して作成したオブジェクト内へメディア情報を含めた配列を格納する。格納されたメディア情報は、サブコンテナコンテナデータによって表される。
例えば、図2において、解析されるサブコンテナのタイプがstts boxである時に、stts boxがバイナリデータを直接にカプセル化すると前もってマークされているため、stts boxに対応して作成したオブジェクト内へメディア情報を含めた配列を格納する。ここでのメディア情報は、stts boxコンテナデータによって表される時間長情報である。
ある実施例において、メタデータコンテナを解析する過程でサブコンテナの間のネスト関係を記録する仕方について説明する。メタデータコンテナバイナリデータ内のコンテナヘッダの標準長に対応するバイナリデータを順次に解析して、前記メタデータコンテナ内のサブコンテナコンテナタイプを取得する時に、コンテナタイプがバイナリデータを直接にカプセル化すると前もってマークされていれば、呼び出された前記解析器の中へ解析するサブコンテナを記録する。記録されたサブコンテナのインスタンスをサブコンテナ属性に設置する。サブコンテナ属性は、サブコンテナが所属するコンテナに含められ、サブコンテナと所属するコンテナとの間のネスト関係を記述することに用いられる。
例えば、図2において、解析されるサブコンテナのタイプがstsd boxである時に、stsd boxがバイナリデータを直接にカプセル化すると前もってマークされているため、stsd boxに対応する解析器の中へstsd boxを記録し、stsd boxのインスタンスをstbl boxサブコンテナ属性に設置する。以降は同様であり、最後にstsd boxのサブコンテナ属性にstsd box、stts box、stsc box等の、stbl boxにネストされている複数のサブコンテナを記録した。
ある実施例において、対比を行うことで、前記サブコンテナコンテナタイプが前もってマークされていないと確定した、又はバイナリデータを直接にカプセル化すると前もってマークされたが対応するタイプの解析器の呼び出しができなかった時に、サブコンテナに対応するバイナリデータを解析することを無視し、サブコンテナの長さに基づいて、前記バイナリデータのうち次のサブコンテナに対応する部分へジャンプして引き続いて解析する。
実際の適用において、メディアファイル内にカスタムのコンテナタイプが出現することはあり得る。ジャンプの仕方によって、メタデータコンテナの全体の解析の進度を影響することがない。同時に、解析器を設置することで、メタデータコンテナコンテナタイプが変化した時に、対応するタイプの解析器の増加、削除及び修正を通じて、最新のメタデータコンテナに対する互換的な解析を快速的に実現することができ、柔軟かつ快速的にアップデートできるという特性がある。
上記のメディア情報の識別についての説明に基づいて、次に識別したメディア情報に基づいてメディアファイルにおけるメディアデータのオフセット及び容量を確定することを説明する。ある実施例において、プレーヤが以下のようにしてメディアファイルにおけるメディアデータのオフセット及び容量を確定する。識別したメディア情報に基づいて、メディアデータのビデオフレーム(即ち第1キーフレーム及び第2キーフレームの間のビデオフレーム)の、メディアファイルにおけるオフセット及び容量、及びビデオフレームに合わせたオーディオフレームの、メディアファイルにおけるオフセット及び容量を確定する。そして、確定されたオフセット及び容量に基づいて、上記のビデオフレーム及びオーディオフレームを含む目標区間(最小オフセットと最大容量からなる区間)のオフセット及び容量を確定する。ここで、目標区間には、上記ビデオフレーム及びオーディオフレームが含まれる。
ここで、本開示の実施例によるオーディオフレームとビデオフレームの合わせる仕方について説明する。ビデオフレームを基準として、メディアデータの開始時点及び時間長に基づいて、ビデオフレームにおいて時間的同期するオーディオフレームを位置決めることで、メディアデータにおける第1のオーディオフレームの復号開始時点が第1のビデオフレームの復号開始時点と同時又はより早く、また最後のオーディオフレームの復号時間が最後のビデオフレームの復号終了時間と同時又はより遅いことを保証する。このように、メディアファイルにおけるビデオ、オーディオの時間長が一致しないという問題を回避でき、各フレームのビデオを再生しながら同期するオーディオを再生することを保証でき、画面があるのに音声がない現象は発生しない。
次に、目標区間のオフセット及び容量を確定することについて説明する。2つのキーフレームのうちの第1キーフレームと第2キーフレームの間のビデオフレームのメディアファイルにおけるオフセット及び容量によって、メタデータコンテナにおけるビデオフレームの位置を特定し、メディアファイルにおけるビデオフレームに合わせたオーディオフレームのオフセット及び容量によって、メタデータコンテナにおけるオーディオフレームの位置を特定し、位置の上限と下限からなる区間を目標区間、即ち、最小オフセットと最大容量からなる区間とする。ここで、位置の上限に対応するオフセット及び容量は、目標区間の上限に対応するオフセット及び容量であり、位置の下限に対応するオフセット及び容量は、目標区間の下限に対応するオフセット及び容量である。実際の適用では、目標区間は、ターゲット解像度メディアファイルのメディアデータコンテナにおいてビデオフレームとオーディオフレームを記憶する最小区間である。たとえば、ターゲット解像度メディアファイルにおける、第1キーフレームと第2キーフレームの間のビデオフレームの位置のオフセットの対応区間が[a,b](アドレスは昇順)であり、ターゲット解像度メディアファイルにおける、オーディオフレームの位置のオフセットの対応区間が[c,d](アドレスは昇順)である場合、位置の上限と下限からなる区間を取れば、[min(a,c),max(b,d)]となる。このように、プレーヤは、目標区間のオフセット及び容量を担持したネットワーク要求をサーバに発送して、目標区間のメディアデータを要求する。サーバは、目標区間のオフセット及び容量に基づいてメディアファイルにおけるメディアデータを抽出した後、目標区間のメディアデータを一括して返送し、再度取得する必要がないため、プレーヤの要求回数を減少させて、処理効率を高める。
ステップ202:二つのキーフレームの間のメディアデータを基づいてセグメント化メディアファイルを構築する。
ある実施例において、プレーヤが以下のようにしてセグメント化メディアファイルを構築することができる。
プレーヤは、識別されたメディア情報に基づいてセグメント化メディアファイルレベルのメタデータを算出し、算出されたメタデータ及び取得されたメディアデータを、セグメント化メディアファイルのカプセル化フォーマットに基づいて充填して、対応するセグメント化メディアファイルを得る。
本開示のある実施例において、図8を参照し、図8は、本開示の例示によるセグメント化メディアファイルをカプセル化する選択可能な模式的なフローチャートであり、以下、図8に示したステップを参照して説明する。
ステップ301:セグメント化メディアファイルのタイプ及び互換性を示すデータを、セグメント化メディアファイルのファイルタイプコンテナに充填する。
たとえば、カプセル化によって図4に示したカプセル化構造のFMP4ファイルを形成することを例にして、FMP4ファイルのファイルタイプコンテナ即ちftyp box のヘッダに、コンテナのタイプ及び長さ(ftyp box全体の長さ)を充填し、ftyp boxのデータ部分に、ファイルタイプがFMP4であること、及び互換プロトコルを示すデータ(バイナリデータ)を充填して生成する。
ステップ302:セグメント化メディアファイルのファイルレベルを示すメタデータを、セグメント化メディアファイルのメタデータコンテナに充填する。
ある実施例において、セグメント化メディアファイルのカプセル化構造への充填待ちのメディアデータについて、セグメント化メディアファイルにおけるメタデータコンテナのネスト構造に基づいて、ネスト構造を充填するために必要となる、メディアデータを記述するメタデータを算出する。
再度図4を例として、FMP4ファイルのファイルレベルを表すメタデータを算出して、FMP4のメタデータコンテナ(即ちmoov box)に充填する。oov boxには、mvhd、トラック及びビデオ広張(mvex、movie extend)という三つのコンテナがネストされている。
その中で、mvhdコンテナにカプセル化されたメタデータは、セグメント化メディアファイルの再生に関するメディア情報を表すために用いられ、位置、時間長、作成時間及び修正時間などを含む。トラックコンテナにネストされたサブコンテナは、メディアデータ内の相応のトラックの参照及び記述を表し、例えばトラックコンテナには、トラックの性質及び全体情報(例えば時間長、幅、高さ)を記述するコンテナ(tkhd boxと記す)、トラックのメディア情報(例えばメディアタイプとサンプルに関する情報)を記録するコンテナ(mdia boxと記す)がネストされている。
ステップ303:取得されたメディアデータ、及びメディアデータを記述するメタデータを、セグメント化メディアファイルのセグメント化コンテナ内のメディアデータコンテナ、及びセグメントレベルのメタデータコンテナに対応して充填する。
ある実施例において、セグメント化メディアファイルには、一つ又は複数のセグメント(fragment)をカプセル化していてもよい。充填待ちのメディアデータに関しては、セグメント化メディアファイルの一つ又はセグメント化されたメディアデータコンテナ(即ちmdat box)に充填してもよい。各セグメントの各々には、セグメントレベルのメタデータコンテナ(moof boxと記す)がカプセル化され、該メタデータコンテナに充填されたメタデータが、セグメントを独立して復号できるように、セグメントに充填されたるメディアデータを記述することに用いられる。
図4に合わせて、充填待ちのメディアデータをFMP4ファイルのカプセル化構造の二つのセグメントに充填する場合を例として、各セグメント化メディアデータまで充填する。対応のセグメントのセグメントレベルのメタデータコンテナ(即ち moof box)へ充填したいメタデータを算出し、moof boxにネストされたサブコンテナに対応的に充填する。ここで、moof boxのヘッダをmoof boxという。充填されたバイナリデータは、コンテナのタイプが「moof box」であること及びmoof boxの長さを表すことに用いられる。
ステップ301からステップ303において、データを対応のコンテナに充填するある実施例において、充填操作を実行するとき、クラスの書き込み作動機能を呼び出して、前記サブコンテナのメモリバッファにおいてバイナリデータの書き込みとマージを完成し、前記クラスのインスタンスを返す。返されたインスタンスは、前記サブコンテナとネスト関係を有するサブコンテナとをマージすることに用いられる。
データを充填する一例として、カプセル化機能を実現するためのクラスMP4を作成し、セグメント化メディアファイル内の各サブコンテナを、クラスストリーム(Stream)としてカプセル化する静的な方法を示す。バイナリデータの作動機能を実現するためのクラスストリームを作成し、クラスストリームの各々が1つのメモリバッファを提供して、充填待ちのバイナリデータを保持することに用いる。ストリームで提供される静的な方法によって、充填待ちの複数のバイトの10進数データをバイナリデータに変換する。クラスストリームのインスタンスにより提供される書き込み動作機能によって、メモリバッファにおいてサブコンテナへ充填待ちのバイナリデータのマージおよび充填を完成する。ストリームにより提供される静的な方法は、新たなストリームインスタンスを返して、現在のサブコンテナと他のネスト関係を有するサブコンテナとのマージを実現することができる。
ステップ203:構築されたセグメント化メディアファイルをメディアリソース拡張インタフェース内のメディアソースオブジェクトに添加する。
図9は、本開示の実施例によるプレーヤがウェブページにおけるメディアソース拡張インタフェースによってセグメント化メディアファイルを再生するある選択可能な模式図である。図9を参照して、プレーヤがウェブページの再生ウィンドウ(プレーヤに対応する再生ウィンドウ)でメディアファイルの再生イベントを受信すると、プレーヤはMSEによってメディアソース(MediaSource)方法を実行してメディアソース(Media Source)オブジェクトを作成する。メディアソース拡張インタフェースにカプセル化されたソース添加バッファー(addSourceBuffer)方法を実行してメディアソースオブジェクトのバッファーを作成する、すなわちソースバッファー(SourceBuffer)オブジェクトを作成する。一つのメディアソースオブジェクトは一つ又は複数のソースバッファーオブジェクトを有する。各ソースバッファーオブジェクトの各々は、ウェブページにおける一つの再生ウィンドウを応対することに用いられることができ、ウィンドウにおける再生待ちのセグメント化メディアファイルを受信することに用いられる。
メディアファイルを再生する過程で、プレーヤの解析器(Parser)が新たに取得したメディアデータを解析することで、新たなセグメント化メディアファイルを構築し続け、ソースバッファーオブジェクトのappendバッファー(appendBuffer)方法を実行することで、セグメント化メディアファイルを、同じメディアソースオブジェクトのソースバッファーオブジェクトに添加する。
プレーヤは、構築されたセグメント化メディアファイルを、メディアソース拡張インタフェースにおけるメディアソースオブジェクトに添加した後、メディアソース拡張インタフェースを呼び出して、メディアソースオブジェクトに対応する仮想アドレスを作成する。例えば、プレーヤは、メディアソース拡張インタフェースにカプセル化されたオブジェクト作成(createObject)URL方法を実行して、メディアソースオブジェクトに対応する仮想アドレスを作成する、即、仮想ユニフォームリソースロケータ(URL、Uniform Resource Locator)を作成する。該仮想アドレスにBlobタイプのセグメント化メディアファイルがカプセル化されている。
なお、プレーヤは、メディアソースオブジェクトを仮想URLのソース(src)属性として設定する。つまり、仮想URLを、ウェブページ内のメディア要素、例えばビデオ/オーディオ要素とバインディングする。この過程は、メディアソースオブジェクトをウェブページ内のメディア要素と関連付けるとも称される。
本開示の実施例において、メディアソースオブジェクトへ添加するセグメント化メディアファイルは、現在再生するセグメント化メディアファイルである。例えば、現在、セグメント化メディアファイル1を再生しているが、後続のセグメント化メディアファイル2、3を既に構築していれば、構築されたセグメント化メディアファイル2、3をMSEのソースバッファーに添加してプレロードを行い、相応的に、プレーヤが取得したメディアデータに対応する二つのキーフレームのうちの第1キーフレームは、セグメント化メディアファイル1の後に現れる1個目のキーフレームである。
ステップ204:ウェブページのメディア要素へ、ウェブページのメディア要素にメディアソースオブジェクトをデータソースとしてデコードし再生させるための仮想アドレスを伝送する。
例えば、プレーヤには、メディア要素を呼び出して仮想URLを再生する文、例えば、<audio>仮想URLを備える。ブラウザは、ウェブページに嵌め込んでいるプレーヤに対応する文を解釈する時に、ブラウザのメディア要素に、仮想URLにバインディングされたソースバッファーオブジェクトからセグメント化メディアファイルを読み取らせ、デコードして再生させる。
以下、プレーヤがMP4ファイルをFMP4ファイルに変換してメディアソース拡張インタフェースによってウェブページで再生する過程を説明する。
図10は、本開示の実施例によるMP4ファイルをFMP4ファイルに変換してメディアソース拡張インタフェースによって再生する模式図である。図10を参照して、プレーヤは、メディアファイルの実アドラス(http://www.toutiao.com/a/b.mp4)に基づいて、サーバにMP4ファイル内の一部のメディアデータ、例えば復号時間が再生ポイントに引き続くための所定時間帯にあるデータを取得することを要求する。
プレーヤは、取得されたメディアデータに基づいてFMP4ファイルを構築し、その後、メディアソースオブジェクトに対応するソースバッファープロジェクトへ添加する。仮想URLがメディアソースオブジェクトにバインディングされているため、プレーヤがオーディオ(audio)/ビデオ(video)要素を呼び出すコートが実行されると、オーディオ/ビデオ要素は、メディアソースオブジェクトのソースバッファーオブジェクトから、どんどん添加されてきた新たなFMP4ファイルを読み出し復号して、メディアファイルの連続再生を実現する。ウェブページ内のメディア要素は、メディアファイルの実アドレスに基づいてメディアデータを取得するものではなく、仮想URLに基づいてメディアソースオブジェクトを取得し、さらに、メディアファイルの再生を実現する。このように、メディアファイルの実アドレスの保護を実現した。
次に、プレーヤがウェブブラウザに嵌め込まれ、ウェブページがプレーヤのJSコードを解析し実行することでプレーヤを実現する場合を例とし、プレーヤがウェブブラウザのHTML5メディア要素(Video要素+Audio要素)を使用してMP4ファイルを再生することを例として、本開示の実施例に係る非ストリームメディアファイルのウェブページ再生方法について説明する。MP4の実施を基に、他の非ストリームメディアフォーマットへ容易に適用することができる。図11は、本開示の実施例による非ストリームメディアファイルのウェブページ再生方法のある選択可能なフロー模式図を示す。図12は、本開示の実施例による非ストリームメディアファイルのウェブページ再生方法の別の択可能なフロー模式図を示す。図11、図12に合わせて、本開示の実施例による非ストリームメディアファイルのウェブページ再生方法は、以下のことを備える。
ステップ401:プレーヤは、設定されたオフセット及び容量に基づいて、サーバにMP4ファイル内の一定容量のデータを要求する。
プレーヤは、設定されたオフセット及び容量を担持しているデータ要求をサーバに発信して、MP4ファイルにおけるゼロバイトから始まり、かつ設定容量に合致するバイナリデータを取得する。MP4ファイルのカプセル化構造が順序にカプセルされたfytp box、moov box及びmdat boxを含む場合を例として、設定容量は、既存のMP4ファイルのftyp box及びmoov boxの容量に基づいて統計して取得できる。設定容量が、設定割合(例えば全ての)MP4ファイルのftyp box及びmoov boxの加算値をカバーできるようにして、完全なmoov boxのバイナリデータをサーバから一回だけで取得できることを保証する。図12を参照して、プレーヤ要求に設定されたオフセットがゼロバイトであり、設定された容量がMath.pow(25,4)バイトのバイナリデータであり、サーバから返されたバイナリデータからmoovデータを取得する。完全なmoovデータを一回の要求で取得しなかった場合、オフセット(図12において開始(start))及び容量(開始〜容量(start〜size))を再び算出して、二回目で要求する。
ステップ402:プレーヤがサーバから返されたデータを受信して、サーバから返されたデータからMP4ファイルのメディア情報を識別する。
MP4ファイルのメディア情報は、MP4ファイルにおけるビデオ/オーディオフレームのオフセット、容量、復号時間などの情報を含む。
ある実施例において、プレーヤは、以下のようにMP4ファイルにおけるメディア情報の識別を実現することができる。サーバから返されたデータからfytp boxのバイナリデータを識別し、残りのバイナリデータからコンテナのタイプ及び容量を読み出す。読み出したコンテナのタイプがmoov boxであり、かつ残りのバイナリデータの容量がmoov boxの容量以上である場合、残りのバイナリデータからメディア情報を解析する。ここで、サーバが返されたバイナリデータに対して、始まる一段のバイナリデータが必ずftyp boxに対応するものであるため、ftyp boxのカプセル化基準に基づいて、ftyp boxの容量(即ち長さ)及び完全のMP4ファイルの容量を読み出すことができる。例えば、ftyp boxの容量をaとすれば(バイトを単位とする)、a+1から引き続くコンテナのヘッダ情報を読み取り始め、コンテナのタイプ及び容量を取得する。moov boxであり、且つ(設定容量-ftyp boxの容量)がmoov boxの容量よりも大きいであれば、moov boxの完全のバイナリデータを取り出したことを表明し、カプセル化構造に基づいてバイナリデータを解析することができ、メディア情報を還元することができる。
ある実施例において、サーバから返されたバイナリデータには完全のmoovデータが含まれていない場合、取得したバイナリデータからコンテナの容量を読み出して、MP4ファイルにおけるmoov boxのオフセット及び容量を確定する。確定されるオフセット及び容量によって、残りのバイナリデータから読み出したコンテナのタイプがmoov boxであり、且つ残りのバイナリデータの容量がmoov boxの容量以上である場合、サーバから、MP4ファイル内の、MP4ファイルにおけるmoov boxのオフセットで始まり、且つMP4ファイルにおけるmoov boxの容量に合致するmoovデータを取得する。残りのバイナリデータから読み出したコンテナのタイプがmoov boxであり、かつ残りのバイナリデータの容量がmoov boxの容量よりも小さい場合、moov boxの容量と残りのバイナリデータ容量との差分を算出して二回目で要求する新たな容量とし、一回目で要求されたオフセット及び容量の加算値を新たなオフセットとして、サーバにバイナリデータを二回目で要求する。
実際の応用において、MP4ファイルのカプセル化構造が順序にカプセル化されたfytp box、mdat box、moov boxである場合がある。残りのバイナリデータから読み出したコンテナのタイプがmdat boxであるとき、算出したmdat boxの容量及び算出したmoov box容量の加算値を、二回目で要求する新たのオフセットとし、設定された容量によってサーバにバイナリデータを二回目で要求する。
ステップ403:プレーヤがウェブブラウザでMP4ファイルを再生する過程で、識別されたメディア情報及び現在の再生ポイントに基づいてMP4ファイルにおける二つのキーフレームを位置決める。
本開示の実施例において、プレーヤは、二つのキーフレームの間のメディアデータ(ビデオデータを少なく含み、オーディオデータをさらに含んでもよい)をローディングユニットとして再生する、つまり、プレーヤは、二つのキーフレームの間のメディアデータをローディングすることで、MP4ファイルを再生する。二つのキーフレームの間には、通常フレームだけ存在してもよい。即ち、二つのキーフレームが隣接のキーフレームである。二つのキーフレームの間には、他のキーフレームが存在してもよい。
ジャンプする方式でMP4ファイルの再生ポイントに達する場合を例として説明する。図12を参照して、プレーヤは、まず、キーフレームを確定し、即ちビデオキーフレームを登録する。プレーヤは、MP4ファイルにおける復号時間が再生ポイントよりも前の第1のキーフレームを第1キーフレームとして位置決め、MP4ファイルにおける復号時間が第1キーフレームよりも遅れるキーフレームを第2キーフレームとして位置決める。ここで、再生ポイントに対応するメディアファイルのビデオフレームは、通常フレーム又はキーフレームであるという二種の場合がある。再生ポイントに対応するビデオフレームがちょうどキーフレームであるとき、MP4ファイルにおける復号時間が再生ポイントよりも前の第1のキーフレームが、再生ポイントに対応するキーフレームとなる。つまり、このとき、プレーヤが要求するメディアデータにおける第1のキーフレームは、再生ポイントに対応するキーフレームである。
プレーヤがMP4ファイルにおける二つのキーフレームを位置決めることは、以下のことを備える。識別されたメディア情報及び現在の再生ポイントに基づいて前記第1キーフレーム及び第2キーフレームのオフセット及び容量を確定し(図12においてデータオフセットの算出に対応する)、引いてはオフセット及び容量に基づいてサーバに第1キーフレームと第2キーフレームとの間のメディアデータを要求する。
ステップ404:サーバに、位置決められた二つのキーフレームの間のメディアデータを要求する。
実際に実施するとき、プレーヤは、サーバにネットワーク要求を発信して、MP4ファイル内の位置決められた二つのキーフレームの間のメディアデータを要求する。ネットワーク要求には二つのキーフレームに対応する目標区間のオフセット及び容量が担持されている。
ここで、プレーヤは、MP4ファイルにおける、第1キーフレーム及び第2キーフレームの間のビデオフレームのオフセット及び容量によって、mdatにおけるビデオフレームの位置を位置決め、MP4ファイルにおける、ビデオフレームに合わせたオーディオフレームのオフセット及び容量によって、mdatおけるオーディオフレームの位置(図12においてオーディオフレーム登録に対応する)を位置決め、位置の上限及び下限からなる区間を目標区間とする(図12においてビデオ及びオーディオ多重化に対応する)。位置の上限に対応するオフセット及び容量は、目標区間の上限に対応するオフセット及び容量である。位置の下限に対応するオフセット及び容量は、目標区間の下限に対応するオフセット及び容量である。
ステップ405:サーバは、プレーヤにより要求された二つのキーフレームの間のメディアデータを返す。
ステップ406:サーバから返されたメディアデータに基づいて、FMP4フォーマットのセグメント化メディアファイルをカプセル化する。
実際に実施するとき、サーバは、メディアデータのメディア情報に基づいてセグメント化メディアファイルレベルのメタデータを算出し、その後、FMP4フォーマットのセグメント化メディアファイルのカプセル化フォーマットに基づいて、セグメント化メディアファイルレベルのメタデータ及びメディアデータを充填してFMP4フォーマットのセグメント化メディアファイルを得る。
ステップ407:セグメント化メディアファイルを、MSEインタフェース内のメディアソースオブジェクトに添加する。
ステップ408:ウェブページのメディア要素に仮想アドレスを伝送する。
仮想アドレスは、メディア要素(ビデオ要素及びオーディオ要素)がメディアソースオブジェクトをデータソースとして再生するためのものである。
本開示の上記実施例を適用することで以下の有益な効果がある。
1)、プレーヤは、メディアファイル内の二つのキーフレームの間のメディアデータの一部を取得して、セグメント化メディアファイルを構築して再生することで、メディアファイルを再生する期間にメディアデータのロードに対する制御を実現し、流量や帯域幅を無駄に消耗することを回避する。
2)、非ストリームメディアフォーマットのメディアファイル内のメディアデータを、セグメント化メディアファイルに変換し、ウェブページのメディアソース拡張インタフェースを通じて、ウェブページのメディア要素へ発送して復号し再生させることで、非ストリームメディアフォーマットのメディアファイルをウェブページによって再生することを実現し、非ストリームメディアカプセル化フォーマットのファイルを完全にダウンロードしてなければ独立に再生できないという制限を克服する。
3)、カプセル化して得たセグメント化メディアファイルは、メディアファイルの全てのメディアデータではなく、取得したメディアファイルの一部のメディアデータに基づくものであるため、変換遅延が小さく、予め記憶する必要がなく、元のメディアファイル以外に、添加的な記憶空間を占用しないため、記憶空間への占用を顕著に低減する。
4)、ウェブページにおけるメディア要素は、メディアファイルの実アドレスに基づいてメディアデータを取得してから再生するものではなく、メディアソース拡張インタフェースを介してセグメント化メディアファイルを取得して復号再生するため、メディアファイルの実アドレスの保護を実現する。
次に、引き続き非ストリームメディアファイルのウェブページ再生装置を説明する。非ストリームメディアファイルの再生装置のハードウェアの実施例又はソフトウェアの実施例として、非ストリームメディアファイルのウェブページ再生装置は、信号/情報/データのレベルで結合関係を有する一連のモジュールとして提供することができ、以下、図13を参照しながら説明する。図13を参照し、図13は、本開示の実施例の非ストリームメディアファイルのウェブページ再生装置の選択可能な構成模式図であり、非ストリームメディアファイルのウェブページ再生装置を実現するために含まれる一連のユニットが示されていたが、非ストリームメディアファイルのウェブページ再生装置のユニット構造は、図13に示されるものに制限されず、たとえば、一部のユニットについては、実現する機能に応じてさらに分割又は結合することができる。図13に示すように、非ストリームメディアファイルのウェブページ再生装置900は、
ウェブページで再生しているメディアファイルの二つのキーフレームに基づいて、非ストリームメディアフォーマットの前記メディアファイル内のメディアデータの一部を取得するように配置されている取得ユニット91と、
前記二つのキーフレームの間のメディアデータに基づいて、セグメント化メディアファイルを構築するように配置されている構築ユニット92と、
構築されたセグメント化メディアファイルを、メディアリソース拡張インタフェースのメディアソースオブジェクトに添加するように配置されている添加ユニット93と、
ウェブページのメディア要素に、前記メディアソースオブジェクトをデータソースとして再生させるための仮想アドレスを伝達するように配置されている伝送ユニット94と、
を含む。
ある実施例において、連続再生することで前記メディアファイルの再生ポイントに到着した場合、
前記二つのキーフレームの第1キーフレームは、前記メディアファイルにおける復号時間が前記再生ポイントよりも後にある第1のキーフレームであり、
前記二つのキーフレームの第2キーフレームは、前記メディアファイルにおける復号時間が前記第1キーフレームよりも遅れるキーフレームである。
ある実施例において、ジャンプすることで前記メディアファイルの再生ポイントに到着する場合、
前記二つのキーフレームの第1キーフレームは、前記メディアファイルにおける復号時間が前記再生ポイントよりも前にある第1のキーフレームであり、
前記二つのキーフレームの第2キーフレームは、前記メディアファイルにおける復号時間が前記第1キーフレームよりも遅れるキーフレームである。
ある実施例において、前記取得ユニットは、さらに、
前記メディアファイルから識別されたメディア情報に基づいて、前記二つのキーフレームの間のビデオフレームの、前記メディアファイルにおけるオフセット及び容量、及び前記ビデオフレームに合わせるオーディオフレームの、前記メディアファイルにおけるオフセット及び容量を確定し、
確定されたオフセット及び容量に基づいて、前記ビデオフレーム及び前記オーディオフレームを含む目標区間のオフセット及び容量を確定し、
前記目標区間のオフセット及び容量に基づいて、前記メディアファイルのメディアデータコンテナ内の、前記セグメント化メディアファイルを構築するためのメディアデータを取得するように配置されている。
ある実施例において、前記取得ユニットは、さらに、
設定されたオフセット及び容量に基づいて、前記メディアファイル内のメタデータを取得し、
取得された前記メタデータから、前記メディアファイルにおける前記メディアデータのオフセット及び容量を位置決めるためのメディア情報を識別するように配置されている。
ある実施例において、前記取得ユニットは、さらに、
取得された前記メタデータから完全なメディア情報を識別できなかったとき、メタデータコンテナのヘッダに基づいて、メタデータコンテナのオフセット及び容量を算出し、
算出した前記メタデータコンテナのオフセット及び容量に基づいて、前記メタデータコンテナ内のメタデータを取得し、
取得された前記メタデータコンテナ内のメタデータから、対応するメディア情報を識別するように配置されている。
ある実施例において、前記構築ユニットは、さらに、
前記二つのキーフレームの間のメディアデータに対応するメディア情報に基づいて、対応するセグメント化メディアファイルレベルのメタデータを算出し、
算出したメタデータ、及び前記二つのキーフレームの間のメディアデータを、セグメント化メディアファイルのカプセル化フォーマットに従って充填して、対応するセグメント化メディアファイルを取得するように配置されている。
本開示の実施例は、読み取り可能な記憶媒体をさらに提供する。記憶媒体は、モバイル記憶機器、ランダムアクセスメモリ(RAM、Random Access Memory)、読み取り専用メモリ(ROM、Read−Only Memory)、磁気ディスク又は光ディスクなど、プログラムコードを記憶可能なさまざまな媒体であってもよい。前記読み取り可能な記憶媒体には、プロセッサにより実行されると上記非ストリームメディアファイルのウェブページ再生方法を実現するための実行可能な指令が記憶されている。
以上のように、本開示の具体的な実施形態に過ぎず、本開示の技術的範囲は、これに制限されない。当業者であれば、本開示で開示されている技術的範囲から逸脱せずに容易に想到し得る変化又は置換は、すべて本開示の特許範囲に含まれるべきである。このため、本開示の技術的範囲は、請求項の技術的範囲を基準とすべきである。
20 ネットワーク
30 サーバ
91 取得ユニット
92 構築ユニット
93 添加ユニット 94 伝送ユニット
600 非ストリームメディアファイルのウェブページ再生装置
601 プロセッサ
602 メモリ
603 ユーザインターフェース
604 ネットワークインターフェース
6021 実行可能な指令

Claims (10)

  1. ウェブページで再生しているメディアファイルの二つのキーフレームに基づいて、非ストリームメディアフォーマットの前記メディアファイル内のメディアデータの一部を取得することと、
    前記二つのキーフレームの間のメディアデータに基づいて、セグメント化メディアファイルを構築することと、
    構築されたセグメント化メディアファイルを、メディアリソース拡張インタフェースのメディアソースオブジェクトに添加することと、
    前記ウェブページのメディア要素に、前記メディアソースオブジェクトをデータソースとして再生させるための仮想アドレスを伝達することと、
    を含み、
    前記した前記メディアファイル内のメディアデータの一部を取得することは、
    前記メディアファイルから識別されたメディア情報に基づいて、前記二つのキーフレームの間のビデオフレームの、前記メディアファイルにおけるオフセット及び容量、及び前記ビデオフレームに合わせるオーディオフレームの、前記メディアファイルにおけるオフセット及び容量を確定することと、
    確定されたオフセット及び容量に基づいて、前記ビデオフレーム及び前記オーディオフレームを含む目標区間のオフセット及び容量を確定することと、
    前記目標区間のオフセット及び容量に基づいて、前記メディアファイルのメディアデータコンテナ内の、前記セグメント化メディアファイルを構築するためのメディアデータを取得することと、
    を含み、
    設定されたオフセット及び容量に基づいて、前記メディアファイル内のメタデータを取得することと、
    取得された前記メタデータから、前記メディアファイルにおける前記メディアデータのオフセット及び容量を位置決めるためのメディア情報を識別することと、
    をさらに含み、
    取得された前記メタデータから完全なメディア情報を識別できなかったとき、メタデータコンテナのヘッダに基づいて、メタデータコンテナのオフセット及び容量を算出することと、
    算出した前記メタデータコンテナのオフセット及び容量に基づいて、前記メタデータコンテナ内のメタデータを取得することと、
    取得された前記メタデータコンテナ内のメタデータから、対応するメディア情報を識別することと、
    をさらに含む
    非ストリームメディアファイルのウェブページ再生方法。
  2. 連続再生することで前記メディアファイルの再生ポイントに到着した場合、
    前記二つのキーフレームの第1キーフレームは、前記メディアファイルにおける復号時間が前記再生ポイントよりも後にある第1のキーフレームであり、
    前記二つのキーフレームの第2キーフレームは、前記メディアファイルにおける復号時間が前記第1キーフレームよりも遅れるキーフレームである、請求項1に記載の方法。
  3. ジャンプすることで前記メディアファイルの再生ポイントに到着した場合、
    前記二つのキーフレームの第1キーフレームは、前記メディアファイルにおける復号時間が前記再生ポイントよりも前にある第1のキーフレームであり、
    前記二つのキーフレームの第2キーフレームは、前記メディアファイルにおける復号時間が前記第1キーフレームよりも遅れるキーフレームである、請求項1に記載の方法。
  4. 前記した前記二つのキーフレームの間のメディアデータに基づいて、セグメント化メディアファイルを構築することは、
    前記二つのキーフレームの間のメディアデータに対応するメディア情報に基づいて、対応するセグメント化メディアファイルレベルのメタデータを算出することと、
    算出したメタデータ、及び前記二つのキーフレームの間のメディアデータを、セグメント化メディアファイルのカプセル化フォーマットに従って充填して、対応するセグメント化メディアファイルを取得することと、
    を含む、請求項1からのいずれか1項に記載の方法。
  5. ウェブページで再生しているメディアファイルの二つのキーフレームに基づいて、前記メディアファイル内の非ストリームメディアフォーマットのメディアデータの一部を取得するように配置されている取得ユニットと、
    前記二つのキーフレームの間のメディアデータに基づいて、セグメント化メディアファイルを構築するように配置されている構築ユニットと、
    構築されたセグメント化メディアファイルを、メディアリソース拡張インタフェースのメディアソースオブジェクトに添加するように配置されている添加ユニットと、
    前記ウェブページのメディア要素に、前記メディアソースオブジェクトをデータソースとして再生させるための仮想アドレスを伝達するように配置されている伝送ユニットと、
    を含み、
    前記取得ユニットは、さらに
    前記メディアファイルから識別されたメディア情報に基づいて、前記二つのキーフレームの間のビデオフレームの、前記メディアファイルにおけるオフセット及び容量、及び前記ビデオフレームに合わせるオーディオフレームの、前記メディアファイルにおけるオフセット及び容量を確定し、
    確定されたオフセット及び容量に基づいて、前記ビデオフレーム及び前記オーディオフレームを含む目標区間のオフセット及び容量を確定し、
    前記目標区間のオフセット及び容量に基づいて、前記メディアファイルのメディアデータコンテナ内の、前記セグメント化メディアファイルを構築するためのメディアデータを取得するように配置され、
    前記取得ユニットは、さらに、
    設定されたオフセット及び容量に基づいて、前記メディアファイル内のメタデータを取得し、
    取得された前記メタデータから、前記メディアファイルにおける前記メディアデータのオフセット及び容量を位置決めるためのメディア情報を識別するように配置され、
    前記取得ユニットは、さらに、
    取得された前記メタデータから完全なメディア情報を識別できなかったとき、メタデータコンテナのヘッダに基づいて、メタデータコンテナのオフセット及び容量を算出し、
    算出した前記メタデータコンテナのオフセット及び容量に基づいて、前記メタデータコンテナ内のメタデータを取得し、
    取得された前記メタデータコンテナ内のメタデータから、対応するメディア情報を識別するように配置されている
    非ストリームメディアファイルのウェブページ再生装置。
  6. 連続再生することで前記メディアファイルの再生ポイントに到着した場合、
    前記二つのキーフレームの第1キーフレームは、前記メディアファイルにおける復号時間が前記再生ポイントよりも後にある第1のキーフレームであり、
    前記二つのキーフレームの第2キーフレームは、前記メディアファイルにおける復号時間が前記第1キーフレームよりも遅れるキーフレームである、請求項に記載の装置。
  7. ジャンプすることで前記メディアファイルの再生ポイントに到着した場合、
    前記二つのキーフレームの第1キーフレームは、前記メディアファイルにおける復号時間が前記再生ポイントよりも前にある第1のキーフレームであり、
    前記二つのキーフレームの第2キーフレームは、前記メディアファイルにおける復号時間が前記第1キーフレームよりも遅れるキーフレームである、請求項に記載の装置。
  8. 前記構築ユニットは、さらに、
    前記二つのキーフレームの間のメディアデータに対応するメディア情報に基づいて、対応するセグメント化メディアファイルレベルのメタデータを算出し、
    算出したメタデータ、及び前記二つのキーフレームの間のメディアデータを、セグメント化メディアファイルのカプセル化フォーマットに従って充填して、対応するセグメント化メディアファイルを取得するように配置されている、請求項からのいずれか1項に記載の装置。
  9. 実行可能な指令を記憶するように配置されているメモリと、
    前記メモリに記憶された実行可能な指令を実行するとき、請求項1からのいずれか1項に記載された非ストリームメディアファイルのウェブページ再生方法を実現するように配置されているプロセッサと、
    を含む非ストリームメディアファイルのウェブページ再生装置。
  10. 実行されるときに請求項1からのいずれか1項に記載された非ストリームメディアファイルのウェブページ再生方法を実現させるための実行可能な指令を記憶したコンピュータで読み取り可能な記憶媒体。
JP2020548641A 2018-05-29 2018-08-31 非ストリームメディアファイルのウェブページ再生方法、装置及び記憶媒体 Active JP6961835B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810532849.1A CN110545469B (zh) 2018-05-29 2018-05-29 非流媒体文件的网页播放方法、装置及存储介质
CN201810532849.1 2018-05-29
PCT/CN2018/103543 WO2019227748A1 (zh) 2018-05-29 2018-08-31 非流媒体文件的网页播放方法、装置及存储介质

Publications (3)

Publication Number Publication Date
JP2021510991A JP2021510991A (ja) 2021-04-30
JP2021510991A5 true JP2021510991A5 (ja) 2021-08-05
JP6961835B2 JP6961835B2 (ja) 2021-11-05

Family

ID=68698579

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020548641A Active JP6961835B2 (ja) 2018-05-29 2018-08-31 非ストリームメディアファイルのウェブページ再生方法、装置及び記憶媒体

Country Status (4)

Country Link
US (1) US11025991B2 (ja)
JP (1) JP6961835B2 (ja)
CN (1) CN110545469B (ja)
WO (1) WO2019227748A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148115A (zh) * 2019-06-28 2020-12-29 中兴通讯股份有限公司 媒体处理方法、装置、系统和可读存储介质
CN112203111B (zh) * 2020-09-29 2023-03-14 北京达佳互联信息技术有限公司 多媒体资源的预加载方法、装置、电子设备及存储介质
CN114390319B (zh) * 2021-10-22 2023-11-03 广州市奥威亚电子科技有限公司 Mp4文件的读取下载方法、装置、电子设备及存储介质
CN116962815B (zh) * 2023-09-20 2023-11-21 成都华栖云科技有限公司 一种浏览器原生播放mkv视频的方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3910763B2 (ja) * 1999-08-18 2007-04-25 株式会社東芝 データ多重装置およびプログラムを記録した記録媒体
US7624337B2 (en) * 2000-07-24 2009-11-24 Vmark, Inc. System and method for indexing, searching, identifying, and editing portions of electronic multimedia files
US20070088844A1 (en) * 2005-06-07 2007-04-19 Meta Interfaces, Llc System for and method of extracting a time-based portion of media and serving it over the Web
CN102143121B (zh) * 2010-01-29 2016-04-06 北京搜狗科技发展有限公司 视频下载的方法及装置
JP5592960B2 (ja) * 2010-03-03 2014-09-17 サムスン エレクトロニクス カンパニー リミテッド メディアファイルの記録及び再生に係る装置及び方法とその記録媒体
CN102340705B (zh) * 2010-07-19 2014-04-30 中兴通讯股份有限公司 一种获取关键帧的系统及方法
CN102004760B (zh) * 2010-11-03 2013-08-14 深圳市龙视传媒有限公司 多媒体文件的存储和播放方法、相关装置及系统
KR101528991B1 (ko) * 2011-01-11 2015-06-15 애플 인크. 실시간 또는 준 실시간 스트리밍
KR20120128357A (ko) * 2011-05-17 2012-11-27 삼성전자주식회사 미디어 파일 스플리팅 방법 및 장치
US10841352B2 (en) * 2012-11-27 2020-11-17 International Business Machines Corporation Non-chronological buffering of segments of a media file
CN104363511B (zh) * 2014-11-28 2017-06-23 北京奇艺世纪科技有限公司 一种在移动设备中在线播放F4v视频的方法及系统
KR102125162B1 (ko) * 2016-02-16 2020-06-22 노키아 테크놀로지스 오와이 미디어 캡슐화 및 캡슐 해제 기법
CN106937176A (zh) * 2017-04-01 2017-07-07 福建中金在线信息科技有限公司 视频处理方法、装置以及视频交互方法和装置
CN107613029A (zh) * 2017-11-05 2018-01-19 深圳市青葡萄科技有限公司 一种适用于移动端或Web端的虚拟桌面远程方法及系统

Similar Documents

Publication Publication Date Title
JP7072668B2 (ja) ウェブページに基づくメディアファイルの再生方法、装置及び記憶媒体
JP7068489B2 (ja) メディアファイル変換方法、装置及び記憶媒体
JP6961835B2 (ja) 非ストリームメディアファイルのウェブページ再生方法、装置及び記憶媒体
CN110545456B (zh) 媒体文件的同步播放方法、装置及存储介质
JP7052070B2 (ja) メディアファイルのネットワーク再生方法、装置及び記憶媒体
JP7008829B2 (ja) ウェブページで解像度を切り替えてメディアファイルを再生する方法、装置及び記憶媒体
JP7181308B2 (ja) メディア再生のローディング制御方法、装置及び記憶媒体
JP2021510991A5 (ja)
JP7174762B2 (ja) メタデータ容器の解析方法、装置及び記憶媒体
CN110545463B (zh) 基于媒体文件转换的播放控制方法、装置及存储介质
CN110545471B (zh) 基于离线转换的播放控制方法、装置及存储介质
CN110545461A (zh) 一种媒体文件的分辨率切换方法、装置及存储介质
CN110545464A (zh) 一种媒体文件分辨率切换方法、装置及存储介质