gpt4 book ai didi

c# - 如何使用魔数(Magic Number)检测查看 WMA 和 WMV 文件之间的区别?

转载 作者:行者123 更新时间:2023-11-30 22:30:00 26 4
gpt4 key购买 nike

我正在尝试根据魔数(Magic Number) 嗅探文件的类型。经过一番googling我找到了以下信息:

WMA:

Primary association: Windows Media
Company: Microsoft Corporation
File classification: Audio
Mime type: audio/x-ms-wma, video/x-ms-asf
Identifying characters Hex: 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C

WMV:

Primary association: Windows Media File
Company: Microsoft Corporation
Mime type: video/x-ms-wmv
Identifying characters Hex: 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C

音频和视频都使用这些魔数(Magic Number)。我如何检测我是否拥有其中之一。注意:我不能使用扩展,我只有一个带字节的 System.IO.Stream

最佳答案

这取决于你的嗅探器应该有多好以及性能应该有多好。如果您可以分析大约 1024 个字节,那么您可以搜索一些特定于 WMV 文件的其他元数据。如果没有此类数据,您可以假设它是 WMA。

查找以下字节(按优先顺序):

  1. 纵横比 (UTF-16)
  2. Windows 媒体视频 (UTF-16)
  3. WMV3 (ASCII)
  4. 设备一致性模板 MP@ML (UTF-16)

在 header 区域中呈现任何此元数据标记将文件标识为 WMV。因此,在最坏的情况下,您需要在 1024 字节区域中执行大约 8 次搜索(包括所有 DeviceConformanceTemplate 的类型)来检测 WMV,最好的情况下需要执行 1 次搜索来检测 WMV。

其他方式是parse header (AsfMojo 可能有帮助)它可以是一些典型的 8K 字节,但通常不受限制。我假设 header 信息必须足以区分音频数据和视频数据(但我不是 100% 确定)。我更喜欢这种方式,如果无法解析,则回退到“hacky”解决方案。

关于c# - 如何使用魔数(Magic Number)检测查看 WMA 和 WMV 文件之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com