(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-18
(54)【発明の名称】FMP4からMP4への高速内部変換
(51)【国際特許分類】
H04N 5/76 20060101AFI20231011BHJP
H04N 5/92 20060101ALI20231011BHJP
G11B 20/10 20060101ALI20231011BHJP
G11B 27/00 20060101ALI20231011BHJP
【FI】
H04N5/76
H04N5/92 010
G11B20/10 301Z
G11B27/00 B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023520039
(86)(22)【出願日】2021-08-01
(85)【翻訳文提出日】2023-03-31
(86)【国際出願番号】 US2021044107
(87)【国際公開番号】W WO2022076065
(87)【国際公開日】2022-04-14
(32)【優先日】2020-10-05
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ソホニ,サドハンシュ ウダイ
【テーマコード(参考)】
5D044
5D110
【Fターム(参考)】
5D044AB05
5D044AB07
5D044DE96
5D110AA27
5D110AA29
5D110DA01
5D110DA11
(57)【要約】
本願明細書では、別個のファイルを生成する必要の無い、フラグメント化されたMP4(FMP4)ファイルのMP4フォーマットへの内部変換が議論される。オーディオ及びビジュアルデータは、マルチメディアアプリケーションによりキャプチャされ、最初のmoov atom及びオーディオ/ビデオデータの部分に割り当てられた1つ以上のフラグメントヘッダと共に、FMP4ファイルに格納される。キャプチャセッションが完了すると(例えば、ユーザがオーディオ及びビデオの記憶を停止する)、FMP4ファイルは、最後のmoov atomをFMP4ファイルに付加し、最初のmoov(i) atomのヘッダ指定を「moov」から「mdat」指定に変更することにより、MP4ファイルに変換される。この指定の変更は、FMP4ファイルの最初のmoov(i) atomをメディアプレイヤに対して不透明にし、FMP4ファイルをMP4フォーマットに変換する。
【特許請求の範囲】
【請求項1】
フラグメント化されたMP4(FMP4)ファイルのMP4ファイルへの内部変換を実行する方法であって、
前記FMP4ファイルのオーディオ及びビジュアルデータをキャプチャするステップと、
前記キャプチャの間に、前記FMP4ファイルの最初のmoov atomを生成するステップであって、前記最初のmoov atomはmoov指定を有するヘッダを含む、ステップと、
前記オーディオ及びビジュアルデータの前記キャプチャの停止を検出するステップと、
前記の停止が起こると、前記最初のmoov atomのヘッダをmdat指定に変更することにより、前記FMP4ファイルを前記MP4ファイルに変換するステップと、
を含む方法。
【請求項2】
前記mdat指定を有する前記FMP4ファイルを前記MP4ファイルとして格納するステップ、を更に含む請求項1に記載の方法。
【請求項3】
前記オーディオ及びビジュアルデータの一部に少なくとも1つのフラグメントヘッダを割り当てるステップと、
前記最初のmoov atom及び前記少なくとも1つのフラグメントヘッダから、前記MP4ファイルの最後のmoov atomを生成するステップと、
を更に含む請求項1~2の少なくとも一項に記載の方法。
【請求項4】
前記少なくとも1つのフラグメントヘッダを前記mdat指定に変更するステップ、を更に含む請求項3に記載の方法。
【請求項5】
前記最初のmoov atomから最後のmoov atomを生成するステップと、
前記最後のmoov atomを前記FMP4ファイルに付加するステップと、
を更に含む請求項1~4の少なくとも一項に記載の方法。
【請求項6】
前記最初のmoov atomのヘッダは、前記最後のmoov atomが前記FMP4ファイルに付加された後に変更される、請求項5に記載の方法。
【請求項7】
前記FMP4ファイルの前記MP4ファイルへの変換は、前記FMP4ファイル以外の新しいファイルを生成する又はデータをコピーすることなく、行われる、請求項1~6の少なくとも一項に記載の方法。
【請求項8】
少なくとも1つのフラグメントヘッダを前記オーディオ及びビジュアルデータの部分に割り当てるステップと、
前記オーディオ及びビジュアルデータをキャプチャするマルチメディアアプリケーションが閉じたことを検出するステップと、
前記少なくとも1つのフラグメントヘッダを有する前記FMP4ファイルを格納するステップと、
前記格納し他FMP4ファイルを開くための命令を受信するステップと、
前記FMP4が開くと、前記FMP4ファイルの前記MP4ファイルへの変換を開始するステップと、
を更に含む請求項1~7の少なくとも一項に記載の方法。
【請求項9】
前記最初のmoov atomが前記mdat指定に変更された前記MP4ファイルの再生を開始するステップ、を更に含む請求項1~8の少なくとも一項に記載の方法。
【請求項10】
前記MP4ファイルは、前記最初のmoov atomの前記ヘッダが前記mdat指定に変更された前記FMP4ファイルを含む、請求項1~9の少なくとも一項に記載の方法。
【請求項11】
前記オーディオ及びビジュアルデータをキャプチャするステップは、前記オーディオ及びビジュアルデータを記録するステップを含む、請求項1~10の少なくとも一項に記載の方法。
【請求項12】
前記記録するステップは、ビデオ会議アプリケーション、電話会議アプリケーション、又はビデオ共有アプリケーション、のうちの少なくとも1つにおいて実行される、請求項11に記載の方法。
【請求項13】
前記FMP4ファイルは、クライアントコンピューティング装置において、前記MP4ファイルに変換される、請求項1~12の少なくとも一項に記載の方法。
【請求項14】
フラグメント化されたMP4(FMP4)ファイルのMP4ファイルへの内部変換を実行するシステムであって、
前記FMP4を前記MP4ファイルに変換するよう構成されるマルチメディアアプリケーションを埋め込まれたメモリと、
1つ以上のプロセッサであって、
前記FMP4ファイルのオーディオ及びビジュアルデータをキャプチャし、
前記キャプチャの間に、前記FMP4ファイルの最初のmoov atomを生成し、前記最初のmoov atomはmoov指定を有するヘッダを含み、
前記オーディオ及びビジュアルデータの前記キャプチャの停止を検出し、
前記の停止が起こると、前記最初のmoov atomのヘッダをmdat指定に変更することにより、前記FMP4ファイルを前記MP4ファイルに変換する、
ようプログラムされている1つ以上のプロセッサと、
を含むシステム。
【請求項15】
コンピュータ実行可能命令を埋め込まれた1つ以上のコンピュータ記憶メモリであって、前記コンピュータ実行可能命令は、フラグメント化されたMP4(FMP4)ファイルのMP4ファイルへの内部変換を実行するために少なくとも1つのプロセッサにより実行可能であり、
マルチメディアアプリケーションであって、前記少なくとも1つのプロセッサにより実行可能であり、前記FMP4ファイルのオーディオ及びビジュアルデータをキャプチャし、前記FMP4ファイルに最初のmoov atomを割り当てるよう構成される、マルチメディアアプリケーションと、
内部コンバータであって、前記少なくとも1つのプロセッサにより実行可能であり、前記最初のmoov atomのヘッダをmoov指定からmdat指定に変更することにより、前記FMP4ファイルを前記MP4ファイルに変換するよう構成される、内部コンバータと、
を含むコンピュータ記憶メモリ。
【発明の詳細な説明】
【背景技術】
【0001】
Moving Picture Experts Group(MPEG)は、広く普及しているMPEG-4 Part14規格(一般には単に「MP4」と呼ばれる)を含む多くのマルチメディア規格を定義している。MP4は、オーディオビジュアルファイルを保存するために使用されるデジタルマルチメディアコンテナ形式であり、ますます多くのユーザがオンラインになるにつれて、MP4規格はマルチメディアファイルを保存するための定番となっている。多数のマルチメディアアプリケーションにより、ユーザは簡単に共有できるMP4ファイルとしてオーディオビジュアルファイルを再生及び記録することができる。今日のほとんどのユーザは、これらのアプリケーションがどのようにMP4ファイルを作成するかを全く又はほとんど知らない。
【0002】
コンテンツをMP4ファイルとして記録するには、通常、ユーザは録音ボタンを押し、オーディオ及びビデオ(オーディオ/ビデオ)データのキャプチャを開始する。完了すると、ユーザは記録を停止し、マルチメディアアプリケーションが幾つかの複雑な操作を実行してMP4ファイルを完成させる。完成段階で実行される操作の1つは、「moov」atom(一般に「ムービー」アトムと呼ばれる)の作成である。これらのmoov atomには、マルチメディアプレイヤによって使用される様々なデータを含むヘッダが含まれている。従来のMP4レコーディングでは、moov atomが書き込まれる前にアプリケーションがクラッシュすると、オーディオ/ビデオが再生不能になる。しかし、MP4ファイルを作成する平均的なユーザは、録音が停止した後に発生する必要がある追加処理がまだあることを認識していない。そのため、ユーザはmoov atomが書き込まれる、ファイナライズが完了する前に録音アプリケーションを終了してしまう。
【0003】
これは、より複雑なmoov atomを必要とする長い録音では更に問題となり、moov atomが完了する前にヘッダの書き込みがタイムアウトすることがよくある。アプリケーションを閉じる前にmoov atomが作成されなかった場合、moov atomの書き込みがタイムアウトした場合、又はファイナライズしたMP4録音を保存するのに十分なディスク容量がない場合は、録音が失われる可能性がある。録音を失うことは、特に録音が重要な場合、ユーザ経験に壊滅的な影響を与える可能性があることは明らかである。
【0004】
MP4形式の比較的新しいバリエーションは、フラグメント化されたMP4(fragmented MP4 (FMP4))形式である。記録が作成された後に書き込まれる1つの単一のmoov atomの代わりに、FMP4はマルチメディアファイルの異なるフラグメントに対して幾つかのフラグメントヘッダ(「moof」atomと呼ばれる)を生成する。これらのmoof atomは記録中に散在している。しかし、FMP4は広く採用されていないため、FMP4ファイルをマルチメディアプレイヤで十分に使用するには、従来のMP4ファイルに変換して戻す必要がある。そうしないと、様々なプレイヤ機能(例えば、再生、シークなど)が正常に動作しない。この変換プロセス(FMP4からMP4への変換)は、非常に退屈で、リソースを大量に消費する。オーディオ/ビデオデータは、FMP4ファイルから新しく作成されたMP4ファイルにコピーされる必要があり、データの2つのインスタンスを生じる。同じオーディオ/ビデオデータの2つのコピーは、処理とメモリリソースに負担をかけるか、更に悪いことに、オーディオ/ビデオデータの両方のコピーに十分なメモリが使用できない場合、変換に失敗してオーディオ/ビデオデータが失われる可能性がある。
【発明の概要】
【0005】
開示された例について、以下の添付の図面を参照して以下に詳述する。以下の概要は、ここで開示された幾つかの例を説明するために提供される。ただし、すべての例を特定の構成又は操作のシーケンスに限定することを意味するものではない。
【0006】
ここに開示されている例は、別個のファイルを作成することなく、FMP4ファイルをMP4形式に内部変換(in-place conversion)するように構成された技術及び装置を対象としている。そのためには、オーディオ/ビジュアルデータが記録されるか、又はマルチメディアアプリケーションによってアクセスされる。記録されたオーディオ/ビジュアルデータはFMP4ファイルに格納され、最初のmoov atom(ここでは「moov(i)」atomと呼ぶ)が割り当てられる。また、オーディオ/ビデオデータの一部にフラグメントヘッダ(moof)が割り当てられる。この方法では、FMP4ファイルが変換される前にマルチメディアアプリケーションが閉じられた場合、又はシステム障害が発生した場合に、少なくともフラグメントヘッダを持つFMP4ファイルが格納される。ただし、記録が完了した場合(例えば、ユーザが録音を停止する)、FMP4ファイルはMP4ファイルに変換される。このような変換は、最後のmoov atom(ここでは「moov(f)」atomと呼ぶ)を生成してFMP4ファイルに付加し、更に最初のmoov(i) atomのヘッダ指定を「moov」指定から「mdat」指定に変更することによって行われる。ヘッダ指定をmdatに変更すると、最初のmoov(i) atomとフラグメントヘッダがマルチメディアプレイヤに対して不透明になり、オーディオ/ビデオデータの複数のコピーを作成することなく、FMP4ファイルを実質的にMP4ファイルに変換できる。
【図面の簡単な説明】
【0007】
開示された実装及び例について、以下の添付の図面を参照して以下に詳述する。
【0008】
【
図1】開示されている実装の幾つかに従って、FMP4ファイルからMP4形式への内部変換を実行するように構成されたクライアントコンピューティング装置のブロック図を示している。
【0009】
【
図2】開示されている実装の幾つかに従って、MP4形式への変換のために記録されているオーディオ/ビジュアルファイルのFMP4バージョンのブロック図を示している。
【0010】
【
図3】開示されている実装の幾つかに従って、記録後のオーディオ/ビジュアルファイルのFMP4バージョンのブロック図を示している。
【0011】
【
図4】開示されている実装の幾つかに従って、MP4フォーマットへの内部変換後のオーディオ/ビジュアルファイルのFMP4バージョンのブロック図を示している。
【0012】
【
図5】開示されている実装の幾つかに従って、開示された内部変換を使用してMP4フォーマットに変換されるFMP4オーディオ/ビジュアルファイルの例のデータファイルを示している
【0013】
【
図6】開示されている実装の幾つかに従って、MP4フォーマットに変更されたFMP4オーディオ/ビジュアルファイルの例のデータファイルを示している。
【0014】
【
図7】開示されている実装の幾つかに従って、FMP4ファイルからMP4ファイルへの内部変換を実行するワークフローのフローチャート図を示している。
【0015】
【
図8】開示されている実装の幾つかに従って、FMP4ファイルをMP4ファイルに変換するワークフローのフローチャート図を示している。
【発明を実施するための形態】
【0016】
添付の図面を参照して、種々の実装を詳細に説明する。可能な場合には常に、同じ参照符号が、図面を通じて同じ又は同様の部分を参照するために使用される。特定の例及び実装に関連してこの開示全体で行われる参照は、単に説明目的のために提供されるが、反対に示されない限り、すべての例を制限することを意図していない。
【0017】
ここに開示された実装及び例は、FMP4ファイルからMP4ファイルへの内部変換を実行する命令を備えたシステム、方法、及びコンピュータ記憶メモリを提供する。ここで言及されているように、「内部(in-place)」変換とは、既存のFMP4ファイルを変更してMP4形式(フォーマット)に変更することを指す。幾つかの実装では、内部変換は、FMP4ファイルのフラグメントヘッダに基づいて新しいmoov atomを書き込み、次に最初のmoov atomのヘッダ情報を「moov」から「mdat」に変更して、最初のmoov atomをマルチメディアプレイヤに対して不透明にすることによって行われる。開示された技術と装置を使用すると、MP4ファイルを生成するために必要なファイルは、1つのファイル-FMP4ファイル-のみである。一方、FMP4をMP4ファイルに変換する従来の技術では、新しいMP4ファイルを作成し、FMP4ファイルのオーディオ/ビジュアルデータを新しいMP4ファイルにコピーする必要があり、これは、オーディオ/ビジュアルデータのコピーを2つ作成し、メモリと処理の要件を2倍にする。最初にマルチメディアファイルをFMP4ファイルとして記録し、次に、開示された内部変換によってそのFMP4ファイルをMP4に変換することで、記録-又は少なくとも記録の大部分-がMP4のファイナライズ段階の前に失われるのを防ぐことができる。また、変換に必要なFMP4ファイル以外の追加メモリはわずかであり、FMP4からMP4への変換に必要な従来の処理とメモリに対する要求を削減することができる。
【0018】
FMP4ファイルには多数のフラグメントヘッダ(moof atom)が含まれており、これらは記録されたオーディオ/ビジュアルデータの異なる部分(又はフラグメント)に散在して割り当てられている。例えば、FMP4記録には、オーディオ/ビジュアルデータの第1ブロックに割り当てられた第1moof atom、オーディオ/ビジュアルデータの第2ブロックに割り当てられた第2moof atomなどが含まれる場合がある。(例えば録音を通じて)オーディオ/ビジュアルデータを記録するマルチメディアアプリケーションが閉じられた場合、失敗した場合、又はその他の問題によってFMP4ファイルのファイナライズが停止した場合、オーディオ/ビジュアルデータの少なくとも一部は、対応するフラグメントmoof atomとともに保存されている。FMP4ファイルは、録音されているオーディオ/ビジュアルデータの一部を含むフラグメントmoof atomを生成して保存するため、moof atomが割り当てられると、FMP4ファイルのためにそれらの部分は実質的にファイナライズされる。そのため、FMP4がファイナライズする前にエラーが発生した場合は、少なくとも最後のフラグメントを除くすべてのオーディオ/ビジュアルデータが保存されている。つまり、N個のフラグメントの記録では、オーディオ/ビジュアルデータが記録されるにつれて、フラグメントmoof atomが割り当てられているため、少なくともN-1個のフラグメントが保存されている。そのため、FMP4形式を使用すると、ファイナライズが正常に完了しなかっただけで録音全体が失われることはなく、最大でも最後のフラグメントだけが失われる可能性がある。
【0019】
更に、開示された実装を例として使用して、FMP4ファイルからMP4形式への内部変換を実行するために必要なリソースは最小限である。記録が停止すると、ファイナライズシーケンスが実行される。幾つかの例では、ファイナライズシーケンスは、フラグメントmoof atomとFMP4ファイルの最初のmoov atomからの情報を使用して、MP4moov atomを生成して、記録されたFMP4ファイルに付加することを含む。この生成されたMP4moov atomは、FMP4ファイルデータから生成された新しいファイルではなく、内部変換を容易にするためにFMP4ファイルに付加されることに注意する必要がある。MP4moof atomがFMP4ファイルに付加されると、一部の実装では、FMP4ファイルの最初のmoov atomのヘッダが変更され、任意で、フラグメントmoofヘッダも「moof」指定から「mdat」指定に変更される。mdat指定は、moov又はmoof atomではなく、atomをオーディオ/ビジュアルデータとしてマークする。最初のmoov atomとフラグメントmoofヘッダのヘッダをmoofからmdat指定に変更すると、FMP4ファイルの最初のmoov atomとフラグメントmoofヘッダが、マルチメディアアプリケーションによって見えない又は処理されない不透明な(opaque)mdatアトムに変更される。最初のmoov atomとmoofアトムがこのように難読化されると、変換されたFMP4ファイルに不要なバイトのデータが追加される可能性があるが、FMP4オーディオ/ビジュアルデータを新しいMP4ファイルにコピーした場合よりもリソースコストははるかに低くなる。
【0020】
一部の実装では、FMP4ファイルに付加される新しいMP4moov atomに適切なチャンクオフセットが含まれている。チャンクオフセットは、MP4ファイルのオーディオデータ、ビデオデータ、メディアデータ、フレーム、及び/又はサンプルのタイミングオフセットを記述する数値である。MP4ファイルには、オーディオ、ビデオ、及びメディアデータは、「blurb」又は「chunk(チャンク)」と呼ばれる単位で書き込まれる。例えば、ビデオのフレーム、次にオーディオのフレーム、次にメタデータ、その後、追加のオーディオ、ビデオ、又はメディアデータが書き込まれることがある。このようなインタリーブパターンは、各メディアタイプのデータのチャンクを作成する。開示されたFMP4及びMP4ファイルには、所与のメディアトラックの各データのチャンクのオフセットを記述するチャンクオフセットテーブルを含めることができる。
【0021】
MP4moov atomが付加され、最初のFMP4moov atomがmdatに変更されると、FMP4ファイルは実質的に使用可能なMP4ファイルに変換される。新しいMP4ファイルは、様々なマルチメディアアプリケーションで保存及び送信、再生、又はその他の方法で使用できる。これらの開示された技術を使用して、FMP4ファイルは、コストのかかるコピー及び処理を行うことなく、迅速にMP4に変換される。また、新しく作成されたMP4ファイルはレガシープレイヤと互換性があり、変更されたmdatヘッダを上書きすることで、最初のmoov atomをmoov atomに変更することで、いつでもMP4ファイルをFMP4に戻すことができる。
【0022】
開示された例の幾つかの概要を一般的に提供してきたので、幾つかの追加の詳細を更に説明するために、添付の図面に注目する。開示された例の幾つかの態様を理解するのに役立つように、図示された構成と操作シーケンスが提供される。添付の図は、すべての例を制限することを意図しておらず、したがって、幾つかの例は、ここで議論される開示された例の範囲から逸脱していないが、異なるコンポーネント、装置、又は操作のシーケンスを含む場合がある。つまり、幾つかの例は、具体化されている場合もあれば、示されているものとは異なる方法で機能する場合もある。
【0023】
図1は、開示されている実装の幾つかに従って、FMP4ファイルからMP4形式への内部変換を実行するように構成されたクライアントコンピューティング装置のブロック図である。クライアントコンピューティング装置100は、1つ以上のプロセッサ102、入出力(I/O)ポート104、通信インタフェース106、コンピュータ記憶メモリ(メモリ)108、I/Oコンポーネント110、及び通信パス112を含む。クライアントコンピューティング装置100は、ネットワーク114を介して他の装置又はクラウドコンピューティングリソースと通信することができる。
【0024】
クライアントコンピューティング装置100は、多くの種類のコンピューティング装置のいずれであってもよく、例えば、限定ではないが、ラップトップ、スマートフォン、タブレット、仮想現実(VR)又は拡張現実(AR)ヘッドセット、スマートウォッチ、ウェアラブル、電子キオスク、スマート自動車などである。クライアントコンピューティング装置100は単一の装置として示されているが、複数のクライアントコンピューティング装置100は一緒に動作し、図示の装置リソースを共有することができる。例えば、様々なプロセッサ102とメモリ108を複数のクライアントコンピューティング装置100に収容して分散させることができる。クライアントコンピューティング装置100は、適切なコンピューティング環境の一例に過ぎず、本発明の使用又は機能範囲に関する制限を示唆することを意図していない。
【0025】
プロセッサ102は、本開示の態様を実装するためのコンピュータ実行可能命令を実行するようにプログラムされた任意の数のマイクロプロセッサ、マイクロコントローラ、アナログ回路などを含む。幾つかの例では、プロセッサ102は、ここで説明する他の図面に示されているような命令を実行するようにプログラムされている。幾つかの実装では、プロセッサ102は、ここで開示されているように、FMP4ファイルからMP4形式への内部変換を実行するという特別な目的のために機能するように命令をプログラムされている。
【0026】
I/Oポート104は、様々なハードウェアI/Oコンポーネント110をクライアントコンピューティング装置100に接続する。I/Oコンポーネント110の例としては、例えば、オーディオ/ビジュアルコンテンツをキャプチャして提示するために動作する、1つ以上のマイク110a、カメラ110b、スピーカ110cを含むが、これらに限定されない。クライアントコンピューティング装置100は、追加又は代替として、例えば、ディスプレイ、タッチスクリーン、AR及びVRヘッドセット、周辺機器、ジョイスティック、スキャナ、プリンタなどの他のハードウェアI/Oコンポーネント110を装備することができるが、これらに限定されない。このようなコンポーネントは、当業者にはよく知られており、ここでは詳細に説明する必要はない。
【0027】
通信インタフェース106は、ネットワーク114を介してクライアントコンピュータ装置100と外部装置との間でソフトウェアとデータを転送することを可能にする。通信インタフェース106は、モデム、ネットワークインタフェース(イーサネットカードなど)、通信ポート、Personal Computer Memory Card International Association (PCMCIA)スロット及びカード、ワイヤレスアダプタ等を含むことができる。通信インタフェース106を介して転送されるソフトウェアとデータは、通信インタフェース106で受信可能な電子、電磁、光学、又はその他の信号である可能性のある信号の形式である。このような信号は、通信パス(例えばチャネル)112を介して通信インタフェース106に提供される。通信パス112は信号を伝送し、有線、無線、光ファイバ、電話、セルラ、無線周波数(RF)、又はその他の通信チャネルを使用して実装することができる。
【0028】
ネットワーク114は、任意のコンピュータネットワーク又はその組み合わせを含むことができる。ネットワーク114として動作するように構成可能なコンピュータネットワークの例としては、無線ネットワーク、固定電話、ケーブル回線、デジタル加入者線(DSL)、光ファイバ回線、セルラネットワーク(例えば、3G、4G、5Gなど)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)などが挙げられるが、これに限定されない。ただし、ネットワーク114は、別々のコンピュータユニットを結合する接続に限定されない。むしろ、ネットワーク114は、サーバ又はコンピューティング装置間でデータを転送するサブシステムを含むこともできる。例えば、ネットワーク114は、ポイントツーポイント接続、インターネット、イーサネット、電気バス、ニューラルネットワーク、又はその他の内部システムを含むこともできる。このようなネットワークアーキテクチャはよく知られており、ここでは深く議論する必要はない。
【0029】
コンピュータ記憶メモリ108は、クライアントコンピューティング装置100に関連付けられている、又はアクセス可能な任意の量のメモリ装置を含む。コンピュータ記憶メモリ108は、以下に参照されるコンピュータ記憶媒体の形態をとることができ、ここに開示される様々な操作を実行するように構成された命令を格納し、アクセスするためのコンピュータ可読コード、データ構造、プログラムモジュール、及びクライアントコンピューティング装置100のその他のコードの記憶を動作可能に提供する。コンピュータ記憶メモリ108は、揮発性及び/又は不揮発性メモリ、リムーバブル又は非リムーバブルメモリ、仮想環境のデータディスク、又はそれらの組み合わせの形態のメモリ装置を含むことができる。クライアントコンピューティング装置100の例には、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電子的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)、フラッシュメモリなどのメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、その他の光学メディアやホログラフィックメディア、磁気カセット、磁気テープ、磁気ディスク記憶装置、その他の磁気記憶装置、アナログ計算装置に配線されたメモリ、又はその他のコンピュータメモリが含まれるが、これに限定されない。
【0030】
コンピュータ記憶メモリ108は、(
図1に示すように)クライアントコンピューティング装置100の内部、(図に示されていない)クライアントコンピューティング装置100の外部、又は(図に示されていない)その両方に配置することができる。追加又は代替として、コンピュータ記憶メモリ108は、例えば分散処理を提供する仮想化環境において、複数のクライアントコンピューティング装置100及び/又はサーバに分散させることができる。本開示の目的のために、「コンピュータ記憶媒体」、「コンピュータ記憶メモリ」、「メモリ」及び「メモリ装置」は、コンピュータ記憶媒体108の同義語であり、これらの用語のいずれも搬送波又は伝播する信号を含まない。
【0031】
幾つかの例では、コンピュータ記憶メモリ108は、オペレーティングシステム(OS)116及び様々なソフトウェアアプリケーション118の実行可能なコンピュータ命令を格納する。OS116は、クライアントコンピューティング装置100の機能を制御するために設計された任意のOSであり、例えば、ワシントン州レドモンドのMICROSOFT CORPORATION(登録商標)によって開発されたWINDOWS(登録商標)、カリフォルニア州クパチーノのAPPLE,INC.(登録商標)によって開発されたMACOS(登録商標)、カリフォルニア州マウンテンビューのGOOGLE INC.(登録商標)によって開発されたANDROID(商標)、オープンソースのLINUX(登録商標)などを含むが、これらに限定されない。
【0032】
他のプログラムの中でも、アプリケーション118は、I/Oコンポーネント110のマイク110a及びカメラ110bによって各々キャプチャされたオーディオ及び/又はビデオを再生及びキャプチャ(例えば、記録)するように構成されたマルチメディアアプリケーション120を含む。マルチメディアアプリケーション120は、ビデオ又はオーディオプレイヤ、ビデオ又はオーディオレコーダ、ビデオ会議アプリケーション(例えば、MICROSOFT TEAMS(登録商標)など)、ビデオ共有アプリケーション(例えば、YOUTUBE(登録商標))、又はその他の任意のオーディオ/ビデオプレイヤであってもよい。幾つかの実装では、マルチメディアアプリケーション120は、ユーザがI/Oコンポーネント110によってキャプチャされているオーディオ及び/又はビデオをキャプチャできる記録機能を提供する。追加又は代替として、マルチメディアアプリケーション120は、オーディオ及び/又はビデオを再生するための再生機能を提供することもできる。マルチメディアアプリケーション120は、オーディオ/ビデオデータを記録するためのアプリケーション(例えば、マルチメディアレコーダ)と、オーディオ/ビデオデータ(例えば、マルチメディアプレイヤ)を再生するためのアプリケーションとを含む場合がある。明確にするために、ここではオーディオとビデオの両方(オーディオ/ビデオ)をキャプチャするものとして実装と例を説明するが、オーディオのみ又はビデオのみのFMP4ファイルの内部変換を実行するために同じ実装を使用することもできる。
【0033】
動作中、マルチメディアアプリケーション120は、記録中に生成されFMP4ファイル全体に散在する様々なフラグメント(moof)ヘッダを含むFMP4ファイルを記録する。前述のように、フラグメントヘッダを含むFMP4形式のファイルを記録すると、MP4ファイナライズ前に障害が発生した場合、少なくとも記録のFMP4ファイル、又は少なくとも記録のほとんど(例えばN-1個のフラグメント)が存在することが保証される。例えば、キャプチャされたFMP4ファイルの記録の長さが60分で、6分のフラグメントが10個あり、システムクラッシュ又はマルチメディアアプリケーション120が閉じられる前にフラグメント(moof)ヘッダを生成して割り当てるのに十分な時間がセグメントのうち5つしかなかった場合、結果のFMP4ファイルはクラッシュ又は閉じられる前に、少なくとも5つのフラグメントと各々5つのフラグメントヘッダを使用して保存される。したがって、ユーザは合計60分のうち少なくとも50分のFMP4ファイルを所有しており、障害/終了の前にMP4moov atomを書き込むことができなかったためにファイル全体を失うよりもはるかに優れている。
【0034】
幾つかの実装では、マルチメディアアプリケーション120は、ここで開示されている技術を使用してFMP4ファイルをMP4に変換するための内部コンバータ122を含んでいる。内部コンバータ122は、新しいMP4ファイルを作成することなく、オーディオ/ビジュアルファイル124をFMP4からMP4形式への内部変換する実行可能コード命令又はファームウェアを含む。明確にするために、同じオーディオ/ビジュアルファイル124は、ファイナライズ前(時間A)とファイナライズ後(時間A’)の2つの異なる時間に表示される。つまり、異なる時間AとA’に2つのインスタンスが示されるが、オーディオ/ビジュアルファイル124は1つだけ生成される。オーディオ/ビジュアルファイル124はコピー又は再作成されない。代わりに、オーディオ/ビジュアルファイル124は、最初に、FMP4形式で記録され、オーディオ/ビジュアルファイル124のFMP4バージョンは、MP4ファイルへの変換のためにここで説明する手法を使用して変更される。ここでも、オーディオ/ビジュアルファイルの2つのインスタンスが
図1に示されるが、使用されるファイルは1つだけである。
【0035】
前述のように、オーディオ/ビジュアルファイル120は、ユーザが記録を開始すると、時間Aに示されているようにFMP4形式でキャプチャされる。時間Aの左側に示されているオーディオ/ビジュアルファイル124のFMP4バージョンには、もともとmdat指定(mdatセクション130として示されている)、最初のFMP4moov atom126、及びオーディオ/ビジュアルデータの異なる部分に割り当てられた1つ以上のフラグメントヘッダ128a-nが含まれている。ここでも、オーディオ/ビジュアルデータを記録し、フラグメントヘッダ128a-nを割り当てることで、FMP4の少なくとも一部(例えばN-1個のフラグメント)がクラッシュ又は障害から生き残ることが保証される。
【0036】
記録が停止すると、内部コンバータ122は、オーディオ/ビジュアルファイル124のFMP4バージョンを(自動又はユーザのプロンプトに応じて)変更し、時間A’に表示されるMP4バージョンを作成する。このような変更は、ファイナライズされたMP4moov atom(ここでは「moov(f)」と呼ぶ)132を書き込み、オーディオ/ビジュアルファイル124のFMP4バージョンに付加する(例えば、末尾に付加される)ことを含む。幾つかの実装では、MP4moov(f) atom132は、少なくとも部分的に、最初のFMP4moov(i) atom126とフラグメントヘッダ128a-nから生成される。MP4moov(f) atom132が生成された後、内部コンバータ122は、「moov」と「moof」の見出しを「mdat」の見出しに変更することによって、FMP4moov(i) atom126とフラグメントヘッダ128a-nを隠す。これを行うには、moovとmoofの見出しを検索し、両方を変更するか、又は少なくともmoov(i) atom126のmoov指定をmdat指定に変更する。
【0037】
FMP4のmoov(i) atom126とフラグメントヘッダ128a-nを、各々moovとmoofの代わりにmdatとしてマークすると、これらのatom126と128a-nはマルチメディアアプリケーション120に対して不透明になる。別の言い方をすると、FMP4のmoov(i) atom126とフラグメントヘッダ128a-nは、オーディオ/ビジュアルファイル124のFMP4記録を作成するために使用されるが、その後、最後のMP4のmoov(f)132が書き込まれると、これらのatom126と128a-nのヘッダが変更される。これにより、オーディオ/ビジュアルファイル124のFMP4バージョンがMP4形式に実質的に変換されるが、mdatヘッダに変更された追加のatom126と128a-nは、最小サイズであり、オーディオ/ビジュアルデータを新しいファイルに書き込む必要がある場合よりもはるかに少ない処理とメモリリソースで済む。
【0038】
図2~4は、FMP4バージョンのオーディオ/ビジュアルファイル124を内部コンバータ122でMP4形式に内部変換することを示すブロック図である。これらの図は、FMP4としての記録からMP4への変換までの、異なる時間におけるオーディオ/ビジュアルファイル124を示している。具体的には、
図2は、記録中のオーディオ/ビジュアルファイル124のFMP4バージョンを示している。
図3は、記録が停止した後のオーディオ/ビジュアルファイル124のFMP4バージョンを示している。
図4は、FMP4バージョンを変更して作成されたオーディオ/ビジュアルファイル124のMP4バージョンを示している。
【0039】
最初に
図2を見ると、オーディオ/ビジュアルファイル124がFMP4ファイルとしてキャプチャされているのがわかる。ユーザ又はアプリケーション118がオーディオ及び/又はビジュアルデータの記録を開始した可能性がある。例えば、ユーザがビデオ会議中に記録オプションを選択する場合があり、家のセキュリティカメラからのビデオフィートが、ドアベルが押されたか動きが検出されると自動的に記録を開始する場合があり、又はその他の無数の方法で記録が開始される場合がある。記録中、オーディオ/ビジュアルファイル124は最初にFMP4ファイルとして記録され、最初のFMP4moov(i) atom126が生成されて割り当てられる。更に、記録はFMP4でキャプチャされているため、様々なフラグメントヘッダ128a-nが記録中に生成され、mdat130ペイロード内の異なるオーディオ/ビジュアルデータに割り当てられる。記録が続くと、追加のフラグメントヘッダ128が生成され、オーディオ/ビジュアルデータに追加される。
【0040】
図3は、記録が停止した後のオーディオ/ビジュアルファイル124のFMP4バージョンを示している。記録が停止すると、内部コンバータ122は、最初のmoov(i) atom126とフラグメントmoof atom128a~nから最後のmoov(f) atom132を作成することによってファイナライズを開始する。最後のmoov(f)132が生成され、オーディオ/ビジュアルファイル124のFMP4バージョンに付加されると、FMP4からMP4への変換は、
図4に示すように、最初のmoov(i) atom126とフラグメントヘッダ128a~nを難読化することによって完了する。そのために、幾つかの実装では、最初のmoov(i) atom126とフラグメントヘッダ128a~nのヘッダを「moov」と「moof」から「mdat」に変更する。これらのヘッダをmdatに上書きすることで、最初のmoov(i) atom126とフラグメントヘッダ128a~nはマルチメディアアプリケーション120に対して不透明になり、再生中に処理されなくなる。これにより、新たにファイルを作成することなく、FMP4バージョンのオーディオ/ビジュアルファイル124が実質的にMP4に変換される。また、最初のmoov(i) atom126のヘッダだけを変更することで、最初のmoov(i) atom126とFMP4のフラグメントヘッダ128a-nが隠される。つまり、実装によっては最初のmoov(i) atom126のバイトだけを変更して、それとフラグメントヘッダ128a-nの両方を隠す。
【0041】
更に、新しく作成されたMP4も、最初のmoov(i) atom126の変更を元に戻すことで、FMP4形式に戻すことができる。つまり、新しく作成されたMP4ファイルは、最初のmoov(i) atom126をmdat指定からmoovヘッダ指定に戻すことで、FMP4に戻すことができる。MP4ファイルには、最初のmoov(i) atom126とフラグメントヘッダ128a-nのすべてのデータが含まれているため、mdatからmoovへのこの指定変更によって、マルチメディアアプリケーション120に最初のmoov(i) atom126とフラグメントヘッダ128a-nが見えるようになる。
【0042】
図5及び6は、公開されている幾つかの実装に従って、MP4形式への内部変換のために、オーディオ/ビジュアルファイル124のFMP4データファイル500を変更することを示している。
図5に示すように、データファイル500は、点線の枠内に描かれた最初のmoov(i) atom126を含む。最初のmoov(i) atom126は、atom126がmoov atomであることを指定するmoovヘッダ502を含む。幾つかの実装では、この最初のmoov(i) atom126が最初に作成され、オーディオ/ビジュアルファイル124が記録されている間にmoovヘッダ502が割り当てられる。記録が停止すると、内部コンバータ122がトリガされ、FMP4データファイル500からMP4形式への開示された内部変換が実行される。
【0043】
FMP4データファイル500からMP4形式への内部変換は、実装によっては、データファイル500のmoovヘッダ502を「moov」指定から「mdat」指定に変更することによって実行される。この変更は
図6に示される。図示のように、最初のmoov(i) atom126の以前のmoovヘッダ502は、「moov」を「mdat」に変更することによってmdatヘッダ604に変更されている。moovヘッダ502をmdatヘッダ604に変更すると、マルチメディアアプリケーション120からは最初のmoov(i) atom126が不明瞭になる。これにより、FMP4データファイル500は、データをまったく新しいファイルに作成又はコピーすることなく、実質的にMP4ファイルに変換される。
【0044】
図7は、開示されている実装の幾つかに従って、FMP4ファイルからMP4ファイルへの内部変換を実行するワークフロー700のフローチャート図を示している。最初に、702に示すように、オーディオ/ビジュアルデータのキャプチャを開始するコマンドを受信する。これは、ユーザがビデオ会議アプリケーションなどのマルチメディアアプリケーションで記録機能をアクティブ化することによって、与えることができる。あるいは、ストリーミングオーディオ/ビデオコンテンツにオンラインでアクセスし、クライアントコンピューティング装置100のマイク及び/又はカメラを使用してオーディオ/ビジュアルコンテンツを記録することによって、インターネットを介してオーディオ/ビデオコンテンツにアクセスすることによって、又は任意の他の方法で、オーディオ/ビジュアルデータをキャプチャすることもできる。
【0045】
オーディオ/ビジュアルデータは、最初はFMP4ファイルとして保存され、その後、702にも示されているようにMP4ファイルに変換され、開示されている内部変換技術を使用して最終的にMP4形式に変換される。オーディオ/ビジュアルデータのキャプチャ中に、704に示すように、最初のmoov(i) atomが生成され、FMP4ファイルに割り当てられる。フラグメントヘッダが生成され、706に示すように、FMP4ファイルの異なる部分に割り当てられる。例えば、第1moofヘッダは10分のオーディオ/ビデオデータに割り当てられ、第2moofヘッダは次の10分のオーディオ/ビデオデータに割り当てられ、以下同様である。追加のフラグメントヘッダは、決定ボックス708に示されているように、オーディオ/ビデオデータのキャプチャ(例えば、記録)が停止するまで、キャプチャされたオーディオ/ビデオデータに割り当てられる。キャプチャが停止すると、作成されたFMP4ファイルは、710に示されているように、
図8に示された操作を使用して、次に参照されるように、分岐コネクタAで示されているように、MP4形式に変換される。
【0046】
712に示されているように、クライアントコンピューティング装置のシステム障害が発生した場合は、オーディオ/ビジュアルデータのキャプチャの前、中、MP4形式への内部変換の前に閉じられ、714に示されているように、FMP4ファイルがそのまま保存される。同様に、716に示されているように、オーディオ/ビジュアルデータをキャプチャ又はアクセスするマルチメディアアプリケーションが変換前に閉じられた場合は、714に示されているように、FMP4ファイルがそのまま保存される。これらの2つのパスにより、オーディオ/ビデオデータの少なくとも一部が保存され、後で変換できるようになる。
【0047】
図8は、開示されている実装の幾つかに従って、FMP4ファイルをMP4ファイルに変換するワークフロー800のフローチャート図を示している。前述のように、FPM4の内部変換は、オーディオ/ビデオデータのキャプチャ(例えば録音)の停止時に開始される場合がある。停止後、802に示すように、オーディオ/ビジュアルデータのFMP4ファイルの最後のmoov(f) atomが作成される。この最後のmoov(f) atomは、部分的に、最初のmoov(i) atomとFMP4ファイルのフラグメントヘッダから生成される場合がある。幾つかの実装では、最後のmoov(f) atomは、そうでなければFMP4に付加され、或いは追加される。
【0048】
付加されると、内部変換は、804で示されているように、最初のmoov(i)のヘッダをmdat指定に変更することによって完了する。そのために、幾つかの実装では、内部コンバータはFMP4ファイル内のmoov(i)ヘッダを検索し、mdatに変更する。また、一部の実装では、フラグメントヘッダもmdat指定に変更される。少なくともmoov(i)ヘッダが変更されると、FMP4-最後のmoov(f) atomが付加され、最初のmoov(i) atomが変更されたファイル-は、806で示されているように、MP4ファイルとして格納される場合がある。
【0049】
ここに開示されている例と実装は、プログラムコンポーネントなどのコンピュータ実行可能命令を含む、コンピュータコード又はマシン使用可能命令の一般的なコンテキストで記述される場合があり、パーソナルデータアシスタントやその他のハンドヘルド装置などのコンピュータ又は他のマシンによって実行される。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラムコンポーネントは、特定のタスクを実行するコードを参照するか、特定の抽象データ型を実装する。開示された例は、パーソナルコンピュータ、ラップトップ、スマートフォン、モバイルタブレット、ハンドヘルド装置、家電製品、特殊コンピューティング装置など、様々なシステム構成で実施される場合がある。また、開示された例は、通信ネットワークを介してリンクされた遠隔処理装置によってタスクが実行される分散コンピューティング環境でも実施される場合がある。
【0050】
開示の例は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組み合わせにおいて、1つ以上のコンピュータ又は他の装置によって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で記述される場合がある。コンピュータ実行可能命令は、1つ以上のコンピュータ実行可能コンポーネント又はモジュールに編成される場合がある。一般に、プログラムモジュールには、特定のタスクを実行したり、特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、及びデータ構造が含まれるが、これらに限定されない。開示の態様は、そのようなコンポーネント又はモジュールの任意の数及び構成で実装することができる。例えば、開示の態様は、図に示されここに記載されている特定のコンピュータ実行可能命令又は特定のコンポーネント又はモジュールに限定されない。開示の他の例としては、ここに示され、ここに記載されているよりも多い又は少ない機能を持つ、異なるコンピュータ実行可能命令又はコンポーネントが含まれる場合がある。汎用コンピュータを含む例では、開示の態様は、ここに記載されている命令を実行するように構成されている場合に、汎用コンピュータを、FMP4ファイルからMP4形式への内部変換を実行するように構成された専用コンピューティング装置に変換する。
【0051】
制限ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体装置と通信媒体で構成される。コンピュータ記憶媒体装置には、コンピュータ可読命令、データ構造、プログラムモジュールなどの情報を格納するための任意の方法又は技術で実装された揮発性及び不揮発性、取り外し可能及び取り外し不可能なメモリが含まれる。コンピュータ記憶媒体装置は有形であり、通信媒体に対して相互に排他的である。コンピュータ記憶媒体装置はハードウェアで実装され、搬送波と伝播された信号を除外する。本開示の目的におけるコンピュータ記憶媒体装置は信号そのものではない。コンピュータ記憶媒体装置の例としては、ハードディスク、フラッシュドライブ、ソリッドステートメモリ、相変化ランダムアクセスメモリ(PRAM)、静的ランダムアクセスメモリ(SRAM)、動的ランダムアクセスメモリ(DRAM)、その他の種類のランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能なプログラム可能読み出し専用メモリ(EEPROM)、フラッシュメモリ又はその他のメモリ技術、コンパクトディスク読み出し専用メモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)又はその他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又はその他の磁気記憶装置、又はコンピューティング装置によるアクセスのための情報を格納するために使用できるその他の非伝送媒体がある。これとは対照的に、通信媒体は通常、搬送波や他の輸送機構のような変調されたデータ信号において、コンピュータが読み取り可能な命令、データ構造、プログラムモジュールなどを具体化し、任意の情報配信媒体を含む。
【0052】
追加の例
フラグメント化されたMP4(FMP4)ファイルのMP4ファイルへの内部変換を実行する方法(ワークフロー700)に関する幾つかの例がある。方法は、
前記FMP4ファイルのオーディオ及びビジュアルデータをキャプチャするステップ(702)と、
前記キャプチャの間に、前記FMP4ファイルの初期moov atomを生成するステップであって、前記初期moov atomはmoov指定を有するヘッダを含む、ステップ(704)と、
前記オーディオ及びビジュアルデータの前記キャプチャの停止を検出するステップ(708)と、
停止が起こると、前記初期moov atomのヘッダをmdat指定に変更することにより、前記FMP4ファイルを前記MP4ファイルに変換するステップ(710)と、
を含む。開示された内部変換を使用してFMP4ファイルをMP4ファイルに直接変換することは、そのような変換に必要なメモリと処理リソースの量を劇的に削減すると同時に、システム障害やクラッシュが発生した場合に生き残る形式でオーディオ/ビジュアルデータをキャプチャする。
【0053】
一部の実装は、mdat指定のFMP4ファイルをMP4ファイル(806)として格納するステップも含む。そのため、内部変換を使用したMP4ファイルの作成には、FMP4ファイルのみが必要である。
【0054】
幾つかの例は、前記オーディオ及びビジュアルデータの一部に少なくとも1つのフラグメントヘッダを割り当て、前記初期moov atom及び前記少なくとも1つのフラグメントヘッダから、前記MP4ファイルの最終moov atomを生成するステップ(706)、を更に含む。散在するフラグメントヘッダは、クラッシュ又はシステム障害の前にMP4への変換が完了しない場合に安全性を提供し、少なくともN-1個のフラグメントがユーザのために保存されることを保証する。
【0055】
幾つかの例は、少なくとも1つのフラグメントヘッダをmdat指定(
図4、128a-n)に変更するステップを更に含む。したがって、変換にはFMP4ファイルのみが必要である。追加のファイルを作成する必要はなく、オーディオ/ビデオデータをコピーする必要もない。
【0056】
幾つかの例は、最初のmoov atomから最後のmoov atomを作成し、最初のmoov atom(802)も含むFMP4ファイルに最後のmoov atomを付加するステップ(802)を更に含む。最後のmoov atomをFMP4ファイルに追加すると、オーディオ/ビデオデータ全体を新しいファイルにコピーする代わりに、FMP4ファイルをMP4ファイルとして使用する方法を提供する。
【0057】
幾つかの例では、前記初期moov atomのヘッダは、前記最終moov atomが前記FMP4ファイルに付加された後に変更される(804)。最後のmoov atomが付加されるのを待つことで、MP4ファイルが正しく書き込まれることが保証される。
【0058】
幾つかの例では、前記FMP4ファイルの前記MP4ファイルへの変換は、前記FMP4ファイル以外の新しいファイルを生成する又はデータをコピーすることなく、行われる(124)。これにより、FMP4からMP4への変換のための処理とメモリリソースがかなり節約される。
【0059】
幾つかの例は、少なくとも1つのフラグメントヘッダを前記オーディオ及びビジュアルデータの部分に割り当てるステップ(706)と、
前記オーディオ及びビジュアルデータをキャプチャするマルチメディアアプリケーションが閉じたことを検出するステップ(716)と、
前記少なくとも1つのフラグメントヘッダを有する前記FMP4ファイルを格納するステップ(714)と、
前記格納し他FMP4ファイルを開くための命令を受信するステップ(122)と、
前記FMP4が開くと、前記FMP4ファイルの前記MP4ファイルへの変換を開始するステップ(710)と、
を更に含む。前述のように、フラグメントヘッダは、内部変換が完了する前にクラッシュ、システム障害、又はアプリケーションの終了が発生した場合に、FMP4ファイルを保存するのに役立つ。
【0060】
幾つかの例は、最初のmoov atomをmdat指定に変更してMP4ファイルの再生を開始するステップ(120)と、
前記の再生中に、mdat指定のために、最初のmoov atomと、FMP4ファイルの1つ以上のフラグメントヘッダを無視するステップ(120)と、 を更に含む。最初のmoov atomとフラグメントヘッダを隠すと、変換プロセスがファイナライズし、MP4ファイルに幾つかの追加のバイトのデータを追加するが、変換にかかる処理とメモリリソースは、従来の変換よりもはるかに少なくなる。
【0061】
幾つかの例は、前記MP4ファイルが、前記初期moov atomの前記ヘッダが前記mdat指定に変更された前記FMP4ファイルを含む(124)。最初のmoov atomを難読化することで、部分的には、新しいファイルを作成することなく、FMP4からMP4ファイルを作成することができる。
【0062】
幾つかの例では、オーディオ及びビジュアルデータのキャプチャは、オーディオ及びビジュアルデータの記録を含む(110)。ここで説明する例は、ファイルがMP4形式に変換される前に、そのような記録、又は少なくともその大部分が、システム障害、アプリケーションの終了、又はその他の中断に関係なく常にキャプチャされることを保証する。
【0063】
幾つかの例では、前記記録するステップは、ビデオ会議アプリケーション、電話会議アプリケーション、又はビデオ共有アプリケーション、のうちの少なくとも1つにおいて実行される(110)。このようなアプリケーションにここで説明する内部変換を追加すると、システム障害、アプリケーションの終了、又はその他の中断が発生した場合にファイルを保存することによって、ユーザ経験が向上する。
【0064】
幾つかの例では、FMP4ファイルはクライアントコンピューティング装置(100)でMP4ファイルに変換され、ユーザの記録を保護し、貴重な処理とメモリリソースも節約するクライアント側アプリケーションを提供する。
【0065】
フラグメント化されたMP4(FMP4)ファイルのMP4ファイルへの内部変換を実行する方法に関する他の例がある(100)。システムは、
前記FMP4を前記MP4ファイルに変換するよう構成されるマルチメディアアプリケーションを埋め込まれたメモリ(108)と、
1つ以上のプロセッサであって、
前記FMP4ファイルのオーディオ及びビジュアルデータをキャプチャし(702)、
前記キャプチャの間に、前記FMP4ファイルの初期moov atomを生成し(704)、前記初期moov atomはmoov指定を有するヘッダを含み(124)、
前記オーディオ及びビジュアルデータの前記キャプチャの停止を検出し(708)、
前記の停止が起こると、前記初期moov atomのヘッダをmdat指定に変更することにより、前記FMP4ファイルを前記MP4ファイルに変換する(710)、
ようプログラムされている1つ以上のプロセッサ(102)と、
を含む。内部変換を実行するシステムは、そのような変換に必要なメモリと処理リソースの量を劇的に削減すると同時に、システム障害やクラッシュが発生した場合に生き残る形式でオーディオ/ビジュアルデータをキャプチャする。
【0066】
幾つかの例では、最初のmoov atomのヘッダをmdat指定に変更することは、ユーザの介入なしにマルチメディアアプリケーションによって自動的に実行される(122)。ユーザはファイルの変換に気付かない可能性が高いため、内部変換を自動的に行うことはユーザ経験を向上させるだけであり、場合によっては経験を妨げない。
【0067】
幾つかの例では、1つ以上のプロセッサは、
少なくとも1つのフラグメントヘッダをオーディオ及びビジュアルデータの一部に割り当て(706)、
オーディオ及びビジュアルデータをキャプチャするマルチメディアアプリケーションの終了を検出し(716)、
少なくとも1つのフラグメントヘッダを持つFMP4ファイルを格納し(714)、
少なくとも1つのフラグメントヘッダの2番目のヘッダをmdat指定に変更する(804)
ようにプログラムされる。したがって、変換にはFMP4ファイルのみが必要である。追加のファイルを作成する必要はなく、オーディオ/ビデオデータをコピーする必要もない。
【0068】
幾つかの例では、オーディオ及びビジュアルデータのキャプチャは、オーディオ及びビジュアルデータの記録を含む(110)。開示された内部変換をマルチメディアアプリケーションに追加すると、オーディオ/ビデオデータがFMP4ファイルに保存され、FMP4ファイルがプレイヤフレンドリーなMP4ファイルに自動的に変換されるため、ユーザ経験が向上する。
【0069】
幾つかの例では、キャプチャは、ビデオ会議アプリケーション、電話会議アプリケーション、又はビデオ共有アプリケーション、のうちの少なくとも1つの記録機能を通じて実行される(110)。このようなアプリケーションは、FMP4ファイルからMP4ファイルへの開示された内部変換を実行することによって処理及びメモリリソースを節約するために、開示された内部コンバータを装備することができる。
【0070】
更に他の例は、フラグメント化されたMP4(FMP4)ファイルからMP4ファイルへの内部変換を実行するために、少なくとも1つのプロセッサ(102)によって実行可能なコンピュータ実行可能命令を備えた1つ以上のコンピュータ記憶メモリを対象とする(108)。メモリは、以下:
マルチメディアアプリケーションであって、前記少なくとも1つのプロセッサ(102)により実行可能であり、前記FMP4ファイルのオーディオ及びビジュアルデータをキャプチャし、前記FMP4ファイルに初期moov atomを割り当てる(110)よう構成される、ファイルマルチメディアアプリケーション(120)と、
内部コンバータであって、前記少なくとも1つのプロセッサにより実行可能であり、前記初期moov atomのヘッダをmoov指定からmdat指定に変更することにより、前記FMP4ファイルを前記MP4ファイルに変換するよう構成される、内部コンバータ(122)と、
を含む命令を備えている。新しいファイルを作成してデータをコピーすることなく、FMP4をMP4ファイルに変換することで、大量のメモリと処理リソースが節約される。
【0071】
幾つかの例では、最初のmoov atomのヘッダの変更は、前述のオーディオ及びビジュアルデータのキャプチャの停止(708)が起こると行われるため、内部変換が自動的に行われ、それによってユーザの介入が必要な避けられないエラーを減らすことができる。
【0072】
開示の態様は、様々な例とそれに関連する操作の観点から説明されているが、当業者は、任意の数の異なる例からの操作の組み合わせも、開示の態様の範囲内にあることを理解するだろう。
【0073】
ここに例示し説明する開示の例における操作の実行又は実行の順序は必須ではなく、様々な例において異なる順序で実行される可能性がある。例えば、特定の操作を別の操作の前、同時、又は後に実行又は実行することは、開示の態様の範囲内であると考えられる。
【0074】
開示の態様及びその例の要素を紹介するとき、冠詞「a」、「an」、「the」、「said」は、それらの要素のうちの1つ以上が存在することを意味することを意図する。用語「含む」、「有する」(comprising、including、及びhaving)は、包含的であり、列挙された要素以外の追加の要素が存在し得ることを意味することを意図する。用語「例示的な」は、「~の例」を意味することを意図する。語句「以下:A、B、及びC、のうちの1つ以上」は、「Aのうちの少なくとも1つ、及び/又はBのうちの少なくとも1つ、及び/又はCのうちの少なくとも1つ」を意味する。
【0075】
開示の態様を詳細に記述した後、添付の請求項に定義された開示の態様の範囲から逸脱することなく、修正及び変更が可能であることが明らかになる。開示の態様の範囲から逸脱することなく、上記の構成、製品、及び方法に様々な変更を加えることができるため、上記の説明に含まれ、添付の図面に示されているすべての事項は、限定的な意味ではなく、例示として解釈されることを意図している。
【国際調査報告】