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

Parsing 如何解析WMV(ASF)文件?Can';找不到数据包的长度,parsing,video,ffmpeg,wmv,asf,Parsing,Video,Ffmpeg,Wmv,Asf,我尝试在没有任何SDK的情况下解析WMV(ASF)文件,只需解码原始字节。现在我遇到了ASF_Data_对象的问题,在这里我找不到数据包的长度。更精确的单有效载荷数据包 如图所示: 这里我有9个包,但找不到单个包的大小。如何确定数据包之间的边界 我想,我的问题是字节0x411,其中字段“长度类型标志”。如您所见,这里的值为0,因此所有标志都为零。偶数数据包长度类型 是,此处允许0值。但是如何阅读这类内容呢 这现在是压缩负载,因为复制数据是8,而不是1。因此,这是一个有效载荷,没有额外的大小

我尝试在没有任何SDK的情况下解析WMV(ASF)文件,只需解码原始字节。现在我遇到了ASF_Data_对象的问题,在这里我找不到数据包的长度。更精确的单有效载荷数据包

如图所示:

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

我想,我的问题是字节0x411,其中字段“长度类型标志”。如您所见,这里的值为0,因此所有标志都为零。偶数数据包长度类型

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

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


WMV文件示例:

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

规范引用评论:


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

它不是固定大小的数据包对象,从数据对象派生的大小减少了5.1个ASF数据对象头(9个数据包,每个数据包3200字节)。我尝试过,但在3200字节之后,我希望0x82 0x00 0x00作为新数据包,但这里没有类似的内容。
82 00
在0x040E(数据包0),然后在0x108E(数据包1)下一步
82 00
,然后在0x1D0E。3200字节增量。非常感谢!我错误地计算了有效负载大小,所以请尝试在数据块中的某个位置找到有效负载的大小。这对我来说非常奇怪,使用“最小数据包大小”,它等于文件中每个数据包的“最大数据包大小”,即使有时数据包本身定义了有效负载端。阅读ffmpeg源代码非常有帮助,您的帮助会更好。写下答案,我会接受的。太棒了!我只是在ASF_FILE_PROPERTIES_对象中使用了字段MinimumDataPacketSize,有点困惑。再次感谢你!罗曼,我还有一个问题。我有一个奇怪的WMV文件,其中(object_size-50)/totaldatapackets生成非整数结果(2787.52)。并且该值小于ASF_FILE_PROPERTIES_对象中的MinimumDataPacketSize(2888字节)。文件未被截断,因为数据段存在索引并且数据对象的大小正确。此外,每个数据包都有“数据包大小”字段,其值为2886字节(0字节的填充)。目前,我只是忽略了所有的“填充数据”和“数据包大小”的值,如果需要的话,只需填充零,一切正常。。。但我不知道这是否正确。你怎么想?@bukkojot:也许你可以分享这个文件?magnet:?xt=urn:btih:10C470ED654D35F00111E42180E8CC7A58DF0697(仅限wmv文件)