AS3 - Как узнать общее время mp3 до загрузки? - PullRequest
0 голосов
/ 25 ноября 2010

Как узнать общее время 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;
 }

Проблема в том, что totalTime корректно, только когда mp3 полностью загружен.

Ответы [ 2 ]

2 голосов
/ 25 ноября 2010

Посмотрите библиотеку mp3infoutil .

1 голос
/ 26 ноября 2010

Самый простой способ сделать это - оценить длину 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-файлы.

...