如何解析 WMV (ASF) 文件?找不到数据包的长度

How to parse WMV (ASF) file? Can't find length of data packets

我尝试在没有任何 SDK 的情况下仅通过解码原始字节来解析 WMV (ASF) 文件。现在我遇到 ASF_Data_Object 的问题,我找不到数据包的长度。更准确地说,Single payload数据包。

见图:

我这里有 9 个数据包,但无法找到单个数据包的大小。我如何确定数据包之间的边界?

我认为,我的问题在字节 0x411,其中字段 "Length type flags"。如您所见,这里的值为 0,因此所有标志均为零。偶数据包长度类型。

是的,此处允许 0 值。但是如何阅读这类内容呢?

现在这是压缩的有效负载,因为复制数据是 8,而不是 1。因此,这是没有附加大小字段的单个有效负载。

WMV 文件示例:https://files.catbox.moe/b51l2j.wmv

您似乎有固定大小的数据包,其中没有包含明确的有效负载长度,这意味着有效负载数据大小是从顶级数据对象结构派生的。

规范报价评论:

也就是说,ASF 数据对象携带 9 个数据包,每个数据包 3200 字节,然后数据包内部包含每个数据包 3174 字节的有效负载,除了最后一个数据较少和一些填充。