如何仅从mp4文件下载moov原子



我已经想出了如何解析moov atom并从中获取一些信息,但是如何触发http请求以仅从可搜索的mp4 url获取moov atom,以便我可以跳过mdat和其他原子。

可能一种方法是使用从 0 开始的内容范围,但我如何确定 moov atom 的终点是什么。我可以看到这个问题的一种方法是打开 url 流并开始读取它,直到我超过 moov atom,此时我可以终止请求,但这很难做到,所以我想知道是否有一个特殊的请求结构将只下载 moov atom 和视频元数据?

谢谢!

.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 atom。

恐怕这只是理论上的,这可能没有真正的实际帮助......

相关内容

  • 没有找到相关文章

最新更新