如何在完全下载之前找到mp3的总时间?我有这个在TimerEvent.TIMER上调用的函数
private function onTick(e:TimerEvent):void
{
_soundLength = _sound.length;
_position = _channel.position;
mp3Interface.timeBar.timers.elapsedTime.text = ascb.util.DateFormat.formatMilliseconds(_position);
mp3Interface.timeBar.timers.totalTime.text = ascb.util.DateFormat.formatMilliseconds(_soundLength);
var percentPlayed:Number = Math.round((_position/_soundLength)*100);
mp3Interface.timeBar.seeker.x = (percentPlayed*mp3Interface.timeBar.progressBar.width-5)/100;
}
问题是只有当mp3完全下载时,totalTime才正确..
答案 0 :(得分:2)
查看mp3infoutil库。
答案 1 :(得分:1)
最简单的方法是根据文件总大小和到目前为止加载的字节估算mp3文件的长度:
//the loading progress handler
private function progressHandler(e:ProgressEvent){
_soundLength = _sound.length*e.bytesTotal/e.bytesLoaded;
}
它给出了一个非常好的估计。 _soundLength
属性可能会有1或2秒的变化,直到加载完成。无论如何,这是找出任何mp3长度的唯一方法。当然,如果你的mp3文件有ID3信息,你可以从那里获得mp3的长度,但不是所有的mp3都可以。