web-dev-qa-db-ja.com

Fragmented mp4(fMP4)とは正確には何ですか?通常のmp4とはどう違うのですか?

Media Source Extension(MSE)は、ブラウザーで再生するために断片化されたmp4を必要とします。

45
Aditya Gupta

断片化されたMP4には、サーバーがバイト範囲要求をサポートしている場合に個別に要求できる一連のセグメントが含まれています。

Boxs aka Atoms

すべてのMP4ファイルは、 boxes aka atom を含むオブジェクト指向形式を使用します。

MP4 Parser などのオンラインツールを使用して、またはWindowsを使用している場合は MP4 Explorer を使用して、MP4のボックスの表現を表示できます。通常のMP4と断片化されたMP4を比較してみましょう。

断片化されていないMP4

このスクリーンショット( MP4 Parser )は、断片化されておらず、非常に単純に1つの巨大なmdat(ムービーデータ)ボックスがあるMP4を示しています。

Representation of boxes within a normal, non fragmented MP4, generated using MP4 Parser

アダプティブビットレートをサポートするビデオプレーヤーを構築している場合、その時点で2つのファイル間でビデオソースを切り替えるために、0.5 Mbpsファイルと1 Mbpsファイルの10秒マークのバイト位置を知る必要があります。各ファイルの1つの大規模なmdat内のこの正確なバイト位置を決定することは簡単ではありません。

断片化されたMP4

このスクリーンショットは、onDemandプロファイルで MP4Box を使用してセグメント化された断片化されたMP4を示しています。

Representation of boxes within a fragmented MP4, generated using MP4 Parser

sidxと一連の moof + mdat ボックスが表示されます。 sidxはセグメントインデックスであり、moof + mdatセグメントの正確なバイト範囲の場所のメタデータを格納します。

基本的に、sidx(そのバイト範囲は付随する.mpd Media Presentation Descriptorファイルで定義されます)を個別にロードし、その後MSEにロードして追加するセグメントを選択します SourceBuffer

重要なのは、各セグメントは選択した定期的な間隔(5秒ごとなど)で作成されるため、異なるビットレートのファイル間でセグメントを一時的に整列させ、再生中にビットレートを簡単に調整できるようにすることです。

102
Philip Bulley