Http 如何仅从mp4文件下载moov atom

Http 如何仅从mp4文件下载moov atom,http,stream,request,mp4,Http,Stream,Request,Mp4,我已经知道了如何解析moov原子并从中获取一些信息,但是如何触发http请求以仅从可查找的mp4url获取moov原子,这样我就可以跳过mdat和其他原子 可能一种方法是使用从0开始的内容范围,但如何确定moov原子的终点是什么。解决这个问题的一种方法是打开url流并开始读取它,直到我通过moov atom,在这一点上我可以终止请求,但这是非常困难的,所以我想知道是否有一种特殊的请求结构只下载moov atom和视频元数据 谢谢 一个.mp4文件由大小不同但结构规则的块(原子)组成 很好地解释了

我已经知道了如何解析moov原子并从中获取一些信息,但是如何触发http请求以仅从可查找的mp4url获取moov原子,这样我就可以跳过mdat和其他原子

可能一种方法是使用从0开始的内容范围,但如何确定moov原子的终点是什么。解决这个问题的一种方法是打开url流并开始读取它,直到我通过moov atom,在这一点上我可以终止请求,但这是非常困难的,所以我想知道是否有一种特殊的请求结构只下载moov atom和视频元数据


谢谢

一个.mp4文件由大小不同但结构规则的块(原子)组成

很好地解释了atom区块结构(并提供了要研究的源代码,尽管这是针对本地文件的,而不是通过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原子


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

谢谢你的评论,但我已经熟悉了结构以及如何应用内容范围。问题是第一个原子moov。如何确定第一个内容范围请求边界以获得大小不同的moov原子,所以我不知道我的第一个内容范围请求应该是什么。