社区
GAME,图形处理/多媒体
帖子详情
请高手帮助如何实现delphi修改asf文件的摘要信息
lhc98
2008-12-06 01:05:39
最近做项目,想把生成的asf文件通过delphi自动添加上标题、作者、网址版权等信息后写一个ftp功能上传到网站,不知道如何修改已有asf文件的摘要信息,请这方面的高手帮帮我提升一下技术,谢谢
...全文
144
1
打赏
收藏
请高手帮助如何实现delphi修改asf文件的摘要信息
最近做项目,想把生成的asf文件通过delphi自动添加上标题、作者、网址版权等信息后写一个ftp功能上传到网站,不知道如何修改已有asf文件的摘要信息,请这方面的高手帮帮我提升一下技术,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lhc98
2008-12-06
打赏
举报
回复
自己问朋友解决了
格式的简单说明:
如图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的时候,曲目信息是以普通的字符串形式表示的。
基于
Delphi
开发的TreeDBNotes Pro 4.35高效树状笔记管理工具
Delphi
原生的TTreeView功能有限,无法满足 TreeDBNotes Pro 的高交互需求。于是团队基于 VCL 开发了增强版控件:typeprivateprotectedoverride;override;override;关键改进包括:双缓冲绘制(减少闪烁)拖拽排序...
【转帖】
文件
系统驱动编程基础篇
文件
系统驱动编程基础篇之一——我们的准备一、导言在四个月漫长的征战后,终于在国庆节的今天完成了基础篇系列。本文写作的初衷很简单,就是给平静的池水中加入一点波澜,如果大家在阅读后感受到一点生气,激起探索...
“为了救活系统,我将Windows翻了个底朝天”——记录一次Windows 11注册表硬核修复经历
于是回到WinRE,又用Autoruns分析了一下原系统,打开其中一个驱动
文件
的路径,仔细查看这个
文件
,没发现问题,
修改
时间是很久以前,不可能被Autoruns动过,而且签名也在。 为了进一步确认这种异常的现象到底与系统...
编程资料 -C# 多线程
编程资料 - 多线程C#多线程编程实例实战作者: 刘弹 www.ASPCool.com 时间:2003-5-17 上午 10:24:05 阅读次数:10996单个写入程序/多个阅读程序在.Net 类库中其实已经提供了
实现
,即System.Threading....
SSM“书海”校园图书
信息
管理系统-毕业设计源码28285
随着
信息
技术的迅猛发展,校园...“书海”校园图书
信息
管理系统的设计与
实现
,不仅有助于
实现
图书资源的数字化、网络化管理,提高图书资源的利用率,还能为师生提供更加便捷、高效的图书借阅、查询、预约等服务......
GAME,图形处理/多媒体
1,184
社区成员
14,330
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章