欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

应用于嵌入式终端的MP3流服务器的设计*

时间:2011-04-23  作者:秩名

论文导读:一种基于局域网传输并结合了嵌入式技术的智能广播系统得于实现。使用的是互联网上成熟的TCP/IP传输协议。并同时向流服务器申请新的数据流。
关键词:嵌入式,MP3文件格式,数据流,传输协议
1、引言
随着国家信息教育化的不断深入,多媒体教学在广大中小学的不断普及,利用广播系统进行语音语言教学的需求在不断的增加,特别是音乐铃声的普及,英语听力考试的实施等,对学校广播系统的功能、容量、音质、智能化水平都提出了更高的要求。如何才能满足学校对现代化校园广播的要求,一直是相关技术人员的设计难题,传统的广播由于传输质量和智能化等模拟技术局限性的限制,已经难于符合学校的数字化教学要求。随着学校校园网建设的普及,一种基于局域网传输并结合了嵌入式技术的智能广播系统得于实现。
该种智能广播系统主要由MP3流服务器和嵌入式终端组成,使用的是互联网上成熟的TCP/IP传输协议,具有稳定、高音频质量和高智能化等优点,由于该系统相关技术具有一定的技术难度和较高的商业性,成为当前广播产品方向各厂商争相研究开发的课题或产品。本文将介绍智能广播系统里主要技术——如何用Delphi开发应用于嵌入式终端的MP3流服务器,通过分析MP3格式和TCP/IP传输协议,给出流服务器实现方案。
2、MP3文件格式分析
MP3文件是由帧(frame)构成的,帧是MP3文件最小的组成单位。MP3的全称应为MPEG1Layer-3音频文件,MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG音频文件是MPEG1标准中的声音部分,也叫MPEG音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer-1、Layer2、Layer3,且分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码。我们的设计目的是读出MP3文件里的数据帧(frame)内容,并将其以流的形式传输到各个节点终端。MP3文件结构大体分为三部分:TAG_V2(ID3V2),Frame,TAG_V1(ID3V1)。所以下面对MP3文件的三个部分进行简单分析。
2.1、ID3v1
ID3V1存放在MP3文件的末尾的128个顺序存放字节,主要包含了作者,作曲,专辑等信息,数据结构定义如下:
{ Real structureof ID3v1 tag }
type
TagRecord= record
Header:array [1..3] of Char; // ID3v1头,必须为“TAG”
Title:array [1..30] of Char;
Artist:array [1..30] of Char;
Album:array [1..30] of Char;
Year:array [1..4] of Char;
Comment:array [1..30] of Char;
Genre:Byte;
end;
2.2、ID3V2
ID3V2到现在一共有4个版本,但流行的播放软件一般只支持第3版,既ID3v2.3。ID3V2包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。由于ID3V1已经记录在MP3文件的末尾,ID3V2就只能记录在MP3文件的首部了。因此,ID3V2结构比ID3V1的结构要复杂得多,但比前者全面且可以伸缩和扩展。要准确地读出MP3文件的音频实体数据,就必须要准确的知道位于MP3文件首部的ID3V2的长度。由于ID3V2长度不固定,所以必须对ID3V2的结构进行了解。
每个ID3V2.3的标签都由一个标签头和若干个标签帧或一个扩展标签头组成。关于曲目的信息如标题、作者等都存放在不同的标签帧中,扩展标签头和标签帧并不是必要的,但每个标签至少要有一个标签帧。标签头和标签帧一起顺序存放在MP3文件的首部,ID3V2.3标签头数据结构定义为:
{ Real structureof ID3v2 header }
type
TagInfo = record
ID:array [1..3] of Char; // 必须为“ID3”
Version:Byte;
Revision:Byte;
Flags:Byte;
Size:array [1..4] of Byte;
end;
标签大小由四个字节组成,但每个字节只使用了低7位,最高位恒为0,格式如下:
0xxxxxxx 0xxxxxxx 0xxxxxxx 0xxxxxxx
计算标签大小时将最高位0去掉,得到一个28位的二进制数,就是标签大小。计算标签大小的函数为:
functionGetTagSize(const Tag: TagInfo): Integer;
begin
{ Gettotal tag size }
Result :=Tag.Size[1] * $200000 +
Tag.Size[2] * $4000 +
Tag.Size[3] * $80 +
Tag.Size[4] + 10;
if Result> Tag.FileSize then Result := 0;
end;
2.3、帧FRAME
MP3文件的音频数据由一系列的帧组成,帧的总数由文件大小和帧长决定,每个帧的长度可能不固定,也可能固定,由位率bit rate决定。每个帧分为帧头和数据实体两部分,帧头记录了MP3的位率,采样率,版本等信息,长度是4BYTE(32bit),帧头后面可能有两个字节的CRC校验,这两个字节的是否存在决定于帧头信息的第16bit,为0则帧头后面无校验,为1则有校验,校验值长度为2个字节,紧跟在帧头后面。免费论文参考网。帧头后紧接着帧的实体数据,具体长度由帧头计算得出。值得注意的是,无论帧长是多少,每帧的播放时间都是26ms。
MP3标准规定,不变位率的MP3文件称作CBR,而变化位率的MP3文件称作VBR,每个帧的长度都可能是变化的。CBR的位率和帧的大小是固定的,只要知道文件总长度,和帧长即可由播放每帧需26ms计算得出该MP3播放的总时间。VBR是XING公司推出的算法,所以在MP3的帧里会有“XING”这个关键字,它存放在MP3文件中的第一个有效帧里,它标识了这个MP3文件是VBR的。同时,在第一个帧里存放了MP3文件的总帧数,乘上每帧需26ms即可计算出播放的总时间。

查看相关论文专题
加入收藏  打印本文
上一篇论文:引入JAVASCRIPT框架解决WEB程序开发中浏览器兼容性问题
下一篇论文:用Authorware实现CAI课件中声音的交互播放(图文)
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文