新版本的flashplayer(6.0r40)已经能够支持获取外部mp3文件的ID3了。以下是MM的官方资料:
使用 attachSound() 或 loadSound() 方法加载了带 ID3v1 标记的 MP3 音频文件之后,即可从音频对象中检索到 ID3 标记属性。如果音频文件不带 ID3v1 标记,那么 ID3 属性为未定义。用户必须具有 Macromedia Flash Player 6.0r40 或更高版本,ID3 属性才能起作用。
一旦 MP3 已经完全加载到音频对象中,您便可以访问下列属性:
mySound.id3.songname
mySound.id3.artist
mySound.id3.album
mySound.id3.year
mySound.id3.comment
mySound.id3.track(仅对 ID3v1.1 标记可用)
mySound.id3.genre
注:“风格”(genre) 的值是整数,而非名称。有关风格名称及对应的整数值的列表,请查看 ID3 Web 站点。如果要以风格名称而不是整数作为风格属性值,则必须在影片的动作脚本中嵌入该风格表。
这方面我认为的解决方法是使用数组存储相对应的ID3 genre,写一个专用的转换函数(或者重构ID3这个对象……)
以下代码可以得到ID3数据:
myTrack = new Sound();
function GETPMP3ID3(){
myTrack.start();
if((myTrack.getBytesLoaded() == myTrack.getBytesTotal()) && myTrack.duration > 0){
ID3value.text += "songName = " + myTrack.id3.songname +"."+ newline;
ID3value.text += "Artist = " + myTrack.id3.artist +"."+ newline;
ID3value.text += "album = " + myTrack.id3.album + newline;
ID3value.text += "year = " + myTrack.id3.year + newline;
ID3value.text += "comment = " + myTrack.id3.comment + newline;
ID3value.text += "track = " + myTrack.id3.track + newline;
ID3value.text += "genre = " + myTrack.id3.genre + newline;
clearInterval (poll);
}
}
myTrack.loadSound(Yourmp3URL, false);
poll = setInterval(GETPMP3ID3, 1000);
如果所附的 MP3 文件 Some_Linked_Sound 有关于艺术家的 ID3 v1.0 或 v1.1 标记,该值将跟踪到“输出”窗口。
注:要使 ID3 属性可用,必须加载整首歌曲。
不过遗憾的是好象还不能支持中文……
相关的新版本flashplayer的修正或新增功能请看这个页面:
www.macromedia.com/support/flash/releasenotes/player/rn_6_cn.html