wma文件的metadata和picture

转载时请注明出处和作者联系方式:http://blog.csdn.net/mimepp

作者联系方式:YU TAO <yut616 at sohu dot com>

wma文件的metadata和picture

在MS提供的asf_specification.doc中有关于asf文件的格式信息的内容。

在header object中含有总30 bytes的描述信息,如

Field name Field type Size (bits)
Object ID GUID 128
Object Size QWORD  64
Number of Header Objects DWORD  32
Reserved1 BYTE 8
Reserved2 BYTE 8

然后在header中,会有很多个header object,如Content Description Object和Extended Content Description Object等。

可以在parse header阶段,使用一个结构来保存这些object。

picture的内容是存放在 Extended Content Description Object中。

Field Name Field Type Size (bits)
Descriptor Name Length WORD 16
Descriptor Name WCHAR varies
Descriptor Value Data Type WORD 16
Descriptor Value Length WORD 16
Descriptor Value See text varies

在找到上面的Extended Content Description Object后,再继续查找"WM/Picture"这个内容,然后后面就是如下的结构。

"WM/Picture"即为上面WCHAR的Description name.

typedef struct _WMPicture{
  WORD wValueDataType;     /* 2 bytes */
  WORD wValueLen;       /* 2 bytes */
  BYTE  bPictureType;     /* 1 byte */
  DWORD  dwDataLen;         /* 4 bytes */
  LPWSTR  pwszMIMEType;     /* string ends with 00 00 */
  LPWSTR  pwszDescription; /* string end with 00 00 */
  BYTE*  pbData;
} WM_PICTURE;
需要注意的是,wszMIMEType是一个WCHAR的字串,并且是以"00 00"(16进制)结尾,一般的内容为"image/jpeg"这样的内容。
wszDescription也是一个WCHAT的字串,同样是以“00 00”结尾,通常里面不含描述信息,而是直接“00 00”结束。
最后就能从dwDataLen和pbData得到需要的picture了。

你可能感兴趣的:(wma文件的metadata和picture)