社区
Delphi
帖子详情
如何读取 WMA 文件里面的专辑封面图片?
Frank.WU
2007-11-21 09:06:13
新的版本的 千千静听 和 WMA11 都有读取文件里面包含的专辑封面(就是一个图片)的功能,我想知道用 delphi 如何读取这个封面图片?
...全文
715
4
打赏
收藏
如何读取 WMA 文件里面的专辑封面图片?
新的版本的 千千静听 和 WMA11 都有读取文件里面包含的专辑封面(就是一个图片)的功能,我想知道用 delphi 如何读取这个封面图片?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
蒋晟
2007-11-25
打赏
举报
回复
IWMHeaderInfo::GetAttributeByName
ydlchina
2007-11-25
打赏
举报
回复
学习一下,能有代码就好了。
huayufei
2007-11-21
打赏
举报
回复
wma文件格式(zt)
()Wma 格式歌曲信息文件结构,附读写类(Delphi)
linle @ 2006-05-01 13:10
以前的一点研究,公开好了,有什么疑问可以和我讨论
三个多月前的代码,,比较幼稚,大家将就一下吧
文件结构示意图
格式的简单说明:
如图1,每一个WMA文件,它的头16个字节是固定的,为十六进制的“30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C”, 用来标识这个是否为WMA文件。接下来的8个字节为一个整数,表示整个WMA文件头部的大小,这个头部里面包含了Tag信息等所有非音频信息,头部后面的是音频信息,我们在这里就不深入了解了。那个整数接下来的6个字节还没搞清楚是什么用的,不过不影响我们对Tag信息的读写。
也就是说从文件开始偏移量为31开始,里面存放了很多帧,有我们需要的标准Tag信息,扩展Tag信息,WMA文件控制信息等等。每个帧不是等长的,但是帧头是固定的24个字节,其中前16字节是用来标识这个帧的名字,后8个字节是用来表示这个帧(包括帧头)的大小。这一点和MP3文件的ID3V2信息比较像。
由于我们只需要读写Tag信息,而Tag信息又分别保存在两个帧里,分别为标准Tag帧和扩展Tag帧,所有我们只需要处理这两个帧,其他帧完全可以根据获得的帧长度来跳过。
如图2,标准Tag帧只包含歌曲标题,艺术家,版权,备注四个内容。它的帧名是十六进制的“33 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C”,在24个字节的帧头后紧跟着5个分别为2个字节的整数,前四个分别表示歌曲标题,艺术家,版权,备注的大小,第五个还不清楚是什么用的,大部分情况下是不使用的,即它的大小为0的。
在这10个字节后,这四个信息的内容就按顺序存放了。记住,在WMA文件里,所有的文字都是按Unicode宽字符的编码方式储存的,而且每个字符串后面都又一个0结束字符的。
如图3,再看扩展Tag帧,这里就比较麻烦了,里面包含的信息的个数是不确定的,每个信息也是按照像帧一样的方式组织起来的。扩展Tag帧的帧名是十六进制的“40 A4 D0 D2 07 E3 D2 11 97 F0 00 A0 C9 5E A8 50”,在24字节的帧头后先有一个两个字节的整数表示这个帧里一共有的扩展信息个数(ExNo)。
如图4,每一个扩展信息包含扩展信息名字和对应的值。先有一个两个字节的整数来表示扩展名字信息的大小,接着是扩展信息,然后有一个两个字节的整数标志(Flag),这个后面再讲。然后又是一个两个字节的整数,表示值的大小。接着就是这个值。
当扩展信息名字为WMFSDKVersion时,这个值表示的是这个WMA文件的版本;当扩展信息名字为WM/AlbumTitle时,这个值代表的就是专辑名;当扩展信息名字为WM/Genre时,这个值代表的就是流派;同理,很容易从扩展信息的名字看出这个值的用途的。这些扩展信息的名字和值几乎都是用Unicode的字符串来存储的,到现在为止只发现对下面两个情况例外。(关于所有扩展信息的名字可以从很多地方查到,比如SDK帮助,MSDN)
下面再来看看那个标志Flag,这个基本上是为没什么用的(通常值为0),只对WM/TrackNumber和WM/Track这两个扩展信息名字有用,当Flag为3的时候后面的值(也就是曲目信息)是以4个字节的整数的形式表示,当Flag为0的时候,曲目信息是以普通的字符串形式表示的
参考http://blog.chinaunix.net/u/19881/showart.php?id=217489
你自己去研究吧
tianhuo_soft
2007-11-21
打赏
举报
回复
高手~!!~
【
WMA
文件
的研究结果二】WM/Picture 标签属性(
专辑
封面
)
在WMF SDK 11中,WM/Picture 标签属性同样属于 WMT_TYPE_BINARY typedef struct _WMPicture LPWSTR pwszMIMEType; BYTE bPictureType; LPWSTR pwszDescription; DWORD dwDataLen; BYTE* pbData; } WM_PICTURE;
tinytag核心功能揭秘:艺术家、
专辑
、时长等元数据提取技巧
tinytag是一款轻量级Python库,专为提取音频
文件
元数据设计,支持MP3、FLAC、OGG等多种音频格式。通过简单的API调用,开发者可以轻松获取艺术家、
专辑
、时长等关键信息,是处理音频
文件
的高效工具。 ## 一、支持的音频格式与核心功能 tinytag支持几乎所有主流音频格式,包括: - MP3、MP2、MP1 - OGG、OPUS、FLAC - WAV、AIFF、
WMA
- M4A
Folia支持哪些音频格式?MP3/FLAC/M4A/Opus元数据
读取
全解析
**Folia** 是一款专注于绚丽歌词动画效果的本地音乐 / Navidrome / 第三方多平台在线音乐播放器。导入本地音乐
文件
夹后,它会安全地
读取
[MP3、FLAC、M4A、Opus](https://link.gitcode.com/i/d581f48c464c83df03457c59a2a2bc31) 等格式的元数据(标题、艺术家、
专辑
、内嵌歌词、
封面
、ReplayGain 等),全部
如何使用 TinyTag 快速
读取
音频
文件
元数据:Python 音频元数据解析终极指南
TinyTag 是一个轻量级的 Python 库,专门用于
读取
音频
文件
的元数据和时长信息。无论你是音乐播放器开发者、音频处理工程师,还是需要对音频
文件
进行批量处理的用户,这个简单易用的工具都能帮助你快速获取所需信息。🎵 ## 🔍 TinyTag 是什么? TinyTag 是一个纯 Python 编写的音频元数据
读取
库,支持多种音频格式,包括 MP3、OGG、OPUS、MP4、M4A、FLA
高效音频元数据提取:tinytag支持的10种音频格式全解析
tinytag是一款强大的Python音频元数据提取库,能够轻松
读取
多种音频
文件
的 metadata 信息,包括艺术家、
专辑
、时长、比特率等关键数据。无论是处理音乐收藏还是开发音频应用,tinytag都能提供高效可靠的元数据解析能力。 ## 🎵 为什么选择tinytag? 在众多音频处理工具中,tinytag以其**轻量级设计**和**广泛的格式支持**脱颖而出。它不需要依赖大型音频处理库,
Delphi
5,943
社区成员
262,941
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章