参考的资料:
http://duyouhua1214.iteye.com/blog/1326238
mp3文件的首尾都存有文件的信息,存在尾部的称为ID3V1,在首部的称为 ID3V2。在这篇文章中只说存在尾部的id3v1
这里是一个表 ,记录了文件信息存放的位置:
ID3 V1.0文件尾说明
字节
|
长度 (字节)
|
说 明
|
1-3
|
3
|
存放“TAG”字符,表示ID3 V1.0标准,紧接其后的是歌曲信息。
|
4-33
|
30
|
歌名
|
34-63
|
30
|
作者
|
64-93
|
30
|
专辑名
|
94-97
|
4
|
年份
|
98-127
|
30
|
附注
|
128
|
1
|
MP3音乐类别,共147种。
|
按照这个就可以读取出mp3中文件的信息。
这里说的读取方法都是在操作的字节,所以只要理解原理,任何编程语言都能实现,这里就给出as3.0的代码:
package service
{
//import 省略
public class SongInfo
{
//private var TAG:String = "TAG";// 文件头1-3
private var songName:ByteArray = new ByteArray ;// 歌曲名4-33
private var artist:ByteArray = new ByteArray ;// 歌手名34-63
private var album:ByteArray = new ByteArray ;// 专辑名61-93
private var year:ByteArray = new ByteArray ;// 年94-97
private var comment:ByteArray = new ByteArray ;// 备注98-125
private var buffer:ByteArray = new ByteArray ;
public function SongInfo(file:File)
{
//解决中文乱码的问题
System.useCodePage = true;
var fileStream:FileStream = new FileStream ;
fileStream.open(file,FileMode.READ);
//设置文件读取的位置
fileStream.position = file.size - 128;
fileStream.readBytes(buffer);
// 只有前三个字节是TAG才处理后面的字节 ;
var tag:ByteArray = new ByteArray ;
buffer.readBytes(tag,0,3);
if (tag.toString() == "TAG")
{
buffer.readBytes(songName,0,30);
buffer.readBytes(artist,0,30);
buffer.readBytes(album,0,30);
buffer.readBytes(year,0,4);
buffer.readBytes(comment,0,28);
}
fileStream.close();
}
//返回备份
public function getComment():String
{
return comment.toString();
}
//专辑名
public function getAlbum():String
{
return album.toString();
}
//返回年月日
public function getYear():String
{
return year.toString();
}
//返回歌曲的名字
public function getSongName():String
{
return songName.toString();
}
//返回歌手
public function getSinger():String
{
return artist.toString();
}
}
}
分享到:
相关推荐
在我们的"Flash as3.0 小巧MP3 播放器 源码"项目中,`MP3.fla`文件是主要的工作区,包含舞台上的所有视觉元素以及相关的ActionScript代码。在Flash CS4中,开发者可以使用时间轴上的关键帧和脚本面板编写AS3代码,...
例如,可以创建一个Sound对象加载MP3文件,然后监听和处理Event.SOUND_COMPLETE事件来实现播放和暂停。上一首和下一首切换则需要管理播放列表,通过改变当前播放的音频索引来实现。 3. **播放进度条显示**: 进度条...
AS3.0支持MP3、WAV等多种音频格式,可以方便地播放背景音乐和音效。源码中可能会包含一个音频管理类,负责加载、播放和停止音频资源。 最后,游戏状态管理也是需要考虑的。超级玛丽游戏可能有多个状态,如游戏开始...
- 音频播放模块:对于MP3模块,AS3.0的`Sound`类用于加载和播放音频文件。 5. **动态内容加载**: 使用XML的好处之一是内容可以动态加载,允许视频列表在不更新播放器本身的情况下进行扩展或更改。这样,开发者可以...
要使用AS3读取ID3信息,你需要创建一个类来解析MP3文件。例如,`ID3Reader.as`可能包含以下代码: ```as3 public class ID3Reader { public function readMP3Header(file:File):void { var stream:FileStream = ...
7. **加载和解码MP3**:使用AS3.0的Sound类和SoundChannel类,播放器可以加载MP3文件并创建一个Sound对象,然后通过SoundChannel对象进行播放。解码过程在后台自动进行,用户几乎无需等待即可开始播放。 8. **...
以下是一个简单的AS3代码片段,它定义了一个包含MP3文件的SWF文件: ```actionscript package { import flash.display.Sprite; public class MP3Wrapper extends Sprite { [Embed(source="test.mp3")] public...
AS3 KingPlayer是一款基于ActionScript 3.0开发的MP3播放器,它提供了丰富的功能和自定义选项,适用于网页嵌入或者独立应用。这款播放器的源码可以帮助开发者深入理解音频处理、用户界面设计以及Flash ActionScript...
该播放器的运作原理是:Flash程序读取XML文件,获取其中的MP3文件路径,然后加载并播放这些音乐。用户可以通过播放器的控制界面进行播放、暂停、停止、前进和后退等操作。由于Flash提供了丰富的图形和交互功能,因此...
4. **XML和JSON数据**:AS3.0提供`XML`和`JSON`类,用于解析和操作这两种数据格式。这在数据交换、配置文件读取等方面非常实用。 三、资源优化和管理 1. **预加载**:当项目包含大量资源时,预加载是必不可少的。...
3. **加载MP3文件**:在Flash中,我们可以使用`Sound`类来加载和播放MP3文件。通过`load()`方法加载MP3,然后用`play()`方法启动播放。同时,我们还需要处理加载进度和错误处理。 4. **用户界面设计**:一个良好的...
6. **XML或JSON数据源**:为了让播放器能够播放多个MP3文件,我们可以使用XML或JSON文件作为数据源,存储MP3文件的URL和相关信息。通过解析这些数据,我们可以动态加载和切换不同的歌曲。 7. **UI设计**:虽然Flash...
5. **添加和删除歌曲**: 这涉及到数据结构,如数组或列表,用于存储MP3文件的路径或URL。用户界面需要提供接口供用户进行添加和删除操作,这些操作需要更新歌曲列表。 6. **显示播放进度**: 这通常通过监听...
《深入解析:Flash MP3播放器与FLA源文件》 在数字音频的世界里,Flash MP3播放器凭借其跨平台的兼容性和丰富的交互性,一度成为网页音乐播放的首选工具。今天,我们将深入探讨一款名为"Flash MP3播放器"的项目,它...
本资料"Flash游戏制作常用代码解析"主要聚焦于ActionScript 3.0(AS3),它是Flash开发中的最新版本,具有更高效、更面向对象的特性。 一、基础语法 ActionScript 3.0采用了严格的类型系统,变量必须先声明类型再...
- 视频解码:播放器需要解析FLV文件的头信息,理解帧类型(关键帧、间隔帧等),并能解码H.263或VP6等视频编码格式。 - 音频解码:同样,播放器需要处理AAC或MP3等音频编码,将其转换为可播放的声音数据。 - 控制...
它能够播放MP3、WAV等音频格式,支持自定义皮肤、播放列表、音量控制等功能。随着HTML5的普及,Flash逐渐被HTML5 Audio取代,但在某些特定场景下,Flash音乐播放器仍有其优势。 二、工作原理 Flash音乐播放器的核心...
第四章"ActionScript 3.0语法基础"深入探讨了AS3的关键语法元素,如变量、数据类型、控制流语句和函数,这对于理解Flex组件的行为至关重要。 第五章"事件和事件机制"阐述了事件处理的基本概念,如何定义和处理不同...
3. **反编译ActionScript**:SothinkSWFDecompiler支持ActionScript 3.0的反编译,可以将编译后的脚本还原为可读的AS代码,方便开发者理解和修改。 二、使用过程 1. **安装与启动**:用户首先需要运行压缩包内的...