2016-10-13 00:16:48 点击量:15 标签: 收藏本文
mp3文件的首尾都存有文件的信息,存在尾部的称为ID3V1,在首部的称为 ID3V2。在这篇文章中只说存在尾部的id3v1
这里是一个表 ,记录了文件信息存放的位置:
|
字节
|
长度 (字节)
|
说 明
|
|
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();
- }
- }
- }
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室