(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-13
(45)【発行日】2022-01-25
(54)【発明の名称】ウェブページで解像度を切り替えてメディアファイルを再生する方法、装置及び記憶媒体
(51)【国際特許分類】
H04L 67/02 20220101AFI20220118BHJP
H04N 21/438 20110101ALI20220118BHJP
【FI】
H04L67/02
H04N21/438
(21)【出願番号】P 2020536733
(86)(22)【出願日】2018-08-31
(86)【国際出願番号】 CN2018103467
(87)【国際公開番号】W WO2019227738
(87)【国際公開日】2019-12-05
【審査請求日】2020-06-29
(31)【優先権主張番号】201810532424.0
(32)【優先日】2018-05-29
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】520476341
【氏名又は名称】北京字節跳動網絡技術有限公司
【氏名又は名称原語表記】Beijing Bytedance Network Technology Co., Ltd.
【住所又は居所原語表記】Room B-0035, 2/F, No.3 Building, No.30, Shixing Road, Shijingshan District Beijing 100041 China
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】▲銀▼ 国徽
【審査官】木村 雅也
(56)【参考文献】
【文献】特開2016-026427(JP,A)
【文献】特表2016-538752(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 29/06
H04N 21/438
(57)【特許請求の範囲】
【請求項1】
ウェブページで解像度を切り替えてメディアファイルを再生する方法であって、
ウェブページに埋め込まれたプレーヤーは、元の解像度のメディアファイルを再生する過程において、解像度切り替えイベントを受信するステップと、
解像度切り替えイベントに応答して、非ストリーミングメディアパッケージフォーマットの切り替え先のターゲット解像度のメディアファイルにおけるメディアデータを要求するステップと、
要求されたメディアデータに基づいて、独立して復号するためのセグメントメディアファイルを構築するステップと、
前記ウェブページのメディアソース拡張インターフェースを介して、メディア要素が前記解像度切り替えイベントの発生時の再生点に連続して再生を行うための前記セグメントメディアファイルを前記ウェブページのメディア要素に送信するステップとを、含
み、
前記ターゲット解像度のメディアファイルにおけるメディアデータは、
前記ターゲット解像度のメディアファイルのメディア情報が示したビデオフレームの時間に基づいて、前記ターゲット解像度のメディアファイルにおける2つのキーフレームを決定し、
前記2つのキーフレームの復号時間は、前記元の解像度のファイルの再生点を接続するための所定時間帯の端点時間であり、
前記メディア情報が示したメディアデータが前記ターゲット解像度のメディアファイルにおける位置に基づいて、前記ターゲット解像度のメディアファイルにおけるメディアデータを要求し、要求されたメディアデータの復号時間は、前記所定時間帯にある、方法。
【請求項2】
前記所定時間帯の時間長は、プレロード時間長以下であり、且つ前記プレロード時間長は、前記ターゲット解像度のメディアファイルの再生時間長未満である、
請求項1に記載の方法。
【請求項3】
要求されたメディアデータに基づいて、独立して復号するためのセグメントメディアファイルを構築するステップは、
前記メディアデータに対応するメタデータを計算するステップと、
計算されたメタデータには、前記メディアデータの復号をサポートするためのメディア情報が含まれる、
計算されたメタデータ、及び前記2つのキーフレームの間のメディアデータを、セグメントメディアファイルのパッケージ構造に充填して、対応するセグメントメディアファイルを得るステップとを、含む、
請求項1に記載の方法。
【請求項4】
前記ウェブページにおけるメディアソース拡張インタフェースを介して、前記セグメントメディアファイルを前記ウェブページのメディア要素に送信するステップは、
構築されたセグメントメディアファイルを前記メディアソース拡張インタフェースにおけるメディアソースオブジェクトに加えるステップと、
前記メディアソースオブジェクトに対応する仮想アドレスを作成するステップと、
前記メディア要素が前記メディアソースオブジェクトをデータソースとして再生するための前記仮想アドレスを前記ウェブページのメディア要素に伝達するステップとを、含む、請求項1に記載の方法。
【請求項5】
前記解像度切り替えイベントを受信した場合に
、セグメント化構築モジュールがターゲット解像度のセグメントメディアファイルの構築を完了して、前記メディアソース拡張インターフェースを介して前記ウェブページのメディア要素に送信するまで、元の解像度のセグメントメディアファイルに基づいて再生し続けるステップ、を含む、
請求項1~
4のいずれか一項に記載の方法。
【請求項6】
ウェブページで解像度を切り替えてメディアファイルを再生する装置であって、
ウェブページに埋め込まれたプレーヤーが元の解像度のメディアファイルを再生する過程において、解像度切り替えイベントを受信するように構成されるイベント受信モジュールと、
前記解像度切り替えイベントに応答して、切り替え先のターゲット解像度のメディアファイルにおけるメディアデータを要求するように構成されるデータ要求モジュールと、
要求されたメディアデータに基づいて、独立して復号するためのセグメントメディアファイルを構築するように構成されるセグメント化構築モジュールと、
前記ウェブページのメディアソース拡張インターフェースを介して、メディア要素が前記解像度切り替えイベントの発生時の再生点に連続して再生を行うための前記セグメントメディアファイルを前記ウェブページのメディア要素に送信するように構成されるメディア再生モジュールとを、備え
、
前記データ要求モジュールは、さらに、前記ターゲット解像度のメディアファイルのメディア情報が示したビデオフレームの時間に基づいて、前記ターゲット解像度のメディアファイルにおける2つのキーフレームを決定するように構成され、
前記2つのキーフレームの復号時間は、前記元の解像度のファイルの再生点を接続するための所定時間帯の端点時間であり、
前記データ要求モジュールは、さらに、前記ターゲット解像度のファイルにおける、前記メディア情報が示したメディアデータの位置に基づいて、前記ターゲット解像度のメディアファイルにおけるメディアデータを要求するように構成され、要求されたメディアデータの復号時間は、前記所定時間帯にある、装置。
【請求項7】
前記所定時間帯の時間長は、プレロード時間長以下であり、且つ前記プレロード時間長は、前記ターゲット解像度のメディアファイルの再生時間長未満である、
請求項
6に記載の装置。
【請求項8】
前記セグメント化構築モジュールは、さらに、前記メディアデータに対応するメタデータを計算するように構成され、計算されたメタデータには、前記メディアデータの復号をサポートするためのメディア情報が含まれる、
セグメント化構築モジュールは、計算されたメタデータ、及び前記2つのキーフレームの間のメディアデータを、セグメントメディアファイルのパッケージ構造に充填して、対応するセグメントメディアファイルを得るように構成される、
請求項
6に記載の装置。
【請求項9】
前記イベント受信モジュールは、さらに、構築されたセグメントメディアファイルをメディアリソース拡張インターフェースにおけるメディアソースオブジェクトに加えるように構成される、
前記イベント受信モジュー
ルは、さらに、前記メディアソースオブジェクトに対応する仮想アドレスを作成するように構成される、
前記イベント受信モジュー
ルは、さらに、前記メディア要素が前記メディアソースオブジェクトをデータソースとして再生するための前記仮想アドレスを前記ウェブページのメディア要素に伝達するように構成される、
請求項
6に記載の装置。
【請求項10】
前記解像度切り替えイベントを受信した場合に、前記セグメント化構築モジュールがターゲット解像度のセグメントメディアファイルの構築を完了して、前記メディアソース拡張インターフェースを介して送信するまで、元の解像度のセグメントメディアファイルに基づいて再生し続ける情報再生モジュールを、さらに備える、
請求項
6~
9のいずれか一項に記載の装置。
【請求項11】
ウェブページで解像度を切り替えてメディアファイルを再生する装置であって、
実行可能な指令を記憶するように構成されるメモリと、
前記実行可能な指令を実行する際に、請求項1~
5のいずれか一項に記載の
方法によって解像度を切り替えてメディアファイルを再生する
ことを実現するように構成されるプロセッサとを、備える
装置。
【請求項12】
実行可能な指令を記憶する記憶媒体であって、
前記実行可能な指令が実行される際に、請求項1~
5のいずれか一項に記載の
方法によってウェブページで解像度を切り替えてメディアファイルを再生する
ことを実現するように構成される
記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の交差引用
本出願は、2018年05月29日付で出願された中国特許出願(出願番号201810532424.0)に基づくものであり、当該中国特許出願の優先権を主張し、その内容の全てをここに参照として取り込む。
【0002】
本開示は、マルチメディア技術に関し、特にウェブページで解像度を切り替えてメディアファイルを再生する方法、装置及び記憶媒体に関する。
【背景技術】
【0003】
エムペグ(MPEG、Moving Picture Experts Group)-4フォーマットは、現在、幅広く使用されている容器フォーマットであり、複数のコーディング方式のビデオデータ及びオーディオデータを記憶できる。
【0004】
ブラウザに埋め込まれたプレーヤーは、ブラウザのハイパーテキストマークアップ言語(HTML、HyperText Markup Language)5メディア要素を用いて再生を行い、プレーヤーがブラウザのウェブページ、又はブラウザカーネルが埋め込まれたアプリケーション(APP、Application)のウェブページを通じてメディアファイルを再生する。しかしながら、関連技術では、ストリーミングメディアファイルの再生サポートのみを提供することができ、ネットワークにおけるMP4ファイルに対して、その自体がストリーミング・メディア・フォーマットではないため、予めフォーマット変換を行っておかなければ、プレーヤーは、ブラウザ又はブラウザカーネルが埋め込まれたAPPによってメディアファイルをストリーミングメディア方式で再生することが実現できないとともに、解像度を切り替えることができない。
【0005】
たとえば、関連技術では、MP4ファイルをストリーミング・メディア・フォーマット、たとえば、FLV(Flash Video)、ハイパーテキスト転送プロトコルライブストリーム(HLS、HTTP Live Streaming)などに変換するものの、ストリーミング・メディア・フォーマットファイルを再生するときに故障が発生する場合にタイムリーにバックトラッキングできるように、コンテンツサービスプロバイダーが元のMP4ファイルを記憶するとともに、MP4ファイル及びトランスコーディングファイルを記憶し、このため、MP4ファイルサービスが占める記憶スペースは倍増して、記憶スペースの配置及びストリーミングメディアサービスの複雑さが大幅に増加してしまう。
【発明の概要】
【発明が解決しようとする課題】
【0006】
これを鑑みて、本開示の実施例は、ウェブページで解像度を切り替えてメディアファイルを再生する方法、装置及び記憶媒体を提供し、ウェブページを通じて非ストリーミング・メディア・フォーマットのメディアファイルを再生することができ、非ストリーミングメディアパッケージフォーマットのファイルは完全にダウンロードしなければ独立して再生することができないという制限を解消する。
【課題を解決するための手段】
【0007】
本開示の実施例は、ウェブページで解像度を切り替えてメディアファイルを再生する方法を提供し、該方法は、
ウェブページに埋め込まれたプレーヤーは、元の解像度のメディアファイルを再生する過程において、解像度切り替えイベントを受信するステップと、解像度切り替えイベントに応答して、非ストリーミングメディアパッケージフォーマットの切り替え先のターゲット解像度のメディアファイルにおけるメディアデータを要求するステップと、
要求されたメディアデータに基づいて、独立して復号するためのセグメントメディアファイルを構築するステップと、前記ウェブページのメディアソース拡張インターフェースを介して、前記メディア要素が前記解像度切り替えイベントの発生時の再生点に連続して再生を行うための前記セグメントメディアファイルを前記ウェブページのメディア要素に送信するステップと、を含む。
【0008】
本開示の実施例は、ウェブページで解像度を切り替えてメディアファイルを再生する装置を提供し、該装置は、
ウェブページに埋め込まれたプレーヤーが元の解像度のメディアファイルを再生する過程において、解像度切り替えイベントを受信するように構成されるイベント受信モジュールと、前記解像度切り替えイベントに応答して、切り替え先のターゲット解像度のメディアファイルにおけるメディアデータを要求するように構成されるデータ要求モジュールと、要求されたメディアデータに基づいて、独立して復号するためのセグメントメディアファイルを構築するように構成されるセグメント化構築モジュールと、前記ウェブページのメディアソース拡張インターフェースを介して、前記メディア要素が前記解像度切り替えイベントの発生時の再生点に連続して再生を行うための前記セグメントメディアファイルを前記ウェブページのメディア要素に送信するように構成されるメディア再生モジュールと、を備える。
【0009】
別の態様によれば、本開示の実施例は、ウェブページにおいて解像度を切り替えてメディアファイルを再生する装置をさらに提供し、該装置は、
実行可能な指令を記憶するためのメモリと、
前記メモリに記憶された実行可能な指令を実行して本開示の実施例によるウェブページで解像度を切り替えてメディアファイルを再生する方法を実現するためのプロセッサと、を備える。
【0010】
別の態様によれば、本開示の実施例は、実行される際に、本開示の実施例によるウェブページで解像度を切り替えてメディアファイルを再生する方法を実現するための実行可能な指令が記憶された記憶媒体をさらに提供する。
【発明の効果】
【0011】
本開示の実施例は、以下のような技術的効果を有する。
【0012】
1)非ストリーミング・メディア・フォーマットのメディアファイルにおけるメディアデータから変換されたセグメントメディアファイルを、ウェブページのメディアソース拡張インターフェースを介して、ウェブページのメディア要素に送信して復号して再生することによって、ウェブページを通じて非ストリーミング・メディア・フォーマットのファイルを再生することを実現し、非ストリーミングメディアパッケージフォーマットのファイルを完全にダウンロードしなければ独立して再生することができないという制限を解消する。
【0013】
2)メディアデータがフロントエンドのプレーヤーでセグメントメディアファイルへの変換を完成し、バックエンドサーバーに対しては異なる解像度のメディアファイルを記憶する必要があり、セグメントメディアファイルは、サーバー側で予め記憶されなくてもよいため、メディアファイルを低記憶スペース占有で再生することが実現された。
【0014】
3)ストリーミングメディア再生をサポートしないメディアファイルをストリーミング・メディア・フォーマットをサポートするセグメントメディアファイルへ変換するように再生することにより、解像度が切り替えられるとき、ターゲット解像度のメディアファイルを改めてダウンロードする必要がないため、画面のシームレスな切り替えを実現し、ブラックスクリーンの現象の発生を回避して、メディアファイルを順調に再生することが実現できる。
【図面の簡単な説明】
【0015】
【
図1】本開示の実施例によるマルチメディアファイルパッケージ用の容器の好ましい構造模式図である。
【
図2】本開示の実施例に係るMP4ファイルの好ましいパッケージ構造模式図である。
【
図3】本開示の実施例に係るメディアファイルにおけるメディアデータ容器に媒体データが記憶された好ましい構造模式図である。
【
図4】本開示の実施例に係るFMP4ファイルの好ましいパッケージ構造模式図である。
【
図5】本開示の実施例に係るウェブページで解像度を切り替えてメディアファイルを再生する装置の好ましい構成模式図である。
【
図6】本開示の実施例に係るウェブページで解像度を切り替えてメディアファイルを再生する装置の好ましい構成模式図である。
【
図7】本開示の実施例によるウェブページで解像度を切り替えてメディアファイルを再生する方法の好ましい模式的なフローチャートである。
【
図8】本開示の例によるセグメントメディアファイルをパッケージする好ましい模式的なフローチャートである。
【
図9】本開示の実施例による、プレーヤーは、ウェブページのメディアソース拡張インターフェースを介してセグメントメディアファイルを再生する好ましい模式図である。
【
図10】本開示の実施例による、MP4ファイルをFMP4ファイルに変換してメディアソース拡張インターフェースを介して再生する模式図である。
【
図11】本開示の実施例による再生制御方法の好ましい模式的なフローチャートである。
【
図12】本開示の実施例による、ウェブページにおいて解像度を切り替えてメディアファイルを再生する方法の好ましい使用場面の模式図である。
【発明を実施するための形態】
【0016】
本開示の目的、技術案及び利点をより明瞭にするために、以下、図面を参照しながら本開示をさらに詳細に説明するが、説明する実施例は、本開示を制限するものではなく、当業者が創造的な努力なしに得られるほかのすべての実施例は、本開示が主張する範囲に属する。
【0017】
特に定義しない限り、本明細書に使用されるすべての技術及び科学用語は、当業者が通常理解する意味と同じである。本明細書に使用される用語は、具体的な実施例を説明するために過ぎず、本開示を制限することを意図しない。
【0018】
本開示をさらに詳細に説明するに先立って、本開示の実施例に係る名詞及び用語を説明し、本開示の実施例に係る名詞及び用語には、以下の解釈が適用できる。
【0019】
1)メディアファイルは、コーディングするメディアデータ(たとえば、オーディオデータ及びビデオデータのうちの少なくとも1種)を容器(Box、コンテナとも呼ばれる)の方式で記憶するファイルであり、メディアデータが正確に復号されるようにメディア情報を表現するためのメタデータをさらに含む。
【0020】
たとえば、エムペグ(MPEG、Moving Picture Experts Group)-4パッケージフォーマットでメディアデータをパッケージして形成されたメディアファイルは、MP4ファイルと呼ばれる。代表例として、MP4ファイルには、アドバンスドビデオコーディング(AVC、Advanced Video Coding、即ちH.264)又はMPEG-4(Part 2)規格でコーディングされたビデオデータ、及びアドバンスドオーディオコーディング(AAC、Advanced Audio Coding)規格でコーディングされたオーディオデータが記憶されているが、ビデオ及びオーディオのほかのコーディング方式を排除しないことが言うまでもない。
【0021】
2)容器(Box)は、ボックスとも呼ばれ、唯一の類別識別子及び長さにより定義されたオブジェクト指向コンポーネントであり、
図1を参照すると、本開示の実施例による容器の好ましい構造模式図であり、容器ヘッダ(Box Header)と容器データ(Box Data)を含み、各種情報を表現するためのバイナリデータが充填されている。
【0022】
容器ヘッダは、サイズ(size)とタイプ(type)を含み、サイズは、メディアファイルにおいて容器が占める長さを示し、タイプは、容器のタイプを示し、
図2を参照すると、本開示の実施例によるMP4ファイルの好ましいパッケージ構造模式図であり、MP4ファイルに係る基本的な容器タイプには、ファイルタイプ容器(ftyp box)、メタデータ容器(moov box)及びメディアデータ容器(mdat box)が含まれる。
【0023】
容器データ部分には、具体的なデータが記憶され、この場合、容器は、「データ容器」と呼ばれ、容器データ部分には、ほかのタイプの容器がさらにパッケージされてもよく、この場合、容器は、「容器の容器」と呼ばれる。
【0024】
3)トラック(Track)は、ストリーム(Stream)、メディアデータ容器において時系列でソートされた関連サンプル(Sample)としても知られており、メディアデータに対して、トラックは、1つのビデオプレーム系列又は1つのオーディオプレーム系列を示し、またビデオプレーム系列と同期した字幕トラックを含んでもよく、同一のトラックにおける一組の連続的なサンプルがチャンク(Chunk)と呼ばれる。
【0025】
4)ファイルタイプ容器は、メディアファイルにおいてファイルのサイズ(即ち、占めるバイトの長さ)及びタイプを記憶するための容器であり、
図2に示すように、ファイルタイプ容器は、「ftyp box」と記載され、その中に記憶されたバイナリデータは、規範的なバイト長でファイルのタイプ及び互換性を記述する。
【0026】
5)メタデータ容器は、メディアファイルにおいてメタデータ(即ち、メディアデータ容器に記憶されるマルチメディアデータを記述するデータ)を記憶する容器であり、MP4ファイルにおけるメタデータ容器に記憶されるバイナリデータにより表現される情報は、メディア情報と呼ばれる。
【0027】
図2に示すように、メタデータ容器のヘッダにバイナリデータが使用され、容器のタイプが「moov box」であることを示し、容器データの部分は、MP4ファイルの全体情報を記憶するためのmvhd容器をパッケージし、MP4ファイルから独立したものであり、且つMP4ファイルの再生に関連し、時間長、作成時間や変更時間などを含む。
【0028】
メディアファイルのメディアデータ容器には、複数のトラックに対応するサブ容器、たとえばオーディオトラック容器(audio track box)及びビデオトラック容器(video track box)が含まれてもよく、オーディオトラック容器及びビデオトラック容器のサブ容器のいずれにも、対応するトラックのメディアデータの引用及び記述が含まれており、必要なサブ容器は、トラックの特性及び全体情報(たとえば、時間長、幅・高さ)を記述するための容器(tkhd boxと記載する)、トラックのメディア情報(たとえば、メディアタイプ及びサンプルの情報)を記録する容器(mdia boxと記載する)が含まれる。
【0029】
mdia boxにパッケージされるサブ容器に対して、トラックの関連属性及び内容を記録する容器(mdhd boxと記載する)、メディアの再生過程情報を記録する容器(hdlr boxと記載する)、トラックにおけるメディアデータのメディア情報を記述する容器(minf boxと記載する)を含むことができ、minf boxにはメディア情報をどのように特定するかを解釈するためのサブ容器(dinf boxと記載する)、及びトラックにおけるサンプルのすべての時間情報(復号時間/表示時間)、位置情報及びコード・復号などの情報を記録するためのサブ容器(stbl boxと記載する)がさらにパッケージされている。
【0030】
図3を参照すると、本開示の実施例によるメディアファイルにおけるメディアデータ容器に媒体データが記憶される構造模式図であり、stbl boxの中のバイナリデータから識別されたメディア情報によって、サンプルの時間、タイプ、サイズ及びメディアデータ容器における位置を解釈でき、以下、stbl boxにおける各サブ容器について説明する。
【0031】
stsd boxは、1つのサンプル記述(sample description)テーブルを含み、さまざまなコーディング手法及びデータを記憶するファイルの数に応じて、各メディアファイルには、1つ又は複数の記述テーブルを有し、記述テーブルを通じて各サンプルの記述情報を検索でき、記述情報は、サンプルが正確に復号されることを確保し、メディアタイプごとに異なる記述情報が記憶され、たとえば、ビデオメディアの場合は、記述情報が画像の構造である。
【0032】
stts boxは、サンプルの時間長情報を記憶するとともに、時間(復号時間)とサンプルの番号をマッピングするテーブルを提供し、sttx boxによって、メディアファイルにおけるいずれの時間でのサンプルを特定することができ、stts boxには、サンプルのサイズとポインタをマッピングするために、ほかのテーブルが使用され、テーブルにおける各エントリーは、同一の時間オフセット量での連続したサンプルの番号、及びサンプルのオフセット量を提供し、これらのオフセット量がインクリメントすると、完全な時間-サンプルのマッピングテーブルを作成することができ、計算式は、以下のとおりである。
【0033】
DT(n+1)=DT(n)+STTS(n) (1)
【0034】
ただし、STTS(n)は、n番目のサンプルの時間長であり、DT(n)は、n番目のサンプルの表示時間であり、サンプルは、時系列でソートされ、このようにして、オフセット量が常に負ではなく、DTは、一般に、0から始まり、i番目のサンプルの表示時間DT(i)を例として、計算式は、以下のとおりである。
【0035】
DT(i)=SUM(forj=0toi-1ofdelta(j)) (2)
【0036】
すべてのオフセット量の合計は、トラックにおけるメディアデータの時間長となる。
【0037】
stss boxには、メディアファイルにおけるキーフレームの番号が記録されている。
【0038】
sts boxには、サンプルとサンプルを記憶するチャンクとのマッピング関係が記録されており、テーブルを通じてサンプルの番号とチャンクの番号との関係がマッピングされているため、テーブルを検索することにより指定されたサンプルを含むチャンクを特定できる。
【0039】
stco boxは、トラックにおける各チャンクの位置を定義し、位置は、メディアデータ容器の開始バイトでのオフセット量及び前記開始バイトに対する長さ(即ちサイズ)で示される。
【0040】
stsz boxには、メディアファイルにおける各サンプルのサイズ(即ち大きさ)が記録されている。
【0041】
6)メディアデータ容器は、メディアファイルにおいてマルチメディアデータを記憶するための容器であり、たとえば、MP4ファイルにおけるメディアデータ容器の場合、
図3に示すように、サンプルは、メディアデータ容器に記憶される単位であり、メディアファイルのチャンクに記憶され、チャンク及びサンプルの長さが異なってもよい。
【0042】
7)セグメントメディアファイルは、メディアファイルが分割によって形成されたサブファイルであり、各セグメントメディアファイルが独立して復号されることができる。
【0043】
MP4ファイルを例として、MP4ファイルにおけるメディアデータがキーフレームに応じて分割され、分割後のメディアデータが対応するメタデータとパッケージされてセグメント化MP4(FMP4、Fragmented MP4)ファイルを構成し、各々のFMP4ファイルにおけるメタデータによって、メディアデータが正確に復号されることを確保することができる。
【0044】
たとえば、
図2に示すようなMP4ファイルを複数のFMP4ファイルに変換する場合、
図4を参照すると、本開示の実施例によるFMP4ファイルの好ましいパッケージ構造模式図である。1つのMP4ファイルは、複数のFMP4ファイルに変換されることが可能であり、各FMP4ファイルは、moov容器、moof容器及びmdat容器という3つの基本的な容器を含む。
【0045】
moov容器は、FMP4ファイル由来のMP4ファイルにおけるすべてのメディアデータ、たとえばMP4ファイルの時間長、作成時間や変更時間などを記述するためのMP4ファイルレベルのメタデータを含む。
【0046】
moof容器にセグメント化レベルのメタデータが記憶されて、FMP4ファイルにパッケージされたメディアデータを記述して、FMP4におけるメディアデータが復号されるように確保するために用いられる。
【0047】
1つのmoof容器と1つのmdat容器によりセグメント化MP4ファイルの1つのセグメントを構成し、1つのセグメント化MP4ファイルには、このようなセグメントが1つ以上含まれてもよく、各セグメントにパッケージされたメタデータによって、セグメントにパッケージされたメディアデータが独立して復号されることができることを確保する。
【0048】
8)メディアリソース拡張(MSE、Media Source Extensions)インターフェースは、ウェブページで実現されたプレーヤー指向インターフェースであり、ウェブページにおいてロードする間に、ブラウザのパーサーによりフロントエンドプログラミング言語(たとえばJavaScript)を解釈して実行することにより実現され、ハイパーテキストマークアップ言語(HTML)メディア要素(Media Element)を呼び出してメディアストリームを再生する機能をプレーヤーに提供し、たとえば、ビデオ要素<video>、及びオーディオ要素<audio>を用いてビデオ/オーディオの再生機能を実現する。
【0049】
9)ストリーミング・メディア・フォーマットは、メディアデータをストリーミングメディアメディアファイルとしてパッケージし、メディアファイルが完全なダウンロード、付加的なトランスコーディングを必要とせずに復号して再生されることができ、即ち、ダウンロードしながら再生することをネイティブにサポートするパッケージ技術である。代表的なストリーミング・メディア・フォーマットのファイルとしては、HTTPライブストリーム(HLS、HTTP Live Streaming)技術に基づくTSメディアファイル断片、FLV(Flash Video)ファイルなどが含まれる。
【0050】
10)非ストリーミング・メディア・フォーマットは、メディアデータをメディアファイルとしてパッケージし、且つ完全にダウンロードしなければメディアファイルが復号して再生されることができないパッケージ技術であり、代表的な非ストリーミング・メディア・フォーマットのファイルとしては、MP4ファイル、ウィンドウズ(登録商標)メディアビデオ(WMV、Windows Media Video)ファイル、アドバンスドストリーミングフォーマット(ASF、Advanced Streaming Format)ファイルなどが含まれる。
【0051】
なお、MP4ファイルは、ストリーミングメディア形式の再生をネイティブにサポートしないが、オンライントランスコーディング後にプレーヤーによるトランスコーディングのメディアストリーム、又は部分的にダウンロードされたMP4ファイルの不足部分へ無効なバイナリデータを充填すること(たとえば、ftyp容器及びmoov容器が完全にダウンロードされた場合、mdat容器の不足部分への充填を無効なバイナリデータで代替する)によって、ダウンロードしながら再生するような技術的な効果を実現することができ、本明細書では、このようなストリーミングメディア再生をネイティブにサポートしないファイルのパッケージフォーマットをすべて非ストリーミング・メディア・フォーマットと呼ばれる。
【0052】
まず、本開示を実現する実施例のウェブページで解像度を切り替えてメディアファイルを再生する装置について説明する。ウェブページで解像度を切り替えてメディアファイルを再生する装置は、ハードウェア、ソフトウェア又はソフトウェアとハードウェアの組み合わせの形態として提供可能である。
【0053】
以下、ウェブページで解像度を切り替えてメディアファイルを再生する装置のソフトウェアとハードウェアの組み合わせの実施について説明し、
図5を参照して、
図5は、本開示の実施例によるウェブページで解像度を切り替えてメディアファイルを再生する装置の好ましい構成模式図である。ウェブページで解像度を切り替えてメディアファイルを再生する装置500は、ビデオ再生機能を有する携帯電話、コンピュータ、ノードパソコン、タブレット機器、パーソナルデジタルアシスタントなどを備えてもよい。
図5に示したウェブページで解像度を切り替えてメディアファイルを再生する装置500は、少なくとも1つのプロセッサ501、メモリ502、少なくとも1つのネットワークインターフェース504及びユーザーインターフェース503を備える。ウェブページで解像度を切り替えてメディアファイルを再生する装置500における各ユニットは、バスシステム505を介して結合される。なお、バスシステム505は、これらのユニットの間の通信可能な接続に用いられる。バスシステム505は、データバスのほか、電源バス、制御バス及び状態信号バスを含む。明確に説明するために、
図5では、すべてのバスは、バスシステム505として示されている。
【0054】
ユーザーインターフェース503は、モニター、キーボード、マウス、トラックボール、クリックホイール、キー、ボタン、タッチパネル又はタッチスクリーンなどを含み得る。
【0055】
なお、メモリ502は、揮発性メモリ又は非揮発性メモリであってもよく、揮発性メモリ及び非揮発性メモリの両方を含んでもよい。そのうち、非揮発性メモリは、読み取り専用メモリ(ROM、Read Only Memory)、プログラマブル読み取り専用メモリ(PROM、Programmable Read-Only Memory)、消去可能なプログラマブル読み取り専用メモリ(EPROM、Erasable Programmable Read-Only Memory)、電気消去可能なプログラマブル読み取り専用メモリ(EEPROM、Electrically Erasable Programmable Read-Only Memory)であってもよく、磁気表面メモリは、磁気ディスクメモリ又は磁気テープメモリであってもよい。揮発性メモリは、外部キャッシュとして使用されているランダムアクセスメモリ(RAM、Random Access Memory)であってもよい。限定的ではない例として、たとえば、スタティックランダムアクセスメモリ(SRAM、Static Random Access Memory)、同期スタティックランダムアクセスメモリ(SSRAM、Synchronous Static Random Access Memory)、ダイナミックランダムアクセスメモリ(DRAM、Dynamic Random Access Memory)、同期ダイナミックランダムアクセスメモリ(SDRAM、Synchronous Dynamic Random Access Memory)など、多数の形態のRAMが利用可能である。本開示の実施例に記載のメモリ502は、これらのメモリ及びほかの任意の適切なタイプのメモリを含むものを意味する。
【0056】
本開示の実施例におけるメモリ502は、三値連想メモリ、スタティックランダムアクセスメモリを含むが、これらに制限されず、ウェブページで解像度を切り替えてメディアファイルを再生する装置500の操作をサポートするように、サーバーから取得されたメディアファイルデータを記憶することができる。これらデータの例には、ウェブページで解像度を切り替えてメディアファイルを再生する装置500で運転可能な任意のコンピュータプログラム、たとえば、オペレーティングシステム5021、及びアプリケーション5022、様々なタイプのメディアファイルデータ情報などが含まれる。オペレーティングシステム5021は、さまざまな基本的なサービスの実現及びハードウェアに基づくタスクの処理のために、さまざまなシステムプログラム、たとえば、フレームワーク層、コアライブラリ層、ドライブ層などを含む。アプリケーション5022は、さまざまなアプリケーション、たとえば、ウェブページで解像度を切り替えてメディアファイルを再生する機能を有するクライアント、又はアプリケーションなどを含んでもよい。本開示の実施例のウェブページで解像度を切り替えてメディアファイルを再生する方法を実現するプログラムは、アプリケーション5022に含まれ得る。
【0057】
上記本開示の実施例で開示されている方法は、プロセッサ501によって実現される。プロセッサ501は、信号処理能力を有する集積回路チップであってもよい。実現する過程において、本開示の実施例によるウェブページで解像度を切り替えてメディアファイルを再生する方法は、プロセッサ501におけるハードウェアの集積ロジック回路又はソフトウェアの形態の操作によって実施できる。上記プロセッサ501は、汎用プロセッサ、デジタル信号プロセッサ(DSP、Digital Signal Processor)、又はほかのプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジックデバイス、ディスクリートハードウェアユニットなどであってもよい。プロセッサ501は、本開示の実施例による各方法、ステップ及びロジックブロック図を実現又は実行できる。汎用プロセッサは、マイクロプロセッサ又は任意の一般的なプロセッサなどであってもよい。本開示の実施例による方法のステップと組み合わせると、ハードウェア復号プロセッサにより実行して完成してもよく、復号プロセッサにおけるハードウェア及びソフトウェアモジュールの組み合わせによって実行して完成してもよいように直接に表すことができる。ソフトウェアモジュールは、記憶媒体に位置されることができ、当該記憶媒体は、メモリ502に位置され、プロセッサ501は、メモリ502における情報を読み取り、そのハードウェアと組み合わせてウェブページで解像度を切り替えてメディアファイルを再生する方法を完成する。
【0058】
例示的な実施例では、本開示の実施例は、コンピュータ読み取り可能な記憶媒体をさらに提供し、たとえばコンピュータプログラムを含めるメモリ502である。ウェブページにおいて解像度を切り替えてメディアファイルを再生する方法を完成するように、上記コンピュータプログラムは、ウェブページで解像度を切り替えてメディアファイルを再生する装置500のプロセッサ501によって実行されることができる。コンピュータ読み取り可能な記憶媒体は、FRAM(登録商標)、ROM、PROM、EPROM、EEPROM、Flash Memory、磁気表面メモリ、光ディスク、又はCD-ROMなどのメモリであってよく、上記メモリのうちの1つ又は任意の組み合わせを含む各種機器、たとえば携帯電話、コンピュータ、タブレット機器、パーソナルデジタルアシスタントなどであってもよい。
【0059】
以下、ウェブページで解像度を切り替えてメディアファイルを再生する装置の純粋なハードウェアの実施を説明し、本開示を実現する実施例のウェブページで解像度を切り替えてメディアファイルを再生する装置は、1つ以上の特定用途向け集積回路(ASIC、Application Specific Integrated Circuit)、DSP、プログラマブルロジックデバイス(PLD、Programmable Logic Device)、コンプレックプログラマブルロジックデバイス(CPLD、Complex Programmable Logic Device)、フィールドプログラマブルゲートアレイ(FPGA、Field-Programmable Gate Array)又はほかの電子素子によって実現されることができ、本開示の実施例によるウェブページにおいて解像度を切り替えてメディアファイルを再生する方法を実行して実現することに用いられる。
【0060】
以下、ウェブページで解像度を切り替えてメディアファイルを再生する装置の純粋なソフトウェアの実施を説明し、本開示の実施例のウェブページにおいて解像度を切り替えてメディアファイルを再生する装置は、アプリケーション又はプラグイン、又は両方を組み合わせた形態によって実現されることができる。
【0061】
一例として、アプリケーションは、ウェブページで解像度を切り替えてメディアファイルを再生するために専用のクライアントであってよく、ウェブページで解像度を切り替えてメディアファイルを再生する機能をオプション機能としたクライアントであってもよく、対応するプラグインをインストールすることにより実現される。
【0062】
一例として、プラグインは、アプリケーションの機能アップグレードインストールパッケージであり、メディア再生用のアプリケーションにウェブページで解像度を切り替えてメディアファイルを再生する機能を追加するものであってよく、メディアを再生するウェブページにおける要素であってもよく、フロントエンド言語により実現され、ブラウザによって直接解釈して実行されることによりウェブページにおいてウェブページで解像度を切り替えてメディアファイルを再生する、及びメディアを再生する機能を実現する。
【0063】
ウェブページで解像度を切り替えてメディアファイルを再生する装置のハードウェアによる実施又はソフトウェアによる実施の例として、ウェブページで解像度を切り替えてメディアファイルを再生する装置は、信号/情報/データのレベルで結合関係を有する一連のモジュールとして提供されることができ、以下、
図6を参照しながら説明する。
図6を参照して、
図6は、本開示の実施例のウェブページにおいて解像度を切り替えてメディアファイルを再生する装置の好ましい構成模式図であり、ウェブページで解像度を切り替えてメディアファイルを再生することを実現する装置に含まれる一連のモジュールが示されているが、ウェブページで解像度を切り替えてメディアファイルを再生する装置のモジュール構造は、
図6に示されるものに制限されず、たとえば、これらのモジュールを、実現する機能に応じてさらに分割又は結合することができる。以下、
図6に示したモジュールにより実現される機能について説明する。
【0064】
イベント受信モジュール601は、ウェブページに埋め込まれたプレーヤーが元の解像度のメディアファイルを再生する過程において、解像度切り替えイベントを受信するように構成される。
【0065】
データ要求モジュール602は、解像度切り替えイベントに応答して、切り替え先のターゲット解像度のメディアファイルにおけるメディアデータを要求するように構成される。
【0066】
前記データ要求モジュール602は、前記ターゲット解像度のメディアファイルのメディア情報が示したビデオフレームの時間に基づいて、前記ターゲット解像度のメディアファイルにおける2つのキーフレームを決定するように構成される。前記2つのキーフレームの復号時間は、前記元の解像度のファイルの再生点を接続するための所定時間帯の端点時間である。前記データ要求モジュール602は、前記ターゲット解像度のファイルにおける、前記メディア情報が示したメディアデータの位置に基づいて、前記ターゲット解像度のメディアファイルにおけるメディアデータを要求するように構成され、要求されたメディアデータの復号時間は、前記所定時間帯にある。
【0067】
セグメント化構築モジュール603は、要求されたメディアデータに基づいて、独立して復号するためのセグメントメディアファイルを構築するように構成される。
【0068】
メディア再生モジュール604は、前記ウェブページのメディアソース拡張インターフェースを介して、前記メディア要素が前記解像度切り替えイベントの発生時の再生点に連続して再生を行うための前記セグメントメディアファイルを前記ウェブページのメディア要素に送信するように構成される。
【0069】
前記所定時間帯の時間長は、プレロード時間長以下であり、且つ前記プレロード時間長は、前記ターゲット解像度のメディアファイルの再生時間長未満である。
【0070】
いくつかの実施例では、前記セグメント化構築モジュール603は、前記メディアデータに対応するメタデータを計算するように構成され、計算されたメタデータには、前記メディアデータの復号をサポートするためのメディア情報が含まれる。セグメント化構築モジュールは、計算されたメタデータ、及び前記2つのキーフレームの間のメディアデータを、セグメントメディアファイルのパッケージ構造に充填して、対応するセグメントメディアファイルを得るように構成される。
【0071】
いくつかの実施例では、前記イベント受信モジュール601は、構築されたセグメントメディアファイルをメディアリソース拡張インターフェースにおけるメディアソースオブジェクトに加えるように構成される。前記イベント受信モジュール601は、前記メディアソースオブジェクトに対応する仮想アドレスを作成するように構成される。前記イベント受信モジュール601は、前記メディア要素が前記メディアソースオブジェクトをデータソースとして再生するための前記仮想アドレスを前記ウェブページのメディア要素に伝達するように構成される。
【0072】
いくつかの実施例では、前記メディア再生モジュール604は、さらに、前記解像度切り替えイベントを受信した場合に、前記セグメント化構築モジュールがターゲット解像度のセグメントメディアファイルの構築を完了してメディア再生モジュール604により前記メディアソース拡張インターフェースを介して送信するまで、元の解像度のセグメントメディアファイルに基づいて再生し続けるように構成される。これによって、解像度を切り替えるとき、プレーヤーは、元の解像度に基づくセグメントメディアファイルを再生し続けることができ、解像度の切り替えによるウェブページで解像度を切り替えてメディアファイルを再生するときのラグや画面のロスを回避し、ユーザーエクスペリエンスを向上させる。
【0073】
いくつかの実施例では、プレーヤーは、解像度切り替えイベントに応じて、切り替え先のターゲット解像度のメディアファイルにおけるメディアデータを要求し、要求されたメディアデータに基づいて、独立して復号できる対応するセグメントメディアファイルを構築する。
図7を参照して、
図7は、本開示の実施例によるウェブページで解像度を切り替えてメディアファイルを再生する方法の好ましい模式的なフローチャートであり、
図7に示されたステップを参照しながら説明する。
【0074】
以下に記載のいくつかの例では、メディアファイルがMPEG-4である場合を例として説明し、MPEG-4の実施に基づいて、ほかの非ストリーミング・メディア・フォーマットの実施を容易に予測することができる。
【0075】
ステップ701、ウェブページに埋め込まれたプレーヤーが元の解像度のメディアファイルを再生する過程において、解像度切り替えイベントを受信する。
【0076】
ステップ702、プレーヤーが解像度切り替えイベントに応答して、切り替え先のターゲット解像度のメディアファイルにおけるメディアデータを要求する。前記元の解像度のメディアファイル及び前記ターゲット解像度のメディアファイルには、非ストリーミングメディアパッケージフォーマットが用いられる。
【0077】
プレーヤーは、メディアファイルにおけるメディアデータに対するネットワーク要求をサーバーに送信する。
【0078】
いくつかの実施例では、プレーヤーは、以下のようにメディアファイルにおけるメディアデータに対するネットワーク要求をサーバーに送信し得る。
【0079】
メディアファイルの再生過程におけるリアルタイムな再生点に基づいて、再生対象のメディアファイルにおける2つのキーフレームを決定する。メディアファイルにおける前記2つのキーフレームの間のメディアデータを取得することを要求するためのネットワーク要求をサーバーに送信する。
【0080】
再生点に基づいて2つのキーフレームを決定することについて説明する。プレーヤーは、メディアファイルを再生する過程において、キーフレームの間のデータをロードすることによりメディアファイルの再生を実現し、即ち、プレーヤーは、2つのキーフレームの間のメディアデータを再生ロードユニットとする。再生点については、メディアファイルを連続再生する(即ち、ユーザーが介入することなく自然に再生する)方式で到達した再生時刻であってよく、たとえば、30分から40分までの再生点であり、スキップ方式(即ち、ユーザーがカーソルでプログレスバーをクリックすることでページをスキップする)でメディアファイルが到達した再生時刻に到達してもよく、たとえば、元の再生点が再生進行状況の20%であり、スキップ後の再生点が再生進行状況の30%になる。
【0081】
実際の用途では、再生点に基づいて決定された2つのキーフレームは、メディアファイルにおいて隣接する2つのキーフレームであってもよく、又は2つのキーフレームの間にほかの1つ以上のキーフレームが存在してもよく、2つのキーフレームの間のキーフレームの数は、ブラウザのキャッシュ性能(たとえば、利用可能なキャッシュサイズ)、ネットワーク性能(ネットワーク帯域幅)などによって決定することができ、また、実際な必要に応じて設定してもよい。
【0082】
いくつかの実施例では、再生点がメディアファイルを連続再生する方式で到達した再生時刻である場合に対して、再生点に対応するビデオフレームが通常フレーム又はキーフレームである場合に基づいて、2つのキーフレーム(第1キーフレーム、及び復号時間が第1キーフレーム以降の第2キーフレームとして設定する)を決定する方式を説明する。
【0083】
1)再生点に対応するビデオフレームが通常フレームである場合、プレーヤーが2つのキーフレームの間のメディアデータを基本的な再生ロード単位とするため、再生点後且つ再生点後の最初のキーフレーム(復号時間が再生点よりも遅いキーフレームのうち、再生点に最も近いキーフレーム)の前のメディアデータがロード済みのメディアデータであり、当該ロード済みのメディアデータを繰り返して取得することを回避するために、所定時間帯の2つのキーフレームのうちの第1キーフレームを、メディアファイルにおいて復号時間が再生点以降の最初のキーフレームとし、2つのキーフレームのうちの第2キーフレームを、メディアファイルにおいて復号時間が第1キーフレームよりも遅いキーフレームとする。
【0084】
2)再生点に対応するビデオフレームがキーフレームである場合、2つのキーフレームのうちの第1キーフレームを、再生点に対応するキーフレーム、即ち、再生点の時間に合わせたキーフレームとし、2つのキーフレームのうちの第2キーフレームを、メディアファイルにおいて復号時間が第1キーフレームよりも遅いキーフレームとする。
【0085】
上記1)では、再生点にまたがったキーフレームをメディアデータの端点とすることによって、再生点に対応するビデオフレームには正確に復号するために十分な情報を有することを確保することができ、復号データ(即ちキーフレーム)の不足によるフレームスキップが発生しない。
【0086】
別の実施例では、再生点がスキップ方式で到達した再生時刻である場合に対して、再生点に対応するビデオフレームが通常フレーム又はキーフレームであることに基づいて、2つのキーフレーム(第1キーフレーム、及び復号時間が第1キーフレーム以降の第2キーフレームとして設定する)を決定する方式を説明する。
【0087】
1)再生点に対応するビデオフレームが通常フレームである場合、再生点がスキップにより到達するため、再生点前の最初のキーフレームと再生点との間のメディアデータがロードされておらず、第1キーフレームを、メディアファイルにおいて復号時間が再生点前の最初のキーフレーム、即ち、メディアデータの時間(即ち、メディア情報が示した番号とフレームの復号時間との対応関係)の中から検索された復号時間が所定時間帯の開始時間よりも早く。且つ開始時間に最も近いキーフレームとする。2つのキーフレームのうちの第2キーフレームを、メディアファイルにおいて復号時間が第1キーフレームよりも遅いキーフレームとする。再生点から再生点前のキーフレームまでの間のメディアデータを追加的に要求することにより、いずれの再生点にスキップしても正常に復号できることを確保し、再生点が通常フレームに対応する場合に復号できないことによってフレームスキップが発生することを防止する。
【0088】
2) 再生点に対応するビデオフレームがキーフレームである場合、第1キーフレームを、再生点に対応するキーフレーム、即ち、メディアデータの時間(即ち、メディア情報が示した番号とフレームの復号時間との対応関係)の中から検索された復号時間が再生点の時間に合わせたキーフレームとする。2つのキーフレームのうちの第2キーフレームを、メディアファイルにおいて復号時間が第1キーフレームよりも遅いキーフレームとする。
【0089】
上記1)では、再生点にまたがったキーフレームをメディアデータの端点とすることによって、再生点に対応するビデオフレームには正確に復号するために十分な情報を有することを確保することができ、復号データ(即ちキーフレーム)の不足によるフレームスキップが発生しない。
【0090】
2)では、再生点に合わせたキーフレームにより取得対象のメディアデータを特定することによって、再生点が正確に復号できることを前提として、不要なメディアデータを取得する状況を最大限に減少させ、接続及びトラフィックの占有を減少させ、さらにウェブページにおける非メディア再生サービスのリアルタイム性を確保する。
【0091】
いくつかの実施例では、サーバーが前記オフセット量から始まり且つ前記サイズに合致するメディアデータをメディアファイルから抽出してプレーヤーへ返すように、プレーヤーによりサーバーに送信されたネットワーク要求には、要求される2つのキーフレームの間のメディアデータのオフセット量及びサイズが運ばれた。このため、プレーヤーがネットワーク要求を送信する前に、メディアファイルのメタデータから識別されたメディア情報(即ちビデオ/オーディオフレームの位置、オフセット量、復号時間などの情報)に基づいて、メディアファイルにおけるメディアデータのオフセット量及びサイズを決定する必要がある。オフセット量及びサイズを決定する前にまずメディアファイルのメタデータからメディア情報を識別する必要がある。
【0092】
次に、プレーヤーがメディア情報を識別することについて説明する。いくつかの実施例では、プレーヤーは、以下のようにメディアファイルからメディア情報を識別し得る。設定されたオフセット量及びサイズに基づいて、設定されたオフセット量及びサイズに対応するメディアファイル中のデータをサーバーへ要求し(即ち固定サイズのデータを要求する)、サーバーから返信されたデータからメタデータ容器におけるメタデータを識別し、識別されたメタデータを解析して、メディアファイルのメディアデータ容器にパッケージされたメディアデータを記述するためのメディア情報を得る。
【0093】
設定されたサイズは、既存のメディアファイルのファイルタイプ容器及びメタデータ容器のサイズに基づいて統計して取得することができ、設定されたサイズに所定割合(たとえば全部)のメディアファイルのファイルタイプ容器とメタデータ容器のサイズの合計をカバーさせることができる。これによって、メディアファイルのパッケージ構造が順次パッケージされるファイルタイプ容器、メタデータ容器及びメディアデータ容器である場合、完全なメタデータ容器にパッケージされたメタデータが一回の要求により得られることができ、ネットワーク転送時に接続の占有状況を減少させ、さらに接続の占有によりウェブページにおける非メディア再生サービスが接続を使用できず応答が遅れることを回避する。
【0094】
メディアファイルがMP4ファイルである場合を例として、プレーヤーが取得したメタデータ容器にパッケージされたメタデータは、MP4ファイルにおけるmoov boxにパッケージされたバイナリデータであり、MP4ファイルのパッケージ構造が順次パッケージされるfytp box、moov box及びmdat boxである場合、設定サイズは、既存のMP4ファイルのftyp boxとmoov boxのサイズに基づいて統計して取得することができる。設定サイズを、所定割合(たとえば全部)のMP4ファイルのftyp boxとmoov boxのバイナリデータの合計をカバーさせることができ、多くの場合、一回でサーバーからmoov boxに含まれる完全なバイナリデータを取得することができることを確保する。
【0095】
いくつかの実施例では、プレーヤーが設定されたオフセット量及びサイズによってサーバーから要求したバイナリデータのうち、ゼロバイトからの一部のバイナリデータは、ファイルタイプ容器に対応する。プレーヤーは、容器ヘッダを読み取ることによってファイルタイプ容器のサイズを得て、二番目の容器のヘッダを読み取ることによって次の容器のタイプ及びサイズを取得する。二番目の容器のタイプがメタデータ容器であり、且つ返信されたバイナリデータのサイズがファイルタイプ容器のサイズとメタデータ容器のサイズの合計以上である場合、設定されたオフセット量及びサイズによってサーバーから要求されたバイナリデータに、メタデータ容器にパッケージされたメタデータが含まれていることを示している。二番目の容器のタイプがメタデータ容器であり且つ返信されたバイナリデータのサイズがファイルタイプ容器のサイズとメタデータ容器のサイズの合計未満である場合、設定されたオフセット量及びサイズによってサーバーから要求されたバイナリデータに、メタデータ容器にパッケージされたメタデータが含まれていないことを示している。プレーヤーが設定されたオフセット量及びサイズによってサーバーから要求されたバイナリデータに、完全なメタデータ容器におけるメタデータが含まれていない場合、プレーヤーは、サーバーから返信されたバイナリデータから容器のサイズを読み取り、メタデータ容器のヘッダに基づいてメタデータ容器のオフセット量及びサイズを計算して、計算されたオフセット量及びサイズをネットワーク要求に運んでサーバーへメタデータを要求するサイズ。サーバーは、要求に応じてメディアファイルにおいて算出されたオフセット量からバイナリデータを読み取り、且つ読み取られたバイナリデータが算出されたサイズに合致し、プレーヤーへデータを返信する必要がある。
【0096】
例を挙げて説明すると、プレーヤーは、サーバーから返信されたバイナリデータから容器のサイズを読み取り、メタデータ容器のヘッダに基づいてメタデータ容器のオフセット量及びサイズを計算し、以下のような2種の状況がある。
【0097】
1)残りのバイナリデータ(即ち、返信されたバイナリデータのうちファイルタイプ容器のバイナリデータ以外のデータ)から読み取られた容器のタイプがメタデータ容器であり、且つ残りのバイナリデータのサイズがメタデータ容器のサイズ未満である場合、メタデータ容器のサイズと残りのバイナリデータサイズとの差を計算して再要求の新しいサイズとし、初回に要求されたオフセット量とサイズの合計を新しいオフセット量として、サーバーへバイナリデータを再要求する。
【0098】
2)残りのバイナリデータから読み取られた容器のタイプがメディアデータ容器である場合、メディアデータ容器のサイズとファイルタイプ容器のサイズとの合計を計算して再要求の新しいオフセット量とし、設定されたサイズ(メタデータ容器のサイズをカバーできる経験値であってもよい)でサーバーへバイナリデータを再要求する。
【0099】
メディアファイルがMP4ファイルである場合を例として、プレーヤーは、設定されたオフセット量及びサイズによってサーバーから要求されたバイナリデータに、完全なmoov boxのバイナリデータが含まれておらず、この場合、プレーヤーは、サーバーから返信されたバイナリデータから容器のタイプ及びサイズを読み取り、MP4ファイルにおけるmoov boxのオフセット量及びサイズを決定する必要がある。
【0100】
MP4ファイルのバイナリデータでは、最初のバイトが常にftyp boxに対応し、返信されたバイナリデータからfytp boxのバイナリデータを識別し、ftyp boxのヘッダに基づいてその長さを把握して、残りのバイナリデータから、ヘッダの標準長さによって次のboxのバイナリデータを読み取る。ヘッダが示した容器タイプによっては、以下の複数の状況がある。
【0101】
1)残りのバイナリデータ(即ち、返信されたバイナリデータのうち、fytp boxのバイナリデータ以外のデータ)から読み取られた容器のタイプがmoov boxであり、且つ残りのバイナリデータのサイズがmoov boxのサイズ以上である場合、決定されたオフセット量及びサイズに基づいて、MP4ファイルにおいてMP4ファイルにおけるmoov boxのオフセット量から始まり且つMP4ファイルにおけるmoov boxのサイズに合致するmoovデータをサーバーから取得する。
【0102】
2)残りのバイナリデータから読み取られた容器のタイプがmoov boxであり、且つ残りのバイナリデータのサイズがmoov boxのサイズ未満である場合、moov boxのサイズと残りのバイナリデータのサイズとの差を計算して再要求の新しいサイズとし、最初に要求されたオフセット量とサイズとの合計を再要求の新しいオフセット量として、サーバーへバイナリデータを再要求する。
【0103】
3)残りのバイナリデータから読み取られた容器のタイプがmdat boxである場合、mdat boxのサイズとftyp boxサイズとの合計を計算して再要求の新しいオフセット量とし、設定されたサイズでサーバーへバイナリデータを再要求する。
【0104】
このように、メディアファイルのパッケージ構造、つまり、メディアファイルにおけるファイルタイプ容器、メタデータ容器及びメディアデータ容器のパッケージ順番にかかわらず、プレーヤーが多くとも2回の要求によってサーバーからメタデータ容器におけるメタデータを得ることを確保することができ、メタデータの取得効率を向上させる。
【0105】
例を挙げて説明すると、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におけるメタデータが抽出され得る。
【0106】
プレーヤーは、サーバーからメタデータ容器にパッケージされたメタデータを取得した後、メタデータ容器におけるサブ容器のネスト構造を解析し、サブ容器のネスト構造に基づいて各サブ容器におけるバイナリデータを読み取り、読み取られたバイナリデータから各サブ容器が表したメディアデータのメディア情報を解析によって取得する。実際の用途では、メディア情報には、メディアファイルにおけるビデオフレーム及び/又はオーディオフレームのオフセット量、サイズ、復号時間などの情報が含まれ得る。
【0107】
メディアファイルがMP4ファイルである場合を例として、メタデータ容器は、moov boxであり、
図2から分かるように、moov boxには、mvhd box及びtrack boxがパッケージされており、mvhd boxのバイナリデータを解析することによって、MP4ファイルの作成時間、変更時間、時間スケール、再生可能時間、デフォルトボリュームなどの情報が得られ、moov boxには、複数のtrack boxが含まれ、各メディアトラックに特有の記述情報が記録されており、たとえば、ビデオトラックvideo track boxに対して、video track boxに複数のサブ容器が複数層ネストされ、video track boxのネスト構造に基づいて、対応するバイナリデータを解析することによりMP4ファイルのビデオフレーム情報、及び対応する画面情報が得られる。
【0108】
いくつかの実施例では、プレーヤーは、以下のように取得されたメタデータを解析して、メディア情報を得ることができる。メタデータ容器バイナリデータのうち容器ヘッダの標準長さに対応するバイナリデータを順次解析して、前記メタデータ容器におけるサブ容器の容器タイプ、及び前記サブ容器の容器データの長さを得て、前記サブ容器の容器タイプに対応するタイプのパーサーを呼び出し、解析されていないデータのうち前記容器データの長さに対応するバイナリデータを順次解析し、前記容器データが示したメディア情報を得る。
【0109】
メタデータ容器に複数のサブ容器がネストされている場合に対して、プレーヤーが毎回読み取ったバイナリデータのオフセット量はすべて識別されたサブ容器の長さの合計であり、読み取られたバイナリデータの長さが容器ヘッダの標準長さに合致するため、解析することによって、現在処理するサブ容器のタイプ及び長さが得られ得る。
【0110】
たとえば、初めて読み取るとき、メタデータ容器のバイナリデータのゼロバイトからバイナリデータを読み取り、且つ読み取られたバイナリデータの長さが容器ヘッダの標準長さに合致するため、解析することによって一番目のサブ容器のタイプ及び長さが得られ得る。再度読み取るとき、初めて読み取られたサブ容器の長さをオフセット量としてバイナリデータを読み取り始め、且つ読み取られたバイナリデータの長さが容器ヘッダの標準長さに合致するため、解析することによって二番目のサブ容器のタイプ及び長さが得られ得る。
【0111】
上記方式によってバイナリデータを読み取ると、過度に読み取ることにより巻き戻しを引き起こすことがなく、また、十分に読み取らないため、再び読み取ることもなく、解析効率及び正確率が確保される。
【0112】
いくつかの実施例では、容器がバイナリデータのパッケージに直接用いられるか、さらに容器がパッケージされたかを示すために、メタデータ容器にネストされた典型的な容器タイプをプレマークし、たとえば、
図2に示したmvhd box、audio track box及びvideo track boxなどについては、さらに容器がパッケージされたとマークし、
図2に示したstts box、stsd boxなどについては、バイナリデータが直接パッケージされたとマークする。
【0113】
バイナリデータを直接パッケージするとマークされた容器タイプに対して、容器タイプにそれぞれ対応する、バイナリデータに基づいて、示されるメディア情報を解析して取得するためのパーサーが設置される。解析されたサブ容器の容器タイプをプレマークされた容器タイプと比較し、以下の2種の状況がある。
【0114】
1)比較した結果、前記サブ容器の容器タイプがプレマークされ、且つバイナリデータを直接パッケージするとプレマークされたと決定された場合、前記サブ容器の容器タイプに対応するパーサーを呼び出し、前記パーサーで前記サブ容器における容器データを解析し、前記容器データが示したメディア情報を得る。
【0115】
2)比較した結果、前記サブ容器の容器タイプがプレマークされ、且つさらに容器をパッケージし続けるとプレマークされたと決定された場合、解析した結果、前記サブ容器にパッケージされた容器の容器タイプがプレマークされ且つバイナリデータを直接パッケージするとプレマークされるまで、前記メディアファイルにおける容器ヘッダの標準長さに基づいて、前記サブ容器に対応するバイナリデータを再帰的に解析する。サブ容器にパッケージされた容器の容器タイプに対応するパーサーを呼び出し、バイトごとにバイナリデータを解析し、解析されたバイナリデータの長さが前記サブ容器にパッケージされた容器の容器データの長さに対応することによって、前記サブ容器にパッケージされた容器の容器データが示したメディア情報が得られる。
【0116】
いくつかの実施例では、メタデータ容器を解析する過程にメディア情報を記録する方式について説明する。メタデータ容器のバイナリデータのうち容器ヘッダの標準長さに対応するバイナリデータを順次解析し、前記メタデータ容器におけるサブ容器の容器タイプを得るとき、サブ容器と属する容器との間のネスト関係、及びサブ容器とパッケージされた容器とのネスト関係に基づいてオブジェクトを作成し、サブ容器の容器タイプはバイナリデータを直接パッケージするためであるとプレマークされた場合、前記サブ容器に対応して作成されたオブジェクトに、メディア情報を含む配列を記憶し、記憶されたメディア情報は、前記サブ容器の容器データで示される。
【0117】
たとえば、
図2では、解析されたサブ容器のタイプがstts boxである場合、stts boxがバイナリデータを直接パッケージするとプレマークされたため、stts boxに対応して作成されたオブジェクトにメディア情報を含む配列を記憶し、ここでのメディア情報は、stts boxの容器データが示した時間長情報である。
【0118】
いくつかの実施例では、メタデータ容器を解析する過程においてサブ容器の間のネスト関係を記録する方式について説明する。メタデータ容器のバイナリデータのうち、容器ヘッダの標準長さに対応するバイナリデータを順次解析し、前記メタデータ容器におけるサブ容器の容器タイプを得るとき、容器タイプがバイナリデータを直接パッケージするとプレマークされると、呼び出された前記パーサーに解析されたサブ容器を記録する。記録されたサブ容器の実例をサブ容器の属性に設定し、前記サブ容器の属性は、前記サブ容器が属する容器に含まれ、前記サブ容器と属する容器との間のネスト関係を記述することに用いられる。
【0119】
たとえば、
図2では、解析されたサブ容器のタイプがstsd boxである場合、stsd boxがバイナリデータを直接パッケージするとプレマークされたため、対応するstsd boxに対応するパーサーにstsd boxを記録し、stsd boxの実例をstbl boxサブ容器の属性に設定する。このようにして、最後に、stsd box のサブ容器の属性に、stsd box、stts box、stsc boxなど、stbl boxにネストされる複数のサブ容器が記録される。
【0120】
いくつかの実施例では、比較した結果、前記サブ容器の容器タイプがプレマークされず、又はバイナリデータを直接パッケージするとプレマークされたが、対応するタイプのパーサーを呼び出さなかった場合、サブ容器に対応するバイナリデータの解析を無視し、前記サブ容器の長さに基づいて前記バイナリデータのうち次のサブ容器に対応する部分にスキップして解析を続ける。
【0121】
実際の用途では、メディアファイルにはカスタム容器タイプが現れることがあり、スキップ方式によってメタデータ容器全体の解析の進行状況に影響を与えることがなく、また、パーサーを設置する方式によって、メタデータ容器の容器タイプが変わる場合、対応するタイプのパーサーを追加、削除及び変更することで、最新のメタデータ容器に対する互換性のある解析を実現でき、迅速かつ柔軟にアップグレードできる特徴を有する。
【0122】
メディア情報識別についての上記説明をもとに、次に、識別されたメディア情報に基づいてメディアファイルにおけるメディアデータのオフセット量及びサイズを決定することについて説明する。いくつかの実施例では、プレーヤーは、以下のようにメディアファイルにおけるメディアデータのオフセット量及びサイズを決定し得る。識別されたメディア情報に基づいて、メディアファイルにおけるメディアデータのビデオフレーム(即ち第1キーフレーム及び第2キーフレームの間のビデオフレーム)のオフセット量及びサイズ、及びメディアファイルにおける、ビデオフレームに合わせたオーディオフレームのオフセット量及びサイズを決定する。決定されたオフセット量及びサイズに基づいて、上記ビデオフレームとオーディオフレームを含むターゲット区間(最小オフセット量と最大サイズからなる区間)のオフセット量及びサイズを決定する。ただし、ターゲット区間には、上記ビデオフレーム及びオーディオフレームが含まれる。
【0123】
ここで、本開示の実施例におけるオーディオフレームとビデオフレームの合わせ方式について説明する。ビデオフレームを基準にして、メディアデータの開始時間及び時間長に基づいて、メディアデータにおいて、最初のオーディオフレームの復号開始時間が最初のビデオフレームの復号開始時間より遅くなく、最後のオーディオフレームの復号時間が最後のビデオフレームの復号終了時間より早くなくなるように、ビデオフレームにおいて時間が同期したオーディオフレームを特定する。このように、メディアファイルにおけるビデオとオーディオの時間長が不一致の問題を解決し、フレームごとにビデオを再生する際に同期したオーディオが再生し、画面が表示されるが音声がない現象が発生しない。
【0124】
ターゲット区間のオフセット量及びサイズを決定することについて説明する。2つのキーフレームのうち第1キーフレームと第2キーフレームの間のビデオフレームのメディアファイルにおけるオフセット量及びサイズによって、メタデータ容器におけるビデオフレームの位置を決定し、メディアファイルにおける、ビデオフレームに合わせたオーディオフレームのオフセット量及びサイズによって、メタデータ容器におけるオーディオフレームの位置を特定する。位置の上限と下限からなる区間、即ち、最小オフセット量と最大サイズからなる区間をターゲット区間とする。ここで、位置の上限に対応するオフセット量及びサイズは、ターゲット区間の上限に対応するオフセット量及びサイズであり、位置の下限に対応するオフセット量及びサイズは、ターゲット区間の下限に対応するオフセット量及びサイズである。実際の用途では、ターゲット区間は、ターゲット解像度のメディアファイルのメディアデータ容器においてビデオフレームとオーディオフレームを記憶する最小区間である。たとえば、ターゲット解像度のメディアファイルにおける第1キーフレームと第2キーフレームの間のビデオフレームの位置のオフセット量に対して、対応区間が[a,b](アドレスは昇順)であり、ターゲット解像度のメディアファイルにおけるオーディオフレームの位置のオフセット量に対して、対応区間が[c,d](アドレスは昇順)である場合、位置の上限と下限からなる区間が[min(a,c)、max(b,d)]である。このように、プレーヤーは、ターゲット区間のオフセット量及びサイズを運んだネットワーク要求をサーバーに送信して、ターゲット区間のメディアデータを要求する。サーバーは、ターゲット区間のオフセット量及びサイズに基づいてメディアファイルにおけるメディアデータを抽出した後、ターゲット区間のメディアデータを一括で返信し、再度取得する必要がないため、プレーヤーの要求回数を減少させて、処理効率を高める。
【0125】
ステップ703、要求されたメディアデータに基づいて、独立で復号するためのセグメントメディアファイルを構築する。
【0126】
具体的には、サーバーは、プレーヤーによるネットワーク要求を受信した後に解析し、プレーヤーが要求するメディアデータに対応するオフセット量及びサイズを得て、オフセット量及びサイズに基づいて、オフセット量から始まり且つサイズが合致するメディアデータをメディアファイルから抽出する。
【0127】
サーバーは、メディアデータを抽出した後、下記方式によってセグメントメディアファイルを構築し得る。サーバーは、メディアデータのメディア情報に基づいてセグメントメディアファイルレベルのメタデータを計算して、次に、セグメントメディアファイルのパッケージフォーマットに応じてセグメントメディアファイルレベルのメタデータ及びメディアデータを充填して、セグメントメディアファイルを得る。
【0128】
いくつかの実施例では、サーバーは、プレーヤーにより要求されたすべての非ストリーミング・メディア・フォーマットのメディアファイルに対してセグメントメディアファイルの変換を行うわけではない。たとえば、サーバーは、特定のメディアファイル(たとえばホットスポットファイル)のみに対して変換を行い、サーバーには変換対象メディアファイル(たとえばホットスポットファイル)の識別子が記憶され、ネットワーク要求にはメディアファイルの識別子が運ばれ、サーバーは、ネットワーク要求を解析した後、メディアファイルの識別子を得て、メディアファイルの識別子に基づいて、メディアファイルが変換対象メディアファイルであるか否かを判断する。変換対象メディアファイルであると判断した場合に、メディアデータの抽出及びセグメントメディアファイルの構築を行う。メディアファイルの識別子に基づいて、プレーヤーにより要求されたメディアデータに対応するメディアファイルが変換対象メディアファイルではないと判断した場合、抽出されたメディアデータについてセグメントメディアファイルを構築しない。
【0129】
いくつかの実施例では、サーバーは、メディアファイルにおけるすべてのメディアデータに対してセグメントメディアファイルの構築を行うわけではない。たとえば、サーバーは、メディアファイルにおける特定部分(たとえば、メディアファイルの後半部分)のメディアデータのみに対してセグメントメディアファイルの構築を行う。サーバーがオフセット量及びサイズに基づいて、メディアファイルにおける前記メディアデータの位置を特定できるように、ネットワーク要求にはメディアファイルにおけるメディアデータの前記オフセット量及びサイズが運ばれる。サーバーは、特定された位置に基づいて、プレーヤーにより要求されたメディアデータがメディアファイルにおける変換対象メディアデータであると確定した場合、抽出されたメディアデータに基づいてセグメントメディアファイルを構築する。サーバーは、特定された位置に基づいて、プレーヤーにより要求されたメディアデータが変換対象メディアデータではないと確定した場合、セグメントメディアファイルの構築を行わずにメディアデータをそのまま返す。
【0130】
いくつかの実施例では、サーバーがユーザーの正当性を認証するために、ネットワーク要求には、認証情報がさらに運ばれてもよい。たとえば、認証情報は、ユーザーのログイン情報(ユーザー名、パスワード)であってもよく、サーバーは、ネットワーク要求を解析した後、ユーザーのログイン情報に基づいてユーザーの正当性を認証する。サーバーは、認証情報に基づいてユーザーの正当性を有効と認証すると、抽出されたメディアデータに基づいて構築されたセグメントメディアファイルを返信する。
【0131】
セグメントメディアファイルのパッケージフォーマットに応じてセグメントメディアファイルレベルのメタデータ及びメディアデータを充填してセグメントメディアファイルを得ることについて説明する。いくつかの実施例では、
図8を参照して、
図8は、本開示の例示によるパッケージセグメントメディアファイルの好ましい模式的なフローチャートであり、
図8に示したステップと組み合わせて説明する。
【0132】
ステップ801、セグメントメディアファイルのタイプ及び互換性を示すデータを、セグメントメディアファイルのファイルタイプ容器に充填する。
【0133】
たとえば、
図4に示したパッケージ構造のFMP4ファイルをパッケージにより形成する場合を例として、FMP4ファイルのファイルタイプ容器即ちftyp box のヘッダには、容器のタイプ及び長さ(ftyp box全体の長さ)を充填し、ftyp boxのデータ部分には、ファイルタイプがFMP4であること、及び互換プロトコルを示すデータ(バイナリデータ)を充填して生成する。
【0134】
ステップ802、セグメントメディアファイルのファイルレベルを示すメタデータを、セグメントメディアファイルのメタデータ容器に充填する。
【0135】
いくつかの実施例では、セグメントメディアファイルのパッケージ構造に充填すべきメディアデータに基づいて、セグメントメディアファイルにおけるメタデータ容器のネスト構造に基づいて、ネスト構造を充填するために必要なメディアデータを記述するメタデータを計算する。
【0136】
また、
図4を例にして、FMP4ファイルのファイルレベルを示すメタデータを計算し、FMP4のメタデータ容器(即ちmoov box)に充填する。moov boxには、mvhd、track及びビデオ拡張(mvex、movie extend)の3つの容器がネストされている。
【0137】
mvhd容器にパッケージされたメタデータは、位置、時間長、作成時間や変更時間などを含むセグメントメディアファイルの再生に関連するメディア情報を示すために用いられる。track容器にネストされたサブ容器は、メディアデータにおいてトラックに対応する引用及び記述を示し、たとえば、track容器には、トラックの特性及び全体情報(たとえば、時間長、幅・高さ)を記述する容器(tkhd boxと記載する)、トラックのメディア情報(たとえば、メディアタイプ及びサンプルの情報)を記録する容器(mdia boxと記載する)がネストされている。
【0138】
ステップ803、抽出されたメディアデータ、及びメディアデータを記述するメタデータを、セグメントメディアファイルのセグメント化容器のうちのメディアデータ容器、及びセグメント化レベルのメタデータ容器に対応的に充填する。
【0139】
いくつかの実施例では、セグメントメディアファイルには、1つ以上のセグメント(fragment)がパッケージされることが可能である。充填すべきメディアデータに関して、セグメントメディアファイルの1つ又はセグメント化メディアデータ容器(即ちmdat box)に充填でき、各セグメントにセグメント化レベルのメタデータ容器(moof boxと記載する)がパッケージされ、その中に充填されたメタデータは、セグメントに充填されたメディアデータを記述して、セグメントが独立して復号されることができるようにする。
【0140】
図4に示すように、充填すべきメディアデータをFMP4ファイルのパッケージ構造の2つのセグメントに充填することを例として、各セグメント化メディアデータに充填する。対応するセグメントのセグメント化レベルのメタデータ容器(即ち moof box)に充填すべきのメタデータを計算して、moof boxにネストされたサブ容器に対応的に充填する、ここで、moof boxのヘッダでは、moof boxと呼ばれ、中に充填されたバイナリデータは、容器のタイプが「moof box」であること、及びmoof boxの長さを示すために用いられる。
【0141】
ステップ801~ステップ803においてデータを対応する容器に充填する一実施例では、充填操作を実行するときに、クラスの書き込み操作機能を呼び出して、前記サブ容器のメモリバッファ領域でバイナリデータの書き込み及びマージを行い、前記クラスの実例を返信し、返信された実例は、前記サブ容器とネスト関係を有するサブ容器をマージすることに用いられる。
【0142】
データを充填する一例として、パッケージ機能を実現するためのクラスMP4を作成し、セグメントメディアファイルにおける各サブ容器をクラスストリームとしてパッケージする静的方法である。バイナリデータの操作機能を実現するためのクラスストリームを作成し、各クラスストリームには、充填すべきバイナリデータを保存するため1のメモリバッファ領域を1つ有する。ストリームによる静的方法によって、充填すべきマルチバイトの10進数データをバイナリデータに変換し、クラスストリームの実例による書き込み操作機能によって、メモリバッファ領域でサブ容器に充填すべきバイナリデータのマージ及び充填を完了する。ストリームによる静的方法は、新しいストリーム実例を返信して、現在のサブ容器とほかのネスト関係を有するサブ容器とのマージを実現することができる。
【0143】
ステップ804、前記ウェブページのメディアソース拡張インターフェースを介して、前記メディア要素が前記解像度切り替えイベントの発生時の再生点に連続して再生を行うための前記セグメントメディアファイルを前記ウェブページのメディア要素に送信する。
【0144】
ステップ704、前記ウェブページのメディアソース拡張インターフェースを介して、前記セグメントメディアファイルを前記ウェブページのメディア要素に送信する。前記セグメントメディアファイルは、前記メディア要素が前記解像度切り替えイベントの発生時の再生点に再生を行うことに用いられる。いくつかの実施例では、プレーヤーは、ウェブページのメディアソース拡張インターフェースを介して、セグメントメディアファイルをウェブページのメディア要素に送信して再生を行うのは、プレーヤーは、セグメントメディアファイルをMSEインターフェースにおけるメディアソースオブジェクトに加えるステップと、MSEを呼び出してメディアソースオブジェクトに対応する仮想アドレスを作成するステップと、メディア要素がメディアソースオブジェクトをデータソースとして再生するための仮想アドレスをウェブページのメディア要素に伝達するステップと、を含み得る。ここでは、メディア要素は、ウェブページのVideo要素及び/又はAudio要素であってもよく、メディア要素は、仮想アドレスを通じてメディアソースオブジェクトを取得して再生する。
【0145】
図9を参照して、
図9は、本開示の実施例によるプレーヤーは、ウェブページのメディアソース拡張インターフェースを介して、セグメントメディアファイルを再生するときの好ましい模式図である。ウェブページにおけるプレーヤーの再生ウィンドウ(プレーヤーは再生ウィンドウに対応する)がメディアファイルの再生イベントを受信した際に、プレーヤーは、MSEでメディアソース方法を実行することによってメディアソース(Media Source)オブジェクトを作成し、メディアソース拡張インターフェースにパッケージされた追加ソースバッファ(addSourceBuffer)方法を実行することによって、メディアソースオブジェクトのバッファ、即ち、ソースバッファ(SourceBuffer)オブジェクトを作成し、1つのメディアソースオブジェクトは、1つ以上のソースバッファオブジェクトを含み、ソースバッファオブジェクトのそれぞれは、ウェブページにおける1つの再生ウィンドウに対応し、ウィンドウにおける再生対象のセグメントメディアファイルを受信することに用いられる。
【0146】
メディアファイルの再生過程において、プレーヤーのパーサー(Parser)は、新しく取得されたメディアデータを解析することにより、新しいセグメントメディアファイルを絶えずに構築し、ソースバッファオブジェクトの追加バッファ(appendBuffer)方法を実行することによって、セグメントメディアファイルを同一メディアソースオブジェクトのソースバッファオブジェクトに加える。
【0147】
プレーヤーは、構築されたセグメントメディアファイルをメディアリソース拡張インターフェースにおけるメディアソースオブジェクトに加えた後、メディアリソース拡張インターフェースを呼び出して、メディアソースオブジェクトに対応する仮想アドレスを作成する。たとえば、プレーヤーは、メディアソース拡張インターフェースにパッケージされたクリエートオブジェクトURL(createObjectURL)方法を実行し、メディアソースオブジェクトに対応する仮想アドレス、即ち、仮想ユニフォーム・リソース・ロケータ(URL、Uniform Resource Locator)を作成し、その中に、Blobタイプのセグメントメディアファイルがパッケージされている。
【0148】
そのほか、プレーヤーは、メディアソースオブジェクトを仮想URLのソース(src)属性に設定し、つまり、仮想URLをウェブページにおけるメディア要素、たとえばvideo/audio要素にバンディングし、このプロセスは、メディアソースオブジェクトをウェブページにおけるメディア要素に関連付けることとも呼ばれる。
【0149】
本開示の実施例では、メディアソースオブジェクトに加えるセグメントメディアファイルは、つまり、現在再生するセグメントメディアファイルである。たとえば、現在再生するセグメントメディアファイル1について、後続のセグメントメディアファイル2、3が既に構築されている場合、構築されたセグメントメディアファイル2、3は、MSEのソースバッファに加えられてプレロードされ、これに対応して、プレーヤーにより取得されたメディアデータに対応する2つのキーフレームのうちの第1キーフレームは、セグメントメディアファイル1の後に現れる最初のキーフレームである。
【0150】
プレーヤーがウェブページのメディア要素に伝達する仮想アドレスについては、プレーヤーにはメディア要素を呼び出して仮想URLを再生する文、たとえば、<audio>仮想URLが含まれる。ウェブページがウェブページに埋め込まれたプレーヤーに対応する文を解釈することにより、ウェブページのメディア要素は、仮想URLがバンディングするソースバッファオブジェクトからセグメントメディアファイルを読み取り、復号して再生する。
【0151】
以下、プレーヤーがMP4ファイルをFMP4ファイルに変換して、メディアソース拡張インターフェースを介して、ウェブページにおいて再生する過程を説明する。
【0152】
図10を参照して、
図10は、本開示の実施例による、MP4ファイルをFMP4ファイルに変換してメディアソース拡張インターフェースを介して再生する模式図であり、プレーヤーは、メディアファイルのリアルアドレス(http://www.toutiao.com/a/b.mp4)に基づいて、サーバーからMP4ファイルにおけるメディアデータの一部、たとえば、復号時間が再生点を連続するための所定時間帯にあるデータを要求する。
【0153】
プレーヤーは、取得したメディアデータに基づいてFMP4ファイルを構築し、そして、MediaSourceオブジェクトに対応するSourceBufferオブジェクトに加える。仮想URLがMediaSourceオブジェクトにバンディングされるため、プレーヤーがaudio/video要素を呼び出すためのコードが実行されると、audio/video要素は、MediaSourceオブジェクトのSourceBufferオブジェクトから連続的に加えられる新しいFMP4ファイルを読み取って復号して、メディアファイルの連続再生が実現される。ウェブページのメディア要素は、メディアファイルのリアルアドレスに基づいてメディアデータを取得する代わりに、仮想URLに基づいてメディアソースオブジェクトを取得し、メディアファイルを再生するので、メディアファイルのリアルアドレスへの保護を実現する。
【0154】
次に、プレーヤーがウェブページに埋め込まれ、プレーヤーがウェブページのHTML5 Video要素+audio要素を用いてMP4ファイルを再生する場合を例として、本開示の実施例の再生制御方法を説明する。MP4の実施によると、ほかの非ストリーミング・メディア・フォーマットに容易に適用されることができる。
図11には、本開示の実施例による再生制御方法の好ましい模式的なフローチャートが示されており、
図11を参照すると、本開示の実施例に提供される再生制御方法は、ステップ1101~ステップ1108を含む。
【0155】
ステップ1101:プレーヤーは、設定されたオフセット量及びサイズに基づいて、サーバーへ固定サイズのMP4ファイルにおけるデータを要求する。
【0156】
プレーヤーは、設定されたオフセット量及びサイズを運んだデータ要求をサーバーへ送信することによって、MP4ファイルにおいてゼロバイトから始まり且つ設定サイズに合致するバイナリデータを取得する。MP4ファイルのパッケージ構造に順次にパッケージされるfytp box、moov box及びmdat boxが含まれる場合を例として、設定サイズは、既存のMP4ファイルのftyp box及びmoov boxサイズに基づいて統計して取得することができ、設定サイズが所定割合(たとえば全部)のMP4ファイルのftyp boxとmoov boxの合計をカバーすることができ、サーバーから完全なmoov boxのバイナリデータを一回で要求できるようにする。一回の要求により完全なmoovデータが取得されない場合、オフセット量及びサイズを改めて計算して再要求する。
【0157】
ステップ1102:プレーヤーは、サーバーから返信されたデータを受信し、サーバーから返信されたデータからMP4ファイルのメディア情報を識別する。
【0158】
MP4ファイルのメディア情報は、MP4ファイルにおけるビデオ/オーディオフレームのオフセット量、サイズ、復号時間などの情報を含む。
【0159】
いくつかの実施例では、プレーヤーは、以下のように、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の完全なバイナリデータが得られたことを示し、パッケージ構造に基づいてバイナリデータを解析することで、メディア情報を復元することができる。
【0160】
いくつかの実施例では、サーバーから返信されたバイナリデータに完全なmoovデータが含まない場合、取得されたバイナリデータから容器のサイズを読み取り、MP4ファイルにおけるmoov boxのオフセット量及びサイズを決定し、決定されたオフセット量及びサイズに基づいて、残りのバイナリデータから読み取られた容器のタイプがmoov boxであり、且つ残りのバイナリデータのサイズがmoov boxのサイズ以上である場合、MP4ファイルにおいてMP4ファイルにおけるmoov boxのオフセット量から始まり、且つMP4ファイルにおけるmoov boxのサイズに合致するmoovデータをサーバーから取得する。残りのバイナリデータから読み取られた容器のタイプがmoov boxであり、且つ残りのバイナリデータのサイズがmoov boxのサイズ未満である場合、moov boxのサイズと残りのバイナリデータのサイズの差を計算して再要求する新しいサイズとし、最初に要求されたオフセット量とサイズの合計を新しいオフセット量として、サーバーにバイナリデータを再要求する。
【0161】
実際の用途では、MP4ファイルのパッケージ構造が順次パッケージされるfytp box、mdat box、moov boxである場合があり、残りのバイナリデータから読み取られた容器のタイプがmdat boxである場合、mdat boxのサイズとmoov boxのサイズの合計を計算して再要求する新しいオフセット量とし、設定されたサイズでサーバーにバイナリデータを再要求する。
【0162】
ステップ1103:プレーヤーがウェブページを通じてMP4ファイルを再生する過程に、識別されたメディア情報及び現在の再生点に基づいて、MP4ファイルにおける2つのキーフレームを特定する。
【0163】
本開示の実施例では、プレーヤーは、2つのキーフレームの間のメディアデータ(少なくともビデオデータを含むが、さらにオーディオデータを含んでもよい)をロードユニットとして再生し、つまり、プレーヤーは、2つのキーフレームの間のメディアデータをロードすることによってMP4ファイルを再生し、2つのキーフレームの間に通常フレームだけが存在し、即ち2つのキーフレームが隣接するキーフレームであってよく、2つのキーフレームの間にほかのキーフレームが存在してもよい。
【0164】
スキップ方式でMP4ファイルの再生点に到達する場合を例として説明する。プレーヤーは、第1キーフレームをMP4ファイルにおいて復号時間が再生点前の最初のキーフレームとし、第2キーフレームをMP4ファイルにおいて復号時間が第1キーフレームよりも遅いキーフレームとして特定する。ここで、再生点に対応するメディアファイルのビデオフレームには、通常フレーム又はキーフレームの2種の場合がある。再生点に対応するビデオフレームがちょうどキーフレームである場合、MP4ファイルにおいて復号時間が再生点前の最初のキーフレームは、再生点に対応するキーフレームとなり、つまり、このときプレーヤーが要求するメディアデータにおける最初のキーフレームは、再生点に対応するキーフレームである。
【0165】
プレーヤーがMP4ファイルにおける2つのキーフレームを特定することには、識別されたメディア情報及び現在の再生点に基づいて上記第1キーフレーム及び第2キーフレームのオフセット量及びサイズを決定し、さらにオフセット量及びサイズに基づいて第1キーフレーム及び第2キーフレームの間のメディアデータをサーバーに要求することが含まれる。
【0166】
ステップ1104:特定された2つのキーフレームの間のメディアデータをサーバーに要求する。
【0167】
実際に実施するとき、プレーヤーは、2つのキーフレームに対応するターゲット区間のオフセット量及びサイズを運んだネットワーク要求をサーバーに送信して、MP4ファイルにおいて特定された2つのキーフレームの間のメディアデータを要求する。
【0168】
ここで、プレーヤーは、第1キーフレーム及び第2キーフレームの間のビデオフレームのMP4ファイルにおけるオフセット量及びサイズによって、mdatにおけるビデオフレームの位置を特定し、MP4ファイルにおける、ビデオフレームに合わせたオーディオフレームのオフセット量及びサイズによって、mdatにおけるオーディオフレームの位置を特定し、位置の上限と下限からなる区間をターゲット区間とする。位置の上限に対応するオフセット量及びサイズは、ターゲット区間の上限に対応するオフセット量及びサイズであり、位置の下限に対応するオフセット量及びサイズは、ターゲット区間の下限に対応するオフセット量及びサイズである。
【0169】
たとえば、メディアファイルの時間長が120秒であり、中には複数のキーフレームが含まれ、所定時間帯が20秒~40秒である場合、フレームの復号時間とフレームの番号とのマッピング関係に基づいて、まず、復号時間がちょうど20秒にあるキーフレームが存在するか否かを検索する。存在すると、復号時間がちょうど20秒にあるキーフレームを第1キーフレームとし、存在しないと、復号時間が20秒よりも早く、且つ開始時間から20秒に最も近い1つのキーフレームを第1キーフレームとして検索する。
【0170】
次に、復号時間がちょうど40秒にあるキーフレームが存在するか否かを検索する。存在すると、復号時間がちょうど40秒にあるキーフレームを第2キーフレームとし、存在しないと、復号時間が40秒よりも遅く且つ40秒に最も近いキーフレームを検索して第2キーフレームとする。
【0171】
ビデオフレームにおけるキーフレームを検索する方式によって、開始時間に対応するのが通常フレームであるため再生できないことによるフレームスキップを回避でき、また、不要なデータの取得を最大限に減少させ、ネットワーク伝送時にトラフィックを節約する。
【0172】
ステップ1105:サーバーは、MP4ファイルにおける前記2つのキーフレームの間のメディアデータを抽出し、抽出されたメディアデータに基づいてFMP4フォーマットのセグメントメディアファイルを構築する。
【0173】
実際に実施するとき、サーバーは、メディアデータのメディア情報に基づいてセグメントメディアファイルレベルのメタデータを計算し、そして、FMP4フォーマットのセグメントメディアファイルのパッケージフォーマットに基づいて、セグメントメディアファイルレベルのメタデータ及びメディアデータを充填した後に、FMP4フォーマットのセグメントメディアファイルを得る。
【0174】
ステップ1106:構築されたセグメントメディアファイルをプレーヤーへ返信する。
【0175】
サーバーは、MP4フォーマットファイルをFMP4フォーマットのセグメントメディアファイルへ変換し、セグメントメディアファイルをフロントエンドプレーヤーにプッシュし、フロントエンドプレーヤーが変換を行う必要がないため、再生負荷が小さくなり、端末ハードウェア能力を制限する必要がなく、端末の使用時間が確保される。
【0176】
ステップ1107:プレーヤーは、セグメントメディアファイルをMSEインターフェースにおけるメディアソースオブジェクトに加える。
【0177】
ステップ1108:プレーヤーは、ウェブページのメディア要素に仮想アドレスを伝達する。
【0178】
仮想アドレスは、メディア要素(video要素+Audio要素)がメディアソースオブジェクトをデータソースとしてビデオを再生することに用いられる。
【0179】
以上のように、本開示の実施例は、以下の有益な効果を有する。
【0180】
1)非ストリーミング・メディア・フォーマットのメディアファイルにおけるメディアデータから変換されたセグメントメディアファイルを、ウェブページのメディアソース拡張インターフェースを介して、ウェブページのメディア要素に送信して復号して再生することによって、ウェブページを通じて非ストリーミング・メディア・フォーマットのメディアファイルを再生することを実現する。非ストリーミングメディアパッケージフォーマットのファイルを完全にダウンロードしなければ独立して再生することができないという制限を克服し、また、MPEG-4フォーマットのメディアファイルを低記憶スペースの占有で効率的に再生することを実現する。
【0181】
2)ウェブページに埋め込まれたプレーヤーの再生過程において、解像度が切り替わるとき、画面のシームレスな切り替えを実現し、ブラックスクリーンの現象が発生してユーザーの正常な使用に影響を及ぼすことを回避する。
【0182】
図12は、本開示の実施例による、ウェブページにおいて解像度を切り替えてメディアファイルを再生する方法の好ましい使用場面の模式図である。
図12を参照すると、ウェブページにおいて解像度を切り替えてメディアファイルを再生する装置は、ユーザー端末10として実施され、実現するために1つの応用例を提供する。ユーザー端末10(一例として、ユーザー端末10-1及びユーザー端末10-2が示される)は、ネットワーク20を介してサーバー30に接続される。ネットワーク20は、広域ネットワーク又はローカルエリアネットワーク、又は両方の組み合わせであってもよく、無線リンクを用いてデータ伝送を行う。
【0183】
ユーザー端末10は、プレーヤーが嵌め込まれたウェブページを通じてメディアファイルを再生し、グラフィカルインターフェース110(一例として、グラフィカルインターフェース110-1及びグラフィカルインターフェース110-2が示される)を介して再生されたコンテンツを表示する。再生過程において、ウェブページに埋め込まれたプレーヤーが前記サーバー30から取得された非ストリーミングメディアパッケージフォーマットの元の解像度のメディアファイルを再生する過程に、ユーザー端末10は、解像度切り替えイベントを受信する。解像度切り替えイベントに応答して、非ストリーミングメディアパッケージフォーマットの切り替え先のターゲット解像度のメディアファイルにおけるメディアデータを要求する。要求されたメディアデータに基づいて、独立して復号するためのセグメントメディアファイルを構築する。前記ウェブページのメディアソース拡張インターフェースを介して、前記メディア要素が前記解像度切り替えイベントの発生時の再生点に連続して再生を行うための前記セグメントメディアファイルを前記ウェブページのメディア要素に送信する。
【0184】
以上のように、本公開の好ましい実施例に過ぎず、本公開の技術的範囲を限定するためではなく、本公開の精神と原則内でなされる何らかの補正、同等入れ換え、及び改善等は、いずれも本公開の技術的範囲に含まれる。
【符号の説明】
【0185】
20 ネットワーク
30 サーバー
500 メディアファイル再生装置
501 プロセッサ
502 メモリ
503 ユーザーインターフェース
504 ネットワークインターフェース
600 メディアファイル再生装置
601 イベント受信モジュール
602 データ要求モジュール
603 セグメント構築モジュール
604 メディア再生モジュール
5021 オペレーティングシステム
5022 アプリケーション