AS3 - 如何在下载之前找到mp3的总时间?

时间:2010-11-25 15:10:05

标签: flash audio mp3

如何在完全下载之前找到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才正确..

2 个答案:

答案 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都可以。