[AS3]as3解析mp3音频文件信息,可取出专辑,歌名等各种mp3信息
[AS3]as3解析mp3音频文件信息,这里说的读取方法都是在操作的字节,所以只要理解原理,任何编程语言都能实现,这里就给出as3.0的代码
mp3文件的首尾都存有文件的信息,存在尾部的称为ID3V1,在首部的称为 ID3V2。在这篇文章中只说存在尾部的id3v1
这里是一个表 ,记录了文件信息存放的位置:
ID3 V1.0文件尾说明
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 cuplayer.com 省略
- 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)
- {
- //cuplayer.com解决中文乱码的问题
- System.useCodePage = true;
- var fileStream:FileStream = new FileStream ;
- fileStream.open(file,FileMode.READ);
- //cuplayer.com设置文件读取的位置
- filefileStream.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();
- }
- //cuplayer.com返回备份
- public function getComment():String
- {
- return comment.toString();
- }
- //cuplayer.com专辑名
- public function getAlbum():String
- {
- return album.toString();
- }
- //cuplayer.com返回年月日
- public function getYear():String
- {
- return year.toString();
- }
- //返回歌曲的名字
- public function getSongName():String
- {
- return songName.toString();
- }
- //cuplayer.com返回歌手
- public function getSinger():String
- {
- return artist.toString();
- }
- }
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...