(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-06
(45)【発行日】2022-05-16
(54)【発明の名称】メディアファイル変換方法、装置及び記憶媒体
(51)【国際特許分類】
H04N 5/921 20060101AFI20220509BHJP
H04N 21/845 20110101ALI20220509BHJP
H04N 21/433 20110101ALI20220509BHJP
【FI】
H04N5/921
H04N21/845
H04N21/433
(21)【出願番号】P 2020552076
(86)(22)【出願日】2018-08-31
(86)【国際出願番号】 CN2018103581
(87)【国際公開番号】W WO2019227751
(87)【国際公開日】2019-12-05
【審査請求日】2020-06-16
(31)【優先権主張番号】201810530467.5
(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)【参考文献】
【文献】特開2008-199387(JP,A)
【文献】米国特許出願公開第2009/0106288(US,A1)
【文献】特開2006-129078(JP,A)
【文献】特開2003-114845(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 5/76 - 5/956
H04N 21/00 - 21/858
(57)【特許請求の範囲】
【請求項1】
非ストリーミングメディアフォーマットを用いるメディアファイルのメタデータボックスにカプセル化されたメタデータを解析し、前記メディアファイルのメディアデータボックスにカプセル化されたメディアデータを記述するためのメディア情報を得るステップと、
前記メディア情報が示す前記メディアデータの時間に基づいて、所定期間のメディアデータを検索するステップと、
前記メディア情報が示す前記メディアデータの前記メディアファイルにおける位置に基づいて、前記所定期間のメディアデータの前記メディアファイルにおける位置を検索するステップと、
前記メディアファイルのメディアデータボックスから前記位置に対応するメディアデータを抽出するステップと、
抽出されたメディアデータ、及び前記メディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化し、独立して復号することに用いられるフラグメントメディアファイルを得るステップと、を含
み、
前記メディア情報が示す前記メディアデータの時間に基づいて、所定期間のメディアデータを検索するステップが、
前記メディアデータの時間に基づいて、前記メディアファイルにおける前記所定期間の開始時間及び終了時間にそれぞれ対応する2つのキーフレームを検索することと、
前記メディアデータの時間に基づいて、前記2つのキーフレーム間のビデオフレームと整列するオーディオフレームを検索することと、
前記メディアデータの位置に基づいて、前記2つのキーフレーム間の前記ビデオフレームの前記メディアファイルにおける位置を検索し、かつ前記オーディオフレームの前記メディアファイルにおける位置を検索することと、
を含み、
前記メディアデータの時間に基づいて、前記2つのキーフレーム間のビデオフレームと整列するオーディオフレームを検索するステップが、
前記メディアデータの時間に基づいて、復号時間が前記所定期間にあるオーディオフレームを検索すること、を含み、
前記所定期間の開始時間に対応するオーディオフレームが存在する場合、最初のオーディオフレームの復号時間が前記所定期間の開始時間に一致し、前記所定期間の開始時間に対応するオーディオフレームが存在しない場合、最初のオーディオフレームの復号時間が前記所定期間の開始時間よりも早く、かつ開始時間に最も近く、前記所定期間の終了時間に対応するオーディオフレームが存在する場合、最後のオーディオフレームの復号時間が前記所定期間の終了時間に一致し、前記所定期間の終了時間に対応するオーディオフレームが存在しない場合、最後のオーディオフレームの復号時間が前記所定期間の終了時間よりも遅く、かつ終了時間に最も近い
メディアファイル変換方法。
【請求項2】
前記メディアデータの時間に基づいて、前記メディアファイルにおける2つのキーフレームを検索するステップが、
前記メディアデータの時間に基づいて、復号時間が前記所定期間の開始時間に一致する第1のキーフレームを検索すること、又は、復号時間が前記所定期間の開始時間よりも早いキーフレームのうち、前記開始時間に最も近い第1のキーフレームを検索することと、
前記メディアデータの時間に基づいて、復号時間が前記所定期間の終了時間に一致する第2のキーフレームを検索すること、又は、復号時間が前記所定期間の終了時間よりも遅いキーフレームのうち、前記終了時間に最も近い第2のキーフレームを検索することと、
を含む、請求項
1に記載の方法。
【請求項3】
メディアファイルのメタデータボックスにカプセル化されたメタデータを解析し、前記メディアファイルのメディアデータボックスにカプセル化されたメディアデータを記述するためのメディア情報を得るステップが、
前記メタデータボックスにおけるサブボックスのネスト構造を解析し、前記ネスト構造に基づいて各サブボックスにおける2値データを読み出すことと、
読み出された2値データから各サブボックスが特徴付ける前記メディアデータのメディア情報を解析することと、を含む、請求項1に記載の方法。
【請求項4】
前記メディアファイルのメディアデータボックスから前記位置に対応するメディアデータを抽出するステップが、
2つのキーフレーム間のビデオフレームの位置に対応するオフセット量及び容量、並びに前記ビデオフレームと整列するオーディオフレームの位置に対応するオフセット量及び容量に基づいて、最小オフセット量と最大容量で構成される区間を決定することと、
前記メディアファイルのメディアデータボックスの対応する区間から前記所定期間のメディアデータを抽出することと、を含む、請求項1に記載の方法。
【請求項5】
前記オフセット量は前記メディアファイルのメディアデータボックスにおけるメディアデータの記憶開始位置を特徴付け、前記容量は前記記憶開始位置からメディアデータが占有する長さを特徴付ける、請求項
4に記載の方法。
【請求項6】
抽出されたメディアデータ、及び前記メディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化するステップが、
前記メディアファイルのタイプ及び互換性を示すデータを、前記フラグメントメディアファイルのファイルタイプボックスに充填することと、
前記メディアファイルのファイルレベルを示すメタデータを、フラグメントメディアファイルのメタデータボックスに充填することと、
抽出されたメディアデータ、及びメディアデータを記述するメタデータを、フラグメントメディアファイルのフラグメントボックスにおけるメディアデータボックス、及びフラグメントレベルのメタデータボックスに対応して充填することと、
を含む、請求項1に記載の方法。
【請求項7】
抽出されたメディアデータ、及び前記メディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化するステップが、
クラスの書き込み操作機能を呼び出してフラグメントメディアファイルのサブボックスのメモリバッファに2値データの書き込み及びマージを完了することと、
サブボックスとネスト関係を有するサブボックスとのマージをすることと、を含む、請求項1から
6の何れか1項に記載の方法。
【請求項8】
非ストリーミングメディアフォーマットを用いるメディアファイルのメタデータボックスにカプセル化されたメタデータを解析し、前記メディアファイルのメディアデータボックスにカプセル化されたメディアデータを記述するためのメディア情報を得るように構成される解析モジュールと、
前記メディア情報が示す前記メディアデータの時間に基づいて、所定期間のメディアデータを検索し、そして、前記メディア情報が示す前記メディアデータの前記メディアファイルにおける位置に基づいて、前記所定期間のメディアデータの前記メディアファイルにおける位置を検索するように構成される検索モジュールと、
前記メディアファイルのメディアデータボックスから前記位置に対応するメディアデータを抽出するように構成される抽出モジュールと、
抽出されたメディアデータ、及び前記メディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化し、独立して復号することに用いられるフラグメントメディアファイルを得るように構成される合成モジュールと、を含
み、
前記検索モジュールが、前記メディアデータの時間に基づいて、前記メディアファイルにおける前記所定期間の開始時間及び終了時間にそれぞれ対応する2つのキーフレームを検索するように配置され、
前記検索モジュールが、前記メディアデータの時間に基づいて、2つのキーフレーム間のビデオフレームと整列するオーディオフレームを検索するように配置され、
前記検索モジュールが、前記メディアデータの位置に基づいて、前記2つのキーフレーム間の前記ビデオフレームの前記メディアファイルにおける位置を検索して、前記オーディオフレームの前記メディアファイルにおける位置を検索するように配置され、
前記検索モジュールが、前記メディアデータの時間に基づいて、復号時間が前記所定期間にあるオーディオフレームを検索するように配置され、
前記検索モジュールが、前記所定期間の開始時間に対応するオーディオフレームが存在する場合、最初のオーディオフレームの復号時間が前記所定期間の開始時間に一致し、前記所定期間の開始時間に対応するオーディオフレームが存在しない場合、最初のオーディオフレームの復号時間が前記所定期間の開始時間よりも早く、かつ開始時間に最も近く、前記所定期間の終了時間に対応するオーディオフレームが存在する場合、最後のオーディオフレームの復号時間が前記所定期間の終了時間に一致し、前記所定期間の終了時間に対応するオーディオフレームが存在しない場合、最後のオーディオフレームの復号時間が前記所定期間の終了時間よりも遅く、かつ終了時間に最も近いように配置される
メディアファイル変換装置。
【請求項9】
前記検索モジュールが、前記メディアデータの時間に基づいて、復号時間が前記所定期間の開始時間に一致する第1のキーフレームを検索するように配置され、
前記検索モジュールが、復号時間が前記所定期間の開始時間よりも早いキーフレームのうち、前記開始時間に最も近い第1のキーフレームを検索するように配置され、
前記検索モジュールが、前記メディアデータの時間に基づいて、復号時間が前記所定期間の終了時間に一致する第2のキーフレームを検索するように配置され、
前記検索モジュールが、復号時間が前記所定期間の終了時間よりも遅いキーフレームのうち、前記終了時間に最も近い第2のキーフレームを検索するように配置される、請求項
8に記載の装置。
【請求項10】
前記解析モジュールが、前記メタデータボックスにおけるサブボックスのネスト構造を解析し、前記ネスト構造に基づいて各サブボックスにおける2値データを読み出すように配置され、
前記解析モジュールが、読み出された2値データから各サブボックスが特徴付ける前記メディアデータのメディア情報を解析するように配置される、請求項
8に記載の装置。
【請求項11】
前記抽出モジュールが、2つのキーフレーム間のビデオフレームの位置に対応するオフセット量及び容量、並びに前記ビデオフレームと整列するオーディオフレームの位置に対応するオフセット量及び容量に基づいて、最小オフセット量と最大容量で構成される区間を決定するように配置され、
前記メディアファイルのメディアデータボックスの対応する区間から前記所定期間のメディアデータを抽出するように配置される、請求項
8に記載の装置。
【請求項12】
前記オフセット量は前記メディアファイルのメディアデータボックスにおけるメディアデータの記憶開始位置を特徴付け、前記容量は前記記憶開始位置からメディアデータが占有する長さを特徴付ける、請求項
11に記載の装置。
【請求項13】
前記合成モジュールが、前記メディアファイルのタイプ及び互換性を示すデータを、前記フラグメントメディアファイルのファイルタイプボックスに充填するように配置され、
前記合成モジュールが、前記メディアファイルのファイルレベルを示すメタデータを、フラグメントメディアファイルのメタデータボックスに充填するように配置され、
前記合成モジュールが、抽出されたメディアデータ、及びメディアデータを記述するメタデータを、フラグメントメディアファイルのフラグメントボックスにおけるメディアデータボックス、及びフラグメントレベルのメタデータボックスに対応して充填するように配置される、請求項
8に記載の装置。
【請求項14】
前記合成モジュールが、クラスの書き込み操作機能を呼び出してフラグメントメディアファイルのサブボックスのメモリバッファに2値データの書き込み及びマージを完了するように配置され、
前記合成モジュールが、サブボックスとネスト関係を有するサブボックスとのマージをするように配置される、請求項
8から
13の何れか1項に記載の装置。
【請求項15】
実行可能な命令を記憶するように配置されるメモリと、
前記実行可能な命令が実行されるとき、請求項1から
7の何れか1項に記載のメディアファイル変換方法を実現するプロセッサと、を含むメディアファイル変換装置。
【請求項16】
実行可能な命令が記憶され、前記実行可能な命令が実行されるとき、請求項1から
7の何れか1項に記載のメディアファイル変換方法を実現するように配置される記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の取り込み
本出願は、申請番号201810530467.5、申請日2018年05月29日である中国特許出願に基づいて提出し、該中国特許出願の優先権を要求し、該中国特許出願の全ての内容をここで本出願に参照として取り込んでいる。
【0002】
本開示はマルチメディア技術に関し、特にメディアファイル変換方法、装置及び記憶媒体に関する。
【背景技術】
【0003】
動画専門家集団(MPEG、Moving Picture Experts Group)-4カプセル化フォーマット(本明細書では、MP4フォーマットと略称する)は、現在広く使用されているボックスフォーマットであり、多種の符号化方式のビデオデータ及びオーディオデータを記憶することができる。
【0004】
しかしながら、MP4カプセル化フォーマットは、非ストリーミングメディアフォーマットであり、MP4カプセル化フォーマットを用いたファイル(本明細書では、MP4ファイルと略称する)がストリーミングメディア(即ちダウンロードしながら再生する)形式による再生をサポートしない。そのため、関連技術は、ストリーミングメディア形式の再生を実現するために、MP4ファイルを、例えばFLV(Flash Video)、HTTPライブストリーミング(HLS、HTTP Live Streaming)等のストリーミングメディアフォーマットに変換しなければならない。
【0005】
しかしながら、関連技術は、MP4ファイルをストリーミングメディアフォーマットのフラグメントメディアファイルに変換してネットワーク伝送に適応する効果的な方式を欠いている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
これに鑑みて、本開示の実施例は、メディアファイル変換方法、装置及び記憶媒体を提供し、非ストリーミングメディアフォーマットのメディアファイルを、ネットワーク伝送に適応し、独立して復号でき、体積がより小さいフラグメントメディアファイルに変換することができる。
【課題を解決するための手段】
【0007】
本開示の実施例の技術的解決手段は以下のように実現される。
【0008】
本開示の実施例は、
非ストリーミングメディアフォーマットを用いるメディアファイルのメタデータボックスにカプセル化されたメタデータを解析し、前記メディアファイルのメディアデータボックスにカプセル化されたメディアデータを記述するためのメディア情報を得るステップと、
前記メディア情報が示す前記メディアデータの時間に基づいて、所定期間のメディアデータを検索するステップと、
前記メディア情報が示す前記メディアデータの前記メディアファイルにおける位置に基づいて、前記所定期間のメディアデータの前記メディアファイルにおける位置を検索するステップと、
前記メディアファイルのメディアデータボックスから前記位置に対応するメディアデータを抽出するステップと、
抽出されたメディアデータ、及び前記メディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化し、独立して復号することに用いられるフラグメントメディアファイルを得るステップと、を含むメディアファイル変換方法を提供する。
【0009】
本開示の実施例は、さらに、
非ストリーミングメディアフォーマットを用いるメディアファイルのメタデータボックスにカプセル化されたメタデータを解析し、前記メディアファイルのメディアデータボックスにカプセル化されたメディアデータを記述するためのメディア情報を得るように構成される解析モジュールと、
前記メディア情報が示す前記メディアデータの時間に基づいて、所定期間のメディアデータを検索し、そして、前記メディア情報が示す前記メディアデータの前記メディアファイルにおける位置に基づいて、前記所定期間のメディアデータの前記メディアファイルにおける位置を検索するように構成される検索モジュールと、
前記メディアファイルのメディアデータボックスから前記位置に対応するメディアデータを抽出するように構成される抽出モジュールと、
抽出されたメディアデータ、及び前記メディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化し、独立して復号することに用いられるフラグメントメディアファイルを得るように構成される合成モジュールと、を含むメディアファイル変換装置を提供する。
【0010】
他の態様では、本開示の実施例は、さらに、
実行可能な命令を記憶するためのメモリと、
前記メモリに記憶された実行可能な命令を実行して本開示の実施例に係るメディアファイル変換方法を実現するためのプロセッサと、を含むメディアファイル変換装置を提供する。
【0011】
他の態様では、本開示の実施例は、さらに、実行可能な命令が記憶される、前記実行可能な命令が実行される時、本開示の実施例に係るメディアファイル変換方法を実現するための記憶媒体を提供する。
【0012】
他の態様では、本開示の実施例は、さらに、実行可能な命令が記憶される、前記実行可能な命令が実行される時、本開示の実施例に係るメディアファイル変換方法を実現するための記憶媒体を提供する。
【発明の効果】
【0013】
本開示の実施例は、以下の技術的効果を有する。
【0014】
メディアファイルから任意の所定期間のメディアデータを抽出してフラグメントメディアファイルを構成することができ、それにより、所定期間のメディアファイルを再生する必要がある場合、非ストリーミングメディアフォーマットのメディアファイルから所定期間のメディアデータを抽出し、独立して復号可能なフラグメントメディアファイルにカプセル化すればよい。このような方法で、非ストリーミングメディアフォーマットのファイルが完全にダウンロードされなければ独立して再生できないという制限を解除し、再生のリアルタイム性が高く、一方、完全なメディアファイルをストリーミングメディアフォーマットに予め変換する必要がなく、所定期間だけにフラグメントメディアファイルを構成すればよく、変換遅延が小さいため、予め記憶しておく必要がなく、本来のメディアファイルを除き、余分な記憶スペースを占有することがなく、記憶スペースへの占有を著しく低減する。
【図面の簡単な説明】
【0015】
【
図1】本開示の実施例に係るマルチメディアファイルカプセル化用のボックスの選択可能な構造概略図である。
【
図2】本開示の実施例におけるMP4ファイルの選択可能なカプセル化構造概略図である。
【
図3】本開示の実施例におけるメディアファイルにおけるメディアデータボックスのメディアデータを記憶する選択可能な構造概略図である。
【
図4】本開示の実施例におけるFMP4ファイルの選択可能なカプセル化構造概略図である。
【
図5】本開示の実施例に係るメディアファイル変換装置の選択可能な構造概略図である。
【
図6】本開示の実施例に係るメディアファイル変換装置の選択可能な構造概略図である。
【
図7】本開示の実施例に係るメディアファイル変換方法の選択可能なフローチャートである。
【
図8】本開示の実施例に係るメタデータボックスから解析してメディア情報を得る選択可能なフローチャートである。
【
図9】本開示の実施例に係るメディアファイルから所定期間のメディアデータを検索する選択可能なフローチャートである。
【
図10】本開示の実施例に係るメディアファイルから所定期間のメディアデータの位置を検索する選択可能なフローチャートである。
【
図11】本開示の実施例に係るフラグメントメディアファイルをカプセル化する選択可能なフローチャートである。
【
図12】本開示の実施例に係るメディアファイル変換方法の選択可能な使用シーンの概略図である。
【
図13】本開示の実施例に係るMP4ファイルをFMP4ファイルに変換してメディアソース拡張インタフェースにより再生する概略図である。
【発明を実施するための形態】
【0016】
本開示の目的、技術的解決手段及び利点をより明確にするため、以下、図面を参照しながら本開示をさらに詳細に説明し、説明される実施例が本開示を制限するものであると見なすべきではなく、当業者であれば創造的な労力を要さずに想到し得る他の実施例は、いずれも本開示の保護範囲に属する。
【0017】
本明細書で使用される全ての技術及び科学用語は、特に断りがない限り、本開示の技術分野に属する当業者に通常理解されるものと同義である。本明細書で使用される用語は、具体的な実施例を説明するためのものであり、本開示を限定するものではない。
【0018】
本開示をさらに詳しく説明する前に、本開示の実施例に係る名詞及び技術用語を説明する。本開示の実施例に係る名詞及び技術用語は、以下の解釈を適用する。
【0019】
1)メディアファイルは、容器(Box、ボックスとも呼ぶ)という形式で符号化されたメディアデータ(例えば、オーディオデータ及びビデオデータの少なくとも一種)を記憶するファイルである。メディアファイルには、メディアデータを正確的に復号されることを確保するために、メディアデータを記述するメタデータをさらに含む。
【0020】
例えば、MPEG(Moving Picture Experts Group)-4というパッケージMP4容器という方式でマルチメディアデータをパッケージすることで形成されるメディアファイルは、MP4ファイルという。典型的には、MP4ファイルには、AVC(Advanced Video Coding、即ちH.264)又はMPEG-4(Part2)標準に符合化された映像データ及びAAC(Advanced Audio Coding)標準に符合化された音声データが格納されており、もちろん映像と音声の他の符号化方式を除外しない。
【0021】
2)容器(Box)は、ボックスとも呼ばれ、唯一の類別識別子と長さで定義される、オブジェクト向けの部材である。
図1は、本開示の実施例に係る容器の選択可能な構造の一つを模式的に示す図である。
図1を参照して、容器には、容器ヘッダ(容器ヘッダ)及び容器データ(Box Data)が含まれ、各種情報を表現するための2値データが充填されている。ここで、容器が相互にネストされるとこができ、容器のデータは一連のサブ容器である場合、この容器がコンテナ容器(Container Box)となる。
【0022】
容器ヘッダは、容器がメディアファイルに占用する長さ記憶空間の大きさを示す容量(size)、及び容器の種類を示すタイプ(type)を含む。
図2は、本開示の実施例に係るMP4ファイルの選択可能なカプセル化構造の一つを模式的に示す図である。
図2を参照して、MP4ファイルには、ファイルタイプ容器(ftyp box)、メタデータ容器(moov box)及びメディアデータ容器(mdat box)という三つの基本的な容器タイプを含む。
【0023】
容器データ部は、具体的なデータを記憶することができ、このときの容器が「データ容器」と呼ばれる。容器データ部は別の種類の容器をさらにカプセル化することができ、このときの容器が「容器の容器」と呼んでもよい。
【0024】
3)トラック(Track)は、ストリーム(Stream)とも呼ばれ、メディアデータ容器において時間順にソートする相関のサンプル(Sample)である。メディアデータにおいては、トラックが一つの映像フレーム系列又は一つの音声フレーム系列を表し、映像フレーム系列に同期した字幕トラックを含んでもよい。同一のトラックにおける一組の連続するサンプルはチャンク(Chunk)と呼ばれる。
【0025】
4)ファイルタイプの容器は、メディアファイルにおいてファイルの容量(即ち、占用するバイトの長さ)やタイプを格納するための容器である。
図2に示すように、ファイルタイプの容器は、ftyp 容器と付けられ、格納される2値データが、ファイル容器の種類及び互換性を標準バイト長さに従って記述する。
【0026】
5)メタデータ容器は、メディアファイルにおいてメタデータ(即ち、メディアデータ容器に格納されるマルチメディアデータを記述するデータ)を記憶するための容器である。MP4ファイルのメタデータ容器に格納される2値データが表現する情報をメディア情報と呼ぶ。
【0027】
図2に示すように、メタデータ容器のヘッダは、容器タイプが「moov box」であることを2値データで表す。容器データ部は、MP4ファイルの全体情報を記憶するためのmvhd容器をカプセル化しており、時間長、作成時刻、修正時間などを含み、MP4ファイルから独立して、MP4ファイルの再生に関するものである。
【0028】
メディアファイルのメディアデータ容器に、複数のトラック、例えば音声トラック容器(オーディオトラック容器)及び映像トラック容器(ビデオトラック容器)、に対応するサブ容器を含んでもよい。音声トラック容器及び映像トラック容器のサブ容器のそれぞれには、対応するトラックのメディアデータの参照及び記述を含んでいる。必要なサブ容器には、トラックの特性及び全体情報(例えば時間、高さ、幅)を記述するための容器(tkhd boxと記す)と、トラックのメディア情報(例えばメディアタイプ及びサンプルに関する情報)を記録する容器(mdia boxと記す)と、を含む。
【0029】
メディア容器にカプセル化されるサブ容器については、トラックの関連属性及び内容を記録する容器(mdhd boxと記す)と、メディアを再生する過程情報を記録する容器(hdlr boxと記す)と、トラックにおけるメディアデータのメディア情報を記述する容器(minf boxと記す)と、を含むことができる。minf 容器には、どのようにメディア情報を位置決めるかを解釈するためのサブ容器(dinf boxと記す)、及びトラックでサンプリングした全ての時間情報(復号時間/表示時間)、位置情報及び復号/符号などの情報を記録するためのサブ容器(stbl boxと記す)がさらにカプセル化される。
【0030】
図3は、本開示の実施例に係るメディアファイルにおけるメディアデータ容器がメディアデータを記憶する構造模式図である。
図3に示すように、stbl容器の2値データから識別されるメディア情報を用いて、サンプルの時間、タイプ、容量及びメディアデータ容器における位置を解釈可能である。次に、stbl 容器における各サブ容器について説明する。
【0031】
stsd容器は、1つのサンプルディスクリプション(sample description)テーブルを含む。各メディアファイルには、異なる符号化方式及び記憶データのファイル数に応じて、一つ又は複数のディスクリプションテーブルが含まれることができる。ディスクリプションテーブルを通じて、サンプル毎のディスクリプション情報を見当たることができる。ディスクリプション情報は、サンプルを正しく復号されることを保証できる。異なるメディアタイプに対して相違するディスクリプション情報、例えば映像メディアについてのディスクリプション情報が画像の構造、を格納する。
【0032】
stts容器は、サンプルの時間長に関する情報を格納するものであり、時間(復号時間)とサンプルの番号とをマッピングするためのテーブルを提供する。sttx boxにより、メディアファイルおける任意の時間のサンプルを位置決めすることができる。stts 容器はさらに他のテーブルを用いてサンプルの容量とポインタとをマッピングし、テーブルにおけるエントリごとに同じ時間オフセット内で連続するサンプルの番号、およびサンプリングのオフセットを与え、これらのオフセットを増加させて、完全な時間-サンプルのマッピングテーブルを作成し、数式は次のようになる。
【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(for j=0 to i-1 of delta(j)) (2)
【0036】
全てのオフセットの和はトラックにおけるメディアデータの時間長である。
【0037】
sStss(Time-To-Sample Atoms)容器は、メディアファイルにおけるキーフレームの番号を記録するものである。
【0038】
stsc(Sample-To-Chunk Atom)容器は、サンプルとサンプルを格納するチャンクとのマッピング関係を記録するものであり、テーブルによりサンプルの番号とチャンクの番号との関係をマッピングし、テーブルを調べることで特定のサンプルを含むチャンクを見つけることができる。
【0039】
stco容器は、トラック内における各チャンクの位置を定義するものであり、位置が、メディアデータ容器の先頭バイトのオフセットと、先頭バイトに対する長さ(容量)で表される。
【0040】
stsz(Sample Size Atom)容器は、メディアファイルの各サンプルの容量(即ちサイズ)を記録する。
【0041】
6)メディアデータ容器は、メディアファイルにおいてマルチメディアデータを記憶するための容器である。例えば、MP4ファイルにおけるメディアデータ容器は、
図3に示すように、サンプルがメディアデータ容器において記憶する単位であって、メディアファイルのチャンクに記憶され、チャンクとサンプルの長さは互いに異なってもよい。
【0042】
7)セグメントメディアファイルは、メディアファイルを分割して形成され、それぞれ独立して復号できるサブファイルである。
【0043】
MP4ファイルを例とすれば、MP4ファイルのメディアデータがキーフレームによって分割され、分割されたメディアデータと対応するメタデータとをセグメントメ化FMP4ファイルにカプセル化し、各FMP4ファイルにおけるメタデータがメディアデータが正確的に復号されることを保証できる。
【0044】
図4は、本開示の実施例に係るセグメント化MP4(FMP4)ファイルの選択可能なカプセル化構造の一つを模式的に示す図である。例えば、
図2に示すMP4ファイルを複数のFMP4ファイルに変換するとき、
図4に示すように、一つのMP4ファイルは、複数のFMP4ファイルに変換でき、各FMP4ファイルには、moov容器、moof容器及びmdat容器という三つの基本的な容器が含まれる。
【0045】
moov容器は、MP4ファイルレベルのメタデータを含み、FMP4ファイルの由来となるMP4ファイルにおける全てのメディアデータ、例えばMP4ファイルの時間長、作成時刻、修正時間などを記述するためのものである。
【0046】
moof容器は、セグメントレベルのメタデータを記憶し、FMP4ファイルにカプセル化されたメディアデータを記述し、FMP4におけるメディアデータの復号が可能であることを保証するためのものである。
【0047】
1つのmoof容器と1つのmdat容器は、セグメント化MP4ファイルの1つのセグメントを構成し、1つのセグメント化MP4ファイルに一つ又は複数のこのようなセグメントが含まれてもよい。各セグメントにカプセル化されたメタデータは、当該セグメント内にカプセル化されたメディアデータが独立して復号することができることを保証する。
【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ファイルの欠落部分に無効な2値データを充填(例えば、ftyp容器及びmoov容器が完全にダウンロードされた場合、mdat容器の欠落部分に無効な2値データを代わりに充填)することで、ダウンロードしながら再生する技術効果を実現できる。本明細書には、このような本来にストリームメディアの形式の再生をサポートしないカプセル化フォーマットを、非ストリームメディアフォーマットという。
【0052】
まず本開示の実施例を実現するメディアファイル変換装置について説明し、メディアファイル変換装置はハードウェア、ソフトウェア又はソフトウェアとハードウェアの組み合わせにより提供される。
【0053】
以下、メディアファイル変換装置のソフトウェアとハードウェアを組み合わせる実施を説明し、
図5に示すように、
図5は本開示の実施例に係るメディアファイル変換装置の選択可能な構造概略図であり、メディアファイル変換装置500は、ビデオ再生機能付きの携帯電話、コンピュータ、デジタル放送端末、情報送受信装置、ゲームコンソール、タブレットデバイス、医療装置、フィットネス機器、パーソナルデジタルアシスタント等を含んでもよい。
図5に示すメディアファイル変換装置500は、少なくとも1つのプロセッサ501、メモリ502、少なくとも1つのネットワークインタフェース504及びユーザインタフェース503を含む。メディアファイル変換装置500内の各コンポーネントはバスシステム505によって結合される。バスシステム505は、これらのコンポーネント間の接続通信を実現するために用いられると理解できる。バスシステム505は、データバスの他に、電源バス、制御バス及び状態信号バスをさらに含む。ただし、説明を明確にするために、
図6では、各バスをバスシステム505とマーキングする。
【0054】
ここで、ユーザインタフェース503は、ディスプレイ、キーボード、マウス、トラックボール、クリックホイール、キー、ボタン、タッチパネル、又はタッチスクリーン等を含むことができる。
【0055】
メモリ502は、揮発性メモリ又は不揮発性メモリであってもよく、揮発性メモリと不揮発性メモリの両方を含んでもよいと理解できる。そのうち、不揮発性メモリは、リードオンリーメモリ(ROM、Read Only Memory)、プログラマブルリードオンリーメモリ(PROM、Programmable Read-Only Memory)、消去可能プログラマブルROM(EPROM、Erasable Programmable Read-Only Memory)、電気的消去可能プログラマブルROM(EEPROM、Electrically Erasable Programmable Read-Only Memory)であってもよい。磁気表面メモリは、磁気ディスクメモリ又は磁気テープメモリであってもよい。揮発性メモリは、ランダムアクセスメモリ(RAM、Random Access Memory)であってもよく、それは外部のキャッシュメモリとして使用される。例示的に、多くのタイプのRAM、例えば、スタティックランダムアクセスメモリ(SRAM、Static Random Access Memory)、同期型スタティックランダムアクセスメモリ(SSRAM、Synchronous Static Random Access Memory)、ダイナミックランダムアクセスメモリ(DRAM、Dynamic Random Access Memory)、同期型ダイナミックランダムアクセスメモリ(SDRAM、Synchronous Dynamic Random Access Memory)が使用できるが、それらに限定しない。本開示の実施例に記載のメモリ502はこれら及び任意の他の適切なタイプのメモリを含むことを目的とする。
【0056】
本開示の実施例におけるメモリ502は、サーバから取得されたメディアファイルデータを記憶してメディアファイル変換装置500の動作をサポートできる三値連想メモリ、スタティックランダムメモリを含むが、これらに限定されない。これらのデータは、例示的にオペレーティングシステム5021及びアプリケーション5022のようなメディアファイル変換装置500上で動作するための任意のコンピュータプログラム、及び各種のメディアファイルデータ情報等を含む。そのうち、オペレーティングシステム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】
以下、
図5に基づいて、
図6に示した各モジュールの機能について説明を続ける。
【0065】
解析モジュール601は、非ストリーミングメディアフォーマットを用いるメディアファイルのメタデータボックスにカプセル化されたメタデータを解析し、メディアファイルのメディアデータボックスにカプセル化されたメディアデータを記述するためのメディア情報を得るように構成される。
【0066】
本開示の一実施例では、解析モジュール601は、メタデータボックスにおけるサブボックスのネスト構造を解析し、ネスト構造に基づいて各サブボックスにおける2値データを読み出すように構成される。解析モジュール601は、読み出された2値データから各サブボックスが特徴付けるメディアデータのメディア情報を解析するように構成される。
図2に示す構造を参照し、ボックスがネスト構造であってもよいため、まず、メタデータボックスにおけるサブボックスのネスト構造を解析し、対応する2値データをmdatボックスから解析する。本実施例に示した技術的解決手段により、ネスト構造のメタデータボックスの解析及び関連データの取得を実現することができる。
【0067】
検索モジュール602は、メディア情報が示すメディアデータの時間に基づいて、所定期間のメディアデータを検索する。
【0068】
本開示の一実施例では、検索モジュール602は、メディアデータの時間に基づいて、メディアファイル内の2つのキーフレームを検索し、2つのキーフレームが所定期間の開始時間及び終了時間に対応するように構成される。検索モジュール602は、メディアデータの時間に基づいて、2つのキーフレーム間のビデオフレームと整列するオーディオフレームを検索するように構成される。検索モジュール602は、メディアデータの位置に基づいて、2つのキーフレーム間のビデオフレームのメディアファイルにおける位置を検索し、かつオーディオフレームのメディアファイルにおける位置を検索するように構成される。
図2に示す構造を参照し、本実施例に示した技術的解決手段により、ネスト構造におけるビデオフレームの決定を実現し、かつ、audio trackボックスにおける対応するオーディオフレームの位置の決めを実現することができる。
【0069】
検索モジュール602は、メディア情報が示すメディアデータのメディアファイルにおける位置に基づいて、所定期間のメディアデータのメディアファイルにおける位置を検索するように構成される。
【0070】
本開示の一実施例では、検索モジュール602は、さらに、メディアデータの時間に基づいて、復号時間が所定期間の開始時間に一致する第1のキーフレームを検索するように構成される。検索モジュール602は、さらに、復号時間が所定期間の開始時間よりも早いキーフレームのうち、開始時間に最も近い第1のキーフレームを検索するように構成される。検索モジュール602は、さらに、メディアデータの時間に基づいて、復号時間が所定期間の終了時間に一致する第2のキーフレームを検索するように構成される。検索モジュール602は、さらに、復号時間が所定期間の終了時間よりも遅いキーフレームのうち、終了時間に最も近い第2のキーフレームを検索するように構成される。
【0071】
本開示の一実施例では、検索モジュール602は、さらに、メディアデータの時間に基づいて、復号時間が所定期間にあるオーディオフレームを検索するように構成される。
【0072】
最後のオーディオフレームの復号時間が所定期間の終了時間に一致し、又は所定期間の終了時間よりも遅く、かつ、終了時間に最も近い。本実施例に示した技術的解決手段により、メディアデータの時間に基づいて、復号時間が所定期間にあるオーディオフレームを検索することを実現でき、最初のオーディオフレームの復号時間が所定期間の開始時間に一致し、又は最初のオーディオフレームの復号時間が所定期間の開始時間よりも早く、かつ、開始時間に最も近く、そのため形成されたフラグメントメディアファイルがMP4ファイルに出現する可能性のあるビデオ、オーディオ時間が一致しないという問題を解消し、各フレームのビデオ再生時に同期したオーディオが再生されることを保証し、オーディオがない現象が発生せず、ユーザの使用体験を向上させる。
【0073】
抽出モジュール603は、メディアファイルのメディアデータボックスから対応する位置のメディアデータを抽出するように構成される。
【0074】
本開示の一実施例では、抽出モジュール603は、2つのキーフレーム間のビデオフレームの位置に対応するオフセット量及び容量、並びにビデオフレームと整列するオーディオフレームの位置に対応するオフセット量及び容量に基づいて、最小オフセット量と最大容量で構成される区間を決定する。抽出モジュール603は、メディアファイルのメディアデータボックスの対応する区間からメディアデータを抽出するように構成される。本実施例に示した技術的解決手段により、最小オフセット量と最大容量で構成される区間を決定し、メディアファイルのメディアデータボックスの対応する区間からメディアデータを抽出することにより、メディアデータに対する再度抽出を回避し、メディアデータに対する処理効率を効果的に向上させる。
【0075】
本開示の一実施例では、オフセット量はメディアファイルのメディアデータボックスにおけるメディアデータの記憶開始位置を特徴付け、容量は記憶開始位置からメディアデータが占有する長さを特徴付ける。
【0076】
本開示の一実施例では、抽出モジュール603は、ビデオフレームの記憶位置に基づいて、ビデオフレームを抽出し、ビデオフレームの抽出が完了した後、オーディオフレームの記憶位置に基づいてオーディオフレームを抽出するように構成される。
【0077】
本開示の一実施例では、抽出モジュール603は、所定のカットオフ値に基づいて、メディアデータにおいて、ビデオフレーム及びオーディオフレームを抽出するように構成される。本実施例に示した技術的解決手段により、1回だけの抽出により対応するオーディオフレーム及びビデオフレームを取得することにより、メディアファイルの処理速度を向上させることができる。
【0078】
合成モジュール604は、抽出されたメディアデータ、及びメディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化し、独立して復号することに用いられるフラグメントメディアファイルを取得するように構成される。
【0079】
本開示の一実施例では、合成モジュール604は、メディアファイルのタイプ及び互換性を示すデータに対して、フラグメントメディアファイルのファイルタイプボックスに充填するために充填動作を実行するように構成される。合成モジュール604は、メディアファイルのファイルレベルを示すメタデータを、フラグメントメディアファイルのメタデータボックスに充填するように構成される。合成モジュール604は、抽出されたメディアデータ、及びメディアデータを記述するメタデータを、フラグメントメディアファイルのフラグメントボックスにおけるメディアデータボックス、及びフラグメントレベルのメタデータボックスに対応して充填するように構成される。
図4に示す構造を参照し、合成モジュール604は、メディアファイルのタイプ及び互換性を示すデータを、moovボックスに充填し、メディアファイルのファイルレベルを示すメタデータをmoofボックスに充填し、抽出されたメディアデータ、及びメディアデータを記述するメタデータをmdatボックスに充填するように構成される。本実施例に示した技術的解決手段により、メディアデータに対するカプセル化及び充填により、独立して復号することに用いられる完全なフラグメントメディアファイルを取得することができる。
【0080】
本開示の一実施例では、合成モジュール604は、さらに、フラグメントメディアファイルのサブボックスに対応する装置において、サブボックスとネスト関係を有するサブボックスとのマージを完了するためにクラスの書き込み操作機能を呼び出すように構成される。
【0081】
本開示の一実施例では、合成モジュール604は、さらに、クラスの書き込み操作機能を呼び出してサブボックスのメモリバッファに2値データの書き込み及びマージを完了し、そして、クラスのインスタンスを返すように構成され、返されたインスタンスがサブボックスとネスト関係を有するサブボックスとのマージに用いられる。
【0082】
本開示の一実施例では、合成モジュール604は、さらに、書き込まれた2値データを記憶するために、クラスStreamにより1つのメモリバッファを提供するように構成される。Streamによる静的な方法で、充填される複数バイトの10進データを2値データに変換する。各クラスStreamのインスタンスによって提供される書き込み操作機能により、メモリバッファにサブボックスに充填される2値データのマージを完了する。方法としては、1つの新たなStreamインスタンスを返し、本実施例に示した技術的解決手段により、現在のサブボックスとネスト関係を有する他のサブボックスとのマージを実現し、それによりサブボックスの調整を柔軟に実現することができる。
【0083】
本開示の一実施例では、メディアファイルのメタデータボックスにカプセル化されたメタデータを解析する前にメディアファイルのメタデータを要求することをさらに含み、元の解像度メディアファイル又はターゲット解像度メディアファイルのメタデータを要求する時、まず要求されたバッファが既に要求されたか否かをチェックし、既に要求されたら、メディアデータを要求し続け、メタデータを繰り返し要求せず、本実施例に示した技術的解決手段により、既に要求されたメディアデータを利用して、データ取得の手間を省き、動作速度を向上させることができる。
【0084】
本開示の一実施例では、合成モジュール604は、さらに、メタデータボックスのメディアファイルにおける位置に基づいて、メディアファイルの2値データからメタデータボックスに対応する2値データを取得し、取得した2値データのうちメタデータボックスヘッダの基準長さに対応する2値データを順次解析して、メタデータボックスにおけるサブボックスのボックスタイプ、及びサブボックスのボックスデータの長さを得て、サブボックスのボックスタイプに対応するタイプのパーサーを呼び出し、未解析データのうちボックスデータの長さに対応する2値データを順次解析し、ボックスデータが示すメディア情報を得るように構成される。
【0085】
本開示の一実施例では、プレーヤが所定期間内のメディアデータを取得する流れについて説明する。ウェブページに埋め込まれるプレーヤにより1つのビデオファイル又は1つのトラックのメディアファイルを再生する時、プレーヤは、データストリームを正確に解析でき、一定の時間に対応するメディアデータを取得し、かつそのメディアデータが独立して復号されることを確保しなければならない。
【0086】
本開示の実施例に係るメディアファイル変換装置を参照しながら、本開示の実施例を実現するメディアファイル変換方法を説明し、以下、メディアファイルがMP4ファイルであることを例として、ダウンロードに記載のMP4ファイルに対する変換方法に基づいて、MKV、WMV、ASF等の他の非ストリーミングメディアフォーマットのメディアファイルに容易に適用できることを理解できる。
【0087】
図7に示すように、
図7は本開示の実施例に係るメディアファイル変換方法の選択可能なフローチャートであり、
図7に示すステップを参照しながら説明する。
【0088】
ステップ701、メディアファイルのメタデータボックスにカプセル化されたメタデータを解析し、メディアファイルのメディアデータボックスにカプセル化されたメディアデータを記述するためのメディア情報を得る。
【0089】
本開示の一実施例では、メディアファイルは、MP4ファイルであり、メディアファイルのメタデータボックスにおけるサブボックスのネスト構造を解析し、ネスト構造に基づいて各サブボックスにおける2値データを読み出し、読み出された2値データから各サブボックスが特徴付けるメディアデータのメディア情報を解析する。
【0090】
図2に示す構造を参照し、MP4ファイルのmoovボックスは、ネスト構造であり、メタデータボックスにおけるサブボックスのネスト構造を解析し、moovボックスにネスティングされたサブボックス、例えばmvhdボックス、オーディオトラックボックス及びビデオトラックボックス等を決定し、サブボックスにボックスもネスティングされると解析を継続し、ボックスがネスティングされないサブボックスまで解析し、このとき、対応するサブボックスにカプセル化された2値データを読み取り、解析して2値データが示すメディアメッセージ、例えばstss boxに記録されたメディアファイル内のキーフレームの番号、stsz boxに記録されたメディアファイルにおける各サンプリングの容量(即ちサイズ)等を得る。
【0091】
本開示の一実施例では、ボックスタイプに基づいてパーサーを設け、ボックスタイプに基づいてメタデータボックス内のサブボックスを解析することによりメディア情報を得る方式を提供し、
図8を参照しながら説明する。
【0092】
図8に示すように、
図8は、本開示の実施例に係るメタデータボックスから解析してメディア情報を得る選択可能なフローチャートであり、
図8に示すステップを参照しながら説明する。
【0093】
ステップ801、メタデータボックスのメディアファイルにおける位置を決める。
【0094】
一実施例では、メディアファイルの2値データからボックスヘッダの基準長さに一致する2値データを読み取り、読み取られた2値データから識別されるボックスのタイプや長さに基づいて、メディアファイルにおけるメタデータボックスのオフセット量及び容量を位置決めする。
【0095】
例えば、メディアファイルの2値データについて、ゼロバイトから開始する2値データがファイルタイプボックスに対応し、ボックスヘッダの基準長さにより、メディアファイルの2値データの開始位置を読み取り、ボックスヘッダの基準長さに一致する2値データを読み取り、読み取られた2値データを解析してメディアファイル内のファイルタイプボックスの後にあるボックスのタイプ及び長さを決定する。
【0096】
解析されたタイプがファイルタイプボックスであれば、メタデータボックスの長さ(即ち容量)を解析することができ、このとき、メタデータボックスのオフセット量は、ファイルタイプボックスの長さである。
【0097】
解析されたタイプがメディアデータボックスであると、メディアデータボックスの長さとタイプボックスの長さがオフセット量であることに基づいて、ボックスヘッダの基準長さに一致する2値データを読み取り続け、それによりメタデータボックスの長さ(即ち容量)を解析することができ、このとき、メタデータボックスの長さは、ファイルタイプボックスの長さとメディアデータボックスの長さとの和である。
【0098】
メディアファイルは、最初のボックスがファイルタイプボックスである他、後のボックスのカプセル化順序が規範化されず、上記解析方式により、メディアファイルにおけるボックスのカプセル化順序が、ファイルタイプボックス、メタデータボックス及びメディアデータボックスであるか、又はファイルタイプボックス、メディアデータボックス及びメタデータボックスであるに関わらず、ファイルタイプボックスのメディアファイルにおける位置を正確で、効果的に位置決めすることができる。
【0099】
ステップ802、メタデータボックスのメディアファイルにおける位置に基づいて、メディアファイルの2値データからメタデータボックスに対応する2値データを取得する。
【0100】
メタデータボックスのメディアファイルにおける位置がオフセット量及び容量で表され、読み取られた2値データの長さがメタデータボックスの容量に一致するまで、メディアファイルからオフセット量に対応する位置から2値データを読み取り始め、それによりメタデータボックスに対応する2値データを読み出す。
【0101】
ステップ803、メタデータボックス2値データのうちボックスヘッダの基準長さに対応する2値データを順次解析して、メタデータボックスにおけるサブボックスのボックスタイプ、及びサブボックスのボックスデータの長さを得る。
【0102】
一実施例では、メタデータボックスに複数のサブボックスがネスティングされる場合、毎回読み取られた2値データのオフセット量がいずれも既に識別されたサブボックスの長さの和であり、読み取られた2値データの長さがボックスヘッダの基準長さに一致し、それにより現在処理されたサブボックスのタイプ及び長さを解析することができる。
【0103】
例えば、初回に読み取る時、メタデータボックスの2値データのゼロバイトから2値データを読み取り始め、かつ読み取られた2値データの長さがボックスヘッダの基準長さに一致し、それにより1番目のサブボックスのタイプ及び長さを解析することができる。2回目に読み取る時、初回に読み取られたサブボックスの長さをオフセット量として、2値データを読み取り始め、かつ読み取られた2値データの長さがボックスヘッダの基準長さに一致し、それにより2番目のサブボックスのタイプ及び長さを解析することができる。
【0104】
上記方法で2値データを読み取ったら、読み取りすぎによるロールバックが発生せず、完全に読み取らないため再度読み取る場合もなく、解析効率及び正確度が保証される。
【0105】
ステップ804、サブボックスのボックスタイプに対応するタイプのパーサーを呼び出し、未解析データのうち、ボックスデータの長さに対応する2値データを順次解析し、ボックスデータが示すメディア情報を得る。
【0106】
一実施例では、メタデータボックスにネスティングされた典型的なボックスタイプを予めマーキングし、ボックスが2値データを直接的にカプセル化するか又はボックスをさらにカプセル化するかを示すために用いられ、例えば、
図2に示すmvhd box、audio track box及びvideo track box等に対してボックスをさらにカプセル化するとマーキングし、
図2に示すstts box、stsd box等に対して2値データを直接的にカプセル化するとマーキングする。
【0107】
2値データを直接的にカプセル化するとマーキングされるボックスタイプに対して、ボックスタイプに1対1に対応するパーサーを設け、パーサーは2値データに基づいて示されるメディア情報を解析するために用いられる。ステップ804では、ステップ803で解析されたサブボックスのボックスタイプと予めマーキングされたボックスタイプとを比較する時、以下の2つのケースが存在する。
【0108】
ケース1)照合によりサブボックスのボックスタイプが予めマーキングされ、かつ2値データを直接的にカプセル化するために用いられると予めマーキングされると決定すると、サブボックスのボックスタイプに対応するパーサーを呼び出し、パーサーでサブボックス内のボックスデータを解析することにより、ボックスデータが示すメディア情報を得る。
【0109】
ケース2)照合によりサブボックスのボックスタイプが予めマーキングされ、かつボックスをカプセル化し続けるために用いられると予めマーキングされると決定すると、メディアファイルにおけるボックスヘッダの基準長さに基づいて、サブボックスに対応する2値データを再帰的に解析し、サブボックスにカプセル化されたボックスのボックスタイプが予めマーキングされ、かつ2値データを直接的にカプセル化するために用いられると予めマーキングされるまで解析し、サブボックスにカプセル化されたボックスのボックスタイプに対応するパーサーを呼び出し、2値データをバイトで解析し、解析された2値データの長さは、サブボックスにカプセル化されたボックスのボックスデータの長さに対応し、それによりサブボックスにカプセル化されたボックスのボックスデータが示すメディア情報を得る。
【0110】
一実施例では、メタデータボックスを解析する過程でメディア情報を記録する方式について説明し、メタデータボックス2値データにおいてボックスヘッダの基準長さに対応する2値データを順次解析し、メタデータボックスにおけるサブボックスのボックスタイプを得る時、サブボックスと所属するボックスとの間のネスティング関係、及びサブボックスとカプセル化されたボックスとのネスティング関係に基づいてオブジェクトを確立し、サブボックスのボックスタイプが2値データを直接的にカプセル化するために用いられると予めマーキングされる時、対応するサブボックスが確立するオブジェクトにはメディア情報を含む配列を記憶し、記憶されたメディア情報はサブボックスのボックスデータによって示される。
【0111】
例えば、
図2では、解析されるサブボックスのタイプがstts boxである時、stts boxが2値データを直接的にカプセル化すると予めマーキングされるため、対応するstts boxが確立するオブジェクトにはメディア情報を含む配列を記憶し、ここでメディア情報はstts boxのボックスデータが示す時間長情報である。
【0112】
一実施例では、メタデータボックスを解析する過程でサブボックス間のネスティング関係を記録する方式について説明し、メタデータボックス2値データにおいてボックスヘッダの基準長さに対応する2値データを順次解析し、メタデータボックスにおけるサブボックスのボックスタイプを得る時、ボックスタイプが2値データを直接的にカプセル化すると予めマーキングされる場合、呼び出されたパーサーに解析されたサブボックスを記録する。記録されたサブボックスのインスタンスをサブボックス属性に設定し、サブボックス属性はサブボックスが所属するボックスに含まれ、サブボックスと所属するボックスとの間のネスティング関係を記述するために用いられる。
【0113】
例えば、
図2では、解析されたサブボックスのタイプがstsd boxである時、stsd boxが2値データを直接的にカプセル化すると予めマーキングされるため、stsd boxに対応するパーサーにstsd boxを記録し、stsd boxのインスタンスをstbl boxサブボックス属性に設定し、これによって類推し、最後にstsd boxのサブボックス属性にstsd box、stts box、stsc box等のstbl boxにネスティングされた複数のサブボックスを記録している。
【0114】
一実施例では、照合によりサブボックスのボックスタイプが予めマーキングされないか、又は2値データを直接的にカプセル化するが対応するタイプのパーサーが呼び出されなかったと予めマーキングされると決定する時、サブボックスに対応する2値データの解析を無視し、サブボックスの長さに基づいて、2値データにおける次のサブボックスに対応する部分にジャンプして解析し続ける。
【0115】
実際に、メディアファイルにカスタマイズされたボックスタイプが出現し、ジャンプ方式がメタデータボックスの解析全体の進捗に影響を及ぼすことがなく、またパーサーを設置する方式により、メタデータボックスのボックスタイプが変化する時、対応するタイプのパーサーを追加、削除、修正することにより、最新のメタデータボックスに対する互換性のある解析を迅速に実現することができ、アップグレードが柔軟で迅速であるという特徴がある。
【0116】
ステップ702、メディア情報が示すメディアデータの時間に基づいて、所定期間のメディアデータを検索する。
【0117】
本開示の一実施例では、
図9に示すように、
図9は本開示の実施例に係るメディアファイルから所定期間のメディアデータを検索する選択可能なフローチャートであり、
図9に示すステップを参照しながら説明する。
【0118】
ステップ901、メディアデータの時間に基づいてメディアファイルにおける2つのキーフレームを検索し、2つのキーフレームは所定期間の開始時間と終了時間に対応する。
【0119】
本開示の一実施例では、メディアデータの時間に基づいてメディアファイルにおける2つのキーフレームを検索する時にメディアデータの時間に基づいて、復号時間が所定期間の開始時間に一致する第1のキーフレームの番号を検索し、又は、復号時間が所定期間の開始時間よりも早いキーフレームのうち、開始時間に最も近い第1のキーフレームの番号を検索する。メディアデータの時間に基づいて、復号時間が所定期間の終了時間に一致する第2のキーフレームの番号を検索し、又は、復号時間が所定期間の終了時間よりも遅いキーフレームのうち、終了時間に最も近い第2のキーフレームの番号を検索する。
【0120】
例えば、メディアファイルの時間長が120秒であり、そのうちいくつかのキーフレームを含み、所定期間が20~40秒である場合、フレームの復号時間とフレームの番号とのマッピング関係に基づいて、まず、復号時間がちょうど20秒目のキーフレームがあるか否かを検索し、存在する場合、復号時間がちょうど20秒目のキーフレームを第1のキーフレームとする。存在しない場合、復号時間が20秒目より早く、かつ、開始時間の20秒目に最も近い1つのキーフレームを第1のキーフレームとして検索する。
【0121】
次に、復号時間がちょうど40秒目にあるキーフレームがあるか否かを検索し、存在する場合、復号時間がちょうど40秒目のキーフレームを第2のキーフレームとする。存在しない場合、復号時間が40秒目よりも遅く、かつ、40秒目に最も近い1つのキーフレームを第2のキーフレームとして検索する。
【0122】
ビデオフレームにおけるキーフレームを検索する方式により、開始時間が通常のフレームに対応するためジャンプされるフレームが再生できない状況を回避しつつ、無駄なデータの取得を最大限に低減し、ネットワーク伝送時にトラフィックを節約することができる。
【0123】
ステップ902、メディアデータの時間に基づいて2つのキーフレーム間のビデオフレームと整列するオーディオフレームを検索する。
【0124】
一実施例では、プレーヤは、次のようにメディアデータの時間から所定期間に一致するオーディオフレームを検索することができる。メディアデータの時間から復号時間が所定期間に基づいて分布するオーディオフレームを検索し、ビデオフレームを基準として、ビデオフレームに時間が同期したオーディオフレームを位置決めする。ここで、再生ポイントの時間に対応するオーディオフレームが存在する場合、最初のオーディオフレームの復号時間が所定期間の開始時間に一致する。再生ポイントの時間に対応するオーディオフレームが存在しない場合、最初のオーディオフレームの復号時間が所定期間の開始時間よりも早く、かつ開始時間に最も近く、最初のオーディオフレームの復号時間が最初のビデオフレーム(上記第1のキーフレーム)の復号開始時間よりも遅くないことを保証する。所定期間の終了時間に対応するオーディオフレームが存在する場合、最後のオーディオフレームの復号時間が所定期間の終了時間に一致する。所定期間の終了時間に対応するオーディオフレームが存在しない場合、最後のオーディオフレームの復号時間が所定期間の終了時間よりも遅く、かつ終了時間に最も近く、最後のオーディオフレームの復号時間が最後のビデオフレーム(上記第2のキーフレーム)の復号時間よりも早くないことを保証する。
【0125】
オーディオフレームを検索する上記方式により、形成されたビデオフレームと対応するオーディオフレームを含むフラグメントメディアファイルは出現する可能性があるビデオ、オーディオ時間長が一致しないという問題を解消し、各フレームのビデオ再生時に同期したオーディオが再生され、音声がない現象が発生しないことを保証する。
【0126】
ステップ903、メディアデータの位置に基づいて、2つのキーフレーム間のビデオフレームのメディアファイルにおける位置を検索し、かつオーディオフレームのメディアファイルにおける位置を検索する。
【0127】
一実施例では、ステップ703によれば、メディアデータのメディアファイルにおける位置を2つの区間として示すことができる。1つ目の区間は、即ちメディアファイルにおける2つのキーフレーム間のビデオフレームの位置であり、メディアファイルのメディアデータボックスにおけるオフセット量及び容量を含む。二つ目の区間は、即ちメディアファイルにおける2つのオーディオフレーム間のオーディオフレームの位置であり、メディアファイルのメディアデータボックスにおけるオフセット量及び容量を含む。ここで、オフセット量はメディアファイルのメディアデータボックスにおけるメディアデータの記憶開始位置を特徴付け、容量はメディアデータの記憶開始位置から占有し始める長さを特徴付ける。
【0128】
他の実施例では、メディアデータのメディアファイルにおける位置は1つの区間として示され、2つのキーフレーム間のビデオフレームの位置に対応するオフセット量及び容量、並びにビデオフレームと整列するオーディオフレームの位置に対応するオフセット量及び容量に基づいて、最小オフセット量と最大容量で構成される区間を決定する。
【0129】
例えば、第1のキーフレームと第2のキーフレームとの間のビデオフレームのターゲット解像度メディアファイルにおける位置のオフセット量は、対応区間が[a,b](アドレスが昇順)であり、オーディオフレームのターゲット解像度メディアファイルにおける位置のオフセット量は、対応区間が[c,d](アドレスが昇順)であれば、位置の上限と下限で構成される区間、即ち[min(a,c)、max(b,d)]を取る。
【0130】
1つの区間を決定する上記方式により、メディアファイルから所定時間のメディアデータを一括して抽出することができ、プレーヤの読み取り回数を減らし、処理効率を向上させる。このように、プレーヤは、ターゲット区間のオフセット量及び容量を搬送するネットワークリクエストをサーバに送信して、ターゲット区間のメディアデータを要求し、サーバはターゲット区間のオフセット量及び容量に基づいてメディアファイル内のメディアデータを抽出した後に、再度取得する必要がなく、ターゲット区間のメディアデータを一括して返信することができ、プレーヤの要求回数を減らし、処理効率を向上させる。
【0131】
図2に示す構造を参照し、本実施例に示した技術的解決手段により、ネスト構造におけるビデオフレームの決定を実現し、オーディオトラック(audio track)ボックスにおける対応するオーディオフレーム位置の決めを実現することができる。
【0132】
ウェブページに埋め込まれたプレーヤにより所定期間のメディアファイルを再生する時、所定期間に基づくメディアデータで構成されたフラグメントメディアファイルに対して、メディアファイルにある一部のメディアデータの、オフセット量及び容量を含む位置を知る必要があり、メディアデータを正確に抽出してフラグメントメディアファイルを構成し、それにより正確に復号できる。
【0133】
ステップ703、前記メディア情報が示す前記メディアデータの前記メディアファイルにおける位置に基づいて、前記所定期間のメディアデータの前記メディアファイルにおける位置を検索する。
【0134】
以下、メディアファイルが
図4に示すカプセル化構造を用いることを例として、メディアファイルから所定期間のメディアデータのメディアファイルにおける位置を検索することを説明し、
図10に示すように、
図10は、本開示の実施例に係るメディアファイルから所定期間のメディアデータの位置を検索する選択可能なフローチャートであり、
図10に示すステップを参照しながら説明する。
【0135】
ステップ1001、取得されるメディアデータに対応する期間を決定する。
【0136】
期間は再生ポイントに続く一定の時間であり、再生ポイントに対応する時間はメディア時間座標系(メディアファイルの再生開始時間を時間原点とする)の時間に対して測定され、期間の長さはメディアファイルの長さよりも小さく、例えばメディアファイル長さの所定割合の5%であり、又は10分間等の所定の長さである。
【0137】
ステップ1002、sttsボックス(box)をチェックして復号時間が所定期間内にあるサンプリング(ビデオフレームとオーディオフレームを含む)の番号を決定する。
【0138】
例えば、オーディオフレームについては、stts boxをチェックして、復号時間が所定期間に対応するオーディオフレームの番号を決定する。ビデオフレームについては、圧縮アルゴリズムを用いるため、所定期間内の最初のフレームがキーフレームでなければ、時間的に所定期間の開始時間に遡ってキーフレームを検索する必要もあり、それにより所定期間内のフレームが復号されることを保証する。
【0139】
ステップ1003、サンプリングの番号に基づいてstsc boxをクエリし、サンプリングを含むブロックの番号を決定する。
【0140】
ステップ1004、ブロックの番号に基づいて、stco boxからブロックのオフセット量を検索する。
【0141】
ステップ1005、サンプリングの番号に基づいてstsz boxを検索し、サンプリングのブロック内におけるオフセット量及びサンプリングの容量を見つける。
【0142】
stsz boxには、サンプリングの番号及び容量が記録され、ブロックのオフセット量とサンプリングのブロック内におけるオフセット量を加算し、サンプリングのmdatボックス(box)におけるオフセット量を得る。
【0143】
ステップ1006、オフセット量が最小のブロックに対応するオフセット量、及び対応するサンプリングのブロック内におけるオフセット量を加算し、所定期間のメディアデータのオフセット量とする。
【0144】
ステップ1007、オフセット量が最大のブロックに対応するオフセット量、対応するサンプリングのブロック内におけるオフセット量、及び対応するサンプリングの容量を加算し、メディアデータをカバーできる長さとし、かつメディアデータのオフセット量と減算を行い、メディアデータの容量を得る。
【0145】
ステップ1006及びステップ1007について、所定期間内のオーディオフレームの位置(オフセット量と容量を含む)、及び所定期間内のビデオフレームの位置(オフセット量と容量を含む)を計算し、ビデオフレームとオーディオフレームがmdat boxに記憶される時に占有される区間をそれぞれ得る。
【0146】
ステップ704、メディアファイルのメディアデータボックスから対応する位置のメディアデータを抽出する。
【0147】
本開示の一実施例では、メディアファイルデータのメディアデータボックスにおける位置はステップ703に記載の2つの区間を用いて示す時、即ちビデオフレーム及びオーディオフレームに対応する区間をそれぞれ用いて示す時、ビデオフレームの位置に基づいて、メディアデータボックスからビデオフレームに対応する2値データを抽出する。オーディオフレームの位置に基づいてメディアデータボックスから対応する2値データを抽出する。
【0148】
本開示の一実施例では、メディアファイルデータのメディアデータボックスにおける位置は上記実施例に記載の1つの区間を用いて示す時、メディアファイルのメディアデータボックスの対応する区間内からメディアデータを一括して抽出し、メディアデータに対する処理効率を効果的に向上させ、特にネットワーク伝送が必要な時に接続への占有、及びトラフィックの消費を顕著に節約する。
【0149】
本実施例に示した技術的解決手段により、対応するオーディオフレームとビデオフレームを一括して抽出して取得して、メディアファイルの処理速度を向上させることを実現できる。
【0150】
ステップ705、抽出されたメディアデータ、及びメディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化し、独立して復号することに用いられるフラグメントメディアファイルを得る。
【0151】
本開示の一実施例では、
図11に示すように、
図11は、本開示の実施例に係るフラグメントメディアファイルをカプセル化する選択可能なフローチャートであり、
図11に示すステップを参照しながら説明する。
【0152】
ステップ1101、フラグメントメディアファイルのタイプ及び互換性を示すデータを、フラグメントメディアファイルのファイルタイプボックスに充填する。
【0153】
例えば、カプセル化して
図4に示すカプセル化構造を形成するFMP4ファイルを例として、FMP4ファイルのファイルタイプボックス、即ちftyp boxのヘッダにボックスのタイプと長さ(ftyp boxの全長を示す)を充填し、ftyp boxのデータ部分に、ファイルタイプがFMP4及び互換プロトコルであることを示すデータ(2値データ)を充填し生成する。
【0154】
ステップ1102、フラグメントメディアファイルのファイルレベルを示すメタデータを、フラグメントメディアファイルのメタデータボックスに充填する。
【0155】
一実施例では、フラグメントメディアファイルのカプセル化構造に充填されるメディアデータに基づいて、フラグメントメディアファイルにおけるメタデータボックスのネスト構造に基づいて、ネスト構造を充填するために必要なメディアデータを記述するメタデータを計算する。
【0156】
依然として
図4を例として、FMP4ファイルのファイルレベルを示すメタデータを計算し、かつFMP4のメタデータボックス(即ちmoov box)に充填し、moov boxにmvhd、track及びビデオ拡張(mvex、movie extend)という3つのボックスがネスティングされている。
【0157】
そのうち、mvhdボックスにカプセル化されたメタデータは、フラグメントメディアファイルの再生に関するメディア情報を示すために用いられ、メディア情報は、位置、時間長、作成時間及び修正時間等を含む。trackボックスにネスティングされたサブボックスはメディアデータにおける対応するトラックの引用及び記述を示し、例えばtrackボックスにトラックの特性及び情報全体(例えば時間長、幅及び高さ)を記述するボックス(tkhd boxと記す)、トラックのメディア情報(例えばメディアタイプ及びサンプリングの情報)を記録するボックス(mdia boxと記す)がネスティングされている。
【0158】
ステップ1103、抽出されたメディアデータ、及びメディアデータを記述するメタデータを、フラグメントメディアファイルのフラグメントボックスにおけるメディアデータボックス、及びフラグメントレベルのメタデータボックスに対応して充填する。
【0159】
一実施例では、フラグメントメディアファイルに1つ又は複数のフラグメント(fragment)がカプセル化されてもよく、充填されるメディアデータについて、フラグメントメディアファイルの1つ又はフラグメント化されたメディアデータボックス(即ちmdat box)に充填することができ、各フラグメントにフラグメントレベルのメタデータボックス(moof boxと記す)がカプセル化され、ここで充填されたメタデータはフラグメント内に充填されたメディアデータを記述するために用いられ、フラグメントを独立して復号させる。
【0160】
図4を参照して、充填されるメディアデータをFMP4ファイルのカプセル化構造の2つのフラグメントに充填することを例として、各フラグメントメディアデータに充填する。対応するフラグメントに充填する必要があるフラグメントレベルのメタデータボックス(即ちmoof box)におけるメタデータを計算し、かつmoof boxにネスティングされたサブボックスに対応して充填し、そのうちmoof boxのヘッダをmoof boxと呼び、そのうち充填された2値データはボックスのタイプが「moof box」であること、及びmoof boxの長さを示すために用いられる。
【0161】
ステップ1101~ステップ1103でデータを対応するボックスに充填する一実施例では、充填動作を実行する時、クラスの書き込み操作機能を呼び出してサブボックスのメモリバッファに2値データの書き込み及びマージを完了し、そして、クラスのインスタンスを返し、返されたインスタンスがサブボックスとネスト関係を有するサブボックスとのマージに用いられる。
【0162】
データ充填の一例として、カプセル化機能を実現するためのクラスMP4を確立し、フラグメントメディアファイル内の各サブボックスをクラスStreamによる静的な方法にカプセル化する。2値データの操作機能を実現するためのクラスStreamを確立し、各クラスStreamに、充填される2値データを記憶するための1つのメモリバッファが設けられる。Streamによる静的な方法で、充填される複数バイトの10進データを2値データに変換する。クラスStreamのインスタンスによって提供される書き込み操作機能により、メモリバッファにサブボックスに充填される2値データのマージ及び充填を完了する。Streamによる静的な方法は、1つの新たなStreamインスタンスを返し、現在のサブボックスとネスト関係を有する他のサブボックスとのマージを実現する。
【0163】
図12は本開示の実施例に係るメディアファイル変換方法の選択可能な使用シーンの概略図であり、
図12を参照し、本開示の実施例に係るメディアファイル変換装置はユーザ端末10として実現でき、実現するために例示的な応用を提供し、ユーザ端末10(例示的なユーザ端末10-1及びユーザ端末10-2)はネットワーク20経由でサーバ30に接続され、ネットワーク20はワイドエリアネットワーク又はローカルエリアネットワークであってもよいし、又は両者の組み合わせであってもよく、無線リンクを使用してデータ伝送を実現する。
【0164】
ユーザ端末10はプレーヤが埋め込まれたウェブページを介してメディアファイルを再生し、かつグラフィックインタフェース110(例示的なグラフィックインタフェース110-1及びグラフィックインタフェース110-2)により再生されたコンテンツを表示し、再生中に、ユーザ端末10が、メディアファイルのメタデータボックスにカプセル化された、サーバ30から取得されたメタデータを解析し、前記メディアファイルのメディアデータボックスにカプセル化されたメディアデータを記述するためのメディア情報を取得し、ここで、前記メディアファイルは非ストリーミングメディアフォーマットを用い、前記メディア情報が示す前記メディアデータの時間に基づいて、所定期間のメディアデータを検索し、前記メディア情報が示す前記メディアデータの前記メディアファイルにおける位置に基づいて、前記所定期間のメディアデータの前記メディアファイルにおける位置を検索し、前記メディアファイルのメディアデータボックスから前記位置に対応するメディアデータを抽出し、抽出されたメディアデータ、及び前記メディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化し、独立して復号することに用いられるフラグメントメディアファイルを得る。
【0165】
図13は本開示の実施例に係るMP4ファイルをFMP4ファイルに変換してメディアソース拡張インタフェースにより再生する概略図であり、
図13を参照し、プレーヤはメディアファイルのリアルアドレス(図におけるhttp://www.toutiao.com/a/b.mp4)に基づいて一定時間長を満たすメディアデータを取得し、次に取得されたメディアデータに基づいてフラグメントメディアファイルを構成し、即ちそれをフラグメントMP4フォーマットのメディアファイルに変換し、次にフラグメントメディアファイルをMSEのメディアソースオブジェクトに追加し(例えばクラスファイルオブジェクト(Blob)の方式で実現する)、MSEはメディアソースオブジェクトに対応する仮想URLを作成し、かつVideo要素に該仮想URLを伝達して、Video要素に対応するメディアソースオブジェクトを取得させ、前に述べるように抽出されたメディアデータ、及び前記メディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化し、独立して復号するために用いられるフラグメントメディアファイルを得る。
【0166】
本開示に係るメディアファイル変換方法により、メディアファイルのメタデータボックスにカプセル化されたメタデータを解析し、前記メディアファイルのメディアデータボックスにカプセル化されたメディアデータを記述するためのメディア情報を得て、前記メディア情報が示す前記メディアデータの時間に基づいて、所定期間のメディアデータを検索し、前記メディア情報が示す前記メディアデータの前記メディアファイルにおける位置に基づいて、前記所定期間のメディアデータの前記メディアファイルにおける位置を検索し、前記メディアファイルのメディアデータボックスから前記位置に対応するメディアデータを抽出し、抽出されたメディアデータ、及び前記メディアデータを記述するメタデータをフラグメントメディアファイルのカプセル化構造に基づいてカプセル化し、独立して復号することに用いられるフラグメントメディアファイルを得る。メディアファイルから任意の所定期間のメディアデータを抽出してフラグメントメディアファイルを構成することを実現でき、それにより、所定期間のメディアファイルを再生する必要がある場合、非ストリーミングメディアフォーマットのメディアファイルから所定期間のメディアデータを抽出し、独立して復号可能なフラグメントメディアファイルにカプセル化すればよい。それにより、非ストリーミングメディアフォーマットファイルが完全にダウンロードされなければ独立して再生できないという制限を解除し、再生のリアルタイム性が高い。また、完全なメディアファイルをストリーミングメディアフォーマットに予め変換する必要がなく、所定期間だけにフラグメントメディアファイルを構成すればよく、変換遅延が小さいため、予め記憶しておく必要がなく、本来のメディアファイルを除き、余分な記憶スペースを占有することがなく、記憶スペースへの占有を著しく低減する。
【0167】
以上で説明したのは、本開示の好ましい実施例にすぎず、本開示の保護範囲を限定するためのものではなく、本開示の趣旨と原則から逸脱せずに行った修正、同等な切り替え及び改良等が、全て本開示の保護範囲に含まれるべきである。
【符号の説明】
【0168】
20 ネットワーク
30 サーバ
501 プロセッサ
502 メモリ
503 ユーザインタフェース
504 ネットワークインタフェース
601 解析モジュール
602 検索モジュール
603 抽出モジュール
604 合成モジュール
5021 オペレーティングシステム
5022 アプリケーション