我试着根据神奇的数字嗅出文件的类型。经过一些谷歌之后,我发现了以下信息:
世界海洋环境状况评估:
主要协会: Windows Media 公司:微软公司 文件分类:音频 Mime类型:音频/x-ms-wma,视频/x-ms-asf 识别字符十六进制: 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C
WMV:
主关联: Windows媒体文件 公司:微软公司 Mime类型:视频/x-ms-wmv 识别字符十六进制: 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C
音频和视频都使用这些神奇的数字。我怎样才能发现我是否有一个或另一个。注意:我不能使用扩展,我只有一个带字节的System.IO.Stream
。
发布于 2012-03-28 16:14:40
这取决于你的嗅探器应该有多好,性能应该有多好。如果您可以分析大约1024字节,那么您可以搜索其他特定于WMV文件的元数据。如果没有这样的数据,您可以假设它是一个WMA。
(按预先排列的顺序)查找以下字节:
header区域中的任何元数据标记都会将文件标识为WMV。因此,在最坏的情况下,您需要在1024字节区域执行大约8次搜索(包括所有DeviceConformanceTemplate
类型)来检测WMV,在最好的情况下,需要执行1次搜索来检测WMV。
另一种方法是解析标头 (AsfMojo可能有帮助),它可以是一些典型的8K字节,但一般不受限制。我假设标题信息必须区分音频和视频数据(但我不是100%确定)。我更喜欢这种方式,如果不可能进行解析,我就会放弃"hacky“解决方案。
发布于 2012-03-28 15:13:34
来自MSDN
ASF文件与WMV或WMA文件之间唯一的区别是文件扩展名和MIME类型。WMV文件的MIME类型是视频/x wmv,对于WMA是音频/x wma。ASF的MIME类型是视频/x-ms-asf。这些文件的基本内部结构是相同的。
发布于 2012-03-28 16:24:37
如前所述,WMV
和WMA
文件共享相同的格式- Advanced Systems Format (ASF)
。那么,您可以在MS网站(它是可用的)上查看ASF格式规范,但这并不是针对心脏无力的人。
要知道文件中的内容,您可能需要使用WMCreateReader函数实例化WMCreateReader函数并使用IWMHeaderInfo
接口检索有关文件的信息。
图书馆将为您提供使用来自C#的API所需的定义(可能还有有用的示例)。
https://stackoverflow.com/questions/9910313
复制相似问题