0

moov アトムを解析してそこから情報を取得する方法は既に理解しましたが、mdat やその他のアトムをスキップできるように、シーク可能な mp4 URL からのみ moov アトムを取得するために http リクエストを起動する方法を理解しました。

おそらく 1 つの方法は、0 から始まる content-range を使用することですが、moov アトムの終点を特定するにはどうすればよいでしょうか。この問題を回避できる 1 つの方法は、URL ストリームを開いて、要求を終了できる moov アトムを通過するまで読み取りを開始することですが、これを行うのは非常に難しいので、 moov アトムとビデオ メタデータのみをダウンロードする特別なリクエスト構造?

ありがとう!

4

1 に答える 1

2

.mp4 ファイルは、サイズは異なりますが規則的な構造のチャンク (アトム) で構成されています。

http://atomicparsley.sourceforge.net/は、アトム チャンクの構造をうまく説明しています (これはローカル ファイル用であり、http 経由ではありませんが)。関連部分:各ファイルは「「ボックス」または「アトム」と呼ばれる個別のユニットで構成されています。アトムは非常に単純なビルディングブロックとして定義されています。

[4bytes atom length] [4bytes atom name] [contents of the atom, if any]"

例えば:

Atom ftyp @ 0 of size: 32, ends @ 32
Atom moov @ 32 of size: 23276, ends @ 23308
  Atom mvhd @ 40 of size: 108, ends @ 148
  Atom trak @ 148 of size: 3664, ends @ 3812
    Atom tkhd @ 156 of size: 92, ends @ 248
    Atom edts @ 248 of size: 36, ends @ 284
  Atom elst @ 256 of size: 28, ends @ 284
    Atom mdia @ 284 of size: 3484, ends @ 3768
...

(CONTENT-RANGE を使用して) チャンクのアトム タイプとサイズを読み取り、その情報を使用して次のチャンクへのオフセットを計算し、moov アトムを取得するまで繰り返すことで、ファイルを「分岐」できます。

残念ながら、これは理論上のものであり、実際の実用的な助けにはならないかもしれません...

于 2013-11-08T23:22:02.663 に答える