метаданные видео - длительность не всегда доступна - PullRequest
0 голосов
/ 01 сентября 2010

Я создаю видеоплеер в среде, где stream.bytesTotal недоступен.Мне нужно использовать метаданные продолжительности, закодированные в FLV-файлах, чтобы экстраполировать такие вещи, как ход воспроизведения и отображение времени.

Проблема заключается в том, что при загрузке FLV-метаданных, включая продолжительность, не удается получить доступ2 из 3 раз.Вот функция, которая перебирает объект метаданных: -

открытая функция onMetaDataHandler (metadataObj: Object): void {

for (var metadata:Object in metadataObj) {

    if (metadata == "duration" ) {

        _duration = metadataObj[metadata];

        Debug.log('metadata _duration == ' + _duration );

        playBackTimeText();

    }

    if (metadata == "width" ) {

        video.width = metadataObj[metadata];
    }

    if (metadata == "height" ) {

        video.height = metadataObj[metadata];
    }

    Debug.log(metadata + ": " + metadataObj[metadata], 0xffff00);

}

}

Это лучший способсделать это, или есть способ перезагрузить метаданные без перезагрузки FLV?

1 Ответ

0 голосов
/ 01 сентября 2010

Я не уверен, почему, но похоже, что установка функции onMetaData, так как прямой обратный вызов решил проблему. Я не думаю, что это так элегантно, но работает ..

   client = new Object();

   client.onMetaData = function (metadataObj:Object):void {

                for (var metadata:Object in metadataObj) {

                    if (metadata == "duration" ) {

                        _duration = metadataObj[metadata];

                        Debug.log('metadata _duration == ' + _duration );

                        playBackTimeText();                 
                    }

                    if (metadata == "width" ) {

                        video.width = metadataObj[metadata];
                    }

                    if (metadata == "height" ) {

                        video.height = metadataObj[metadata];
                    }

                    Debug.log(metadata + ": " + metadataObj[metadata], 0xffff00);                   
                }

            }

        client.cuepoint = onCuePoint;

        _stream.client = client;
...