2015-05-22 2 views
0

Я транслирую MP3-ресурс с помощью NetStream во Flash.onMetaData никогда не призывал к потоковой передаче MP3

Чтобы показать ход песни, мне нужна продолжительность песни.

Но onMetaData никогда не вызывается для объекта NetStream.

Вот код http://pastebin.com/VZvdqTF5

Update: кажется, что MP3-ресурс не обеспечивает необходимого MetaData для MP3-ресурса. Так что это не проблема с кодом, это как-то связано с потоковым сервером, который я использую в приложении.

+1

Post некоторый код .. Мы не волшебники! :) –

+1

для onMetadata, который будет называться mp3, должен иметь метаданные, что не всегда так. Вы можете узнать продолжительность mp3, как только он будет полностью загружен. – BotMaster

ответ

0

Убедитесь, что вы устанавливаете client подходящий класс NetStream.

клиент свойство: Определяет объект, на котором метода обратного вызова для обработки потоковых или F4V файлов/FLV данных. Объектом по умолчанию является объект NetStream. Если вы установите для свойства client другой объект, на этот другой объект вызывается метод обратного вызова. Объект NetStream.client может вызывать следующие функции и получать связанный объект данных: onCuePoint(), onImageData(), onMetaData(), onPlayStatus(), onSeekPoint(), onTextData() и onXMPData().

yourNetStreamInstance.client = {onMetaData:onMetaData}; 

function onMetaData(metaData:Object):void 
{ 
    trace(metaData.duration); // duration 
} 
+0

Я устанавливаю ** client ** свойство для моего объекта ** NetStream **, как этот 'myNetStream.client = this;' Также я определяю функцию ** onMetaData **. –

+2

Итак, возможно, это поможет, если вы добавите свой код. Я просто реализовал эту функцию и работал без проблем. Возможно, что-то еще не хватает. – gabriel

+0

вот код, который я тестирую http://pastebin.com/VZvdqTF5 –

0
ns.client = new ConnectionClient(this); 

Определить, что класс внутри вашего класса NetStream в нижней

class ConnectionClient { 
    private var _owner:YourNSStreamObjectClass; 

    public function ConnectionClient(owner:YourNSStreamObjectClass) : void { 
     _owner = owner; 
    } 

    public function onMetaData(info : Object) : void { 
     //_owner.setMetaData(info); 

    } 

    public function onCuePoint(info : Object) : void { 
     //trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); 
    } 

    public function onXMPData(info : Object) : void { 
     //trace("xmp data = " + info); 
    } 

    public function onPlayStatus(info : Object) : void { 
     //trace("onPlayStatus data = " + info); 
    } 
} 
Смежные вопросы