·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3解析mp3音频文件信息,可取出专辑,歌名等各种mp3信息

时间:2013-03-16 15:35CuPlayer.com
[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的代码:

  1. package service 
  2.     //import cuplayer.com 省略 
  3.     public class SongInfo 
  4.     { 
  5.         //private var TAG:String = "TAG";// 文件头1-3  
  6.         private var songName:ByteArray = new ByteArray  ;// 歌曲名4-33  
  7.         private var artist:ByteArray = new ByteArray  ;// 歌手名34-63  
  8.         private var album:ByteArray = new ByteArray  ;// 专辑名61-93  
  9.         private var year:ByteArray = new ByteArray  ;// 年94-97  
  10.         private var comment:ByteArray = new ByteArray  ;// 备注98-125  
  11.         private var buffer:ByteArray = new ByteArray  ; 
  12.         public function SongInfo(file:File) 
  13.         { 
  14.             //cuplayer.com解决中文乱码的问题 
  15.             System.useCodePage = true
  16.             var fileStream:FileStream = new FileStream  ; 
  17.             fileStream.open(file,FileMode.READ); 
  18.             //cuplayer.com设置文件读取的位置 
  19.             filefileStream.position = file.size - 128; 
  20.             fileStream.readBytes(buffer); 
  21.  
  22.             // 只有前三个字节是TAG才处理后面的字节 ; 
  23.             var tag:ByteArray = new ByteArray  ; 
  24.             buffer.readBytes(tag,0,3); 
  25.  
  26.             if (tag.toString() == "TAG") 
  27.             { 
  28.                 buffer.readBytes(songName,0,30); 
  29.                 buffer.readBytes(artist,0,30); 
  30.                 buffer.readBytes(album,0,30); 
  31.                 buffer.readBytes(year,0,4); 
  32.                 buffer.readBytes(comment,0,28); 
  33.  
  34.             } 
  35.             fileStream.close(); 
  36.  
  37.         } 
  38.         //cuplayer.com返回备份 
  39.         public function getComment():String 
  40.         { 
  41.             return comment.toString(); 
  42.         } 
  43.         //cuplayer.com专辑名 
  44.         public function getAlbum():String 
  45.         { 
  46.             return album.toString(); 
  47.         } 
  48.         //cuplayer.com返回年月日 
  49.         public function getYear():String 
  50.         { 
  51.             return year.toString(); 
  52.         } 
  53.         //返回歌曲的名字 
  54.         public function getSongName():String 
  55.         { 
  56.             return songName.toString(); 
  57.         } 
  58.         //cuplayer.com返回歌手 
  59.         public function getSinger():String 
  60.         { 
  61.             return artist.toString(); 
  62.         } 
  63.     } 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器