![]() |
Когда узнавать размеры видео у NetStream?
По какому событию можно точно узнать размеры (videoWidth и videoHeight) у Video если для загрузки используется NetStream? Есть ли решение для любого типа видео? Есть ли вообще решение на все случаи? :)
Заметил что размеры точно известны при NetStream.Play.Flush и NetStream.Buffer.Full (не всегда). Как я понимаю еще и при onMetaData, но мета данные не всегда есть. NetStream.Buffer.Full также иногда отсутствует либо же размеры еще не установлены. Корректно ли вообще использовать для этого самые первые NetStream.Play.Flush и NetStream.Buffer.Full? Видел еще решение в котором используется setTimeout, вроде как после NetStream.Play.Start, где идет рекурсивный вызов до тех пор пока videoWidth и videoHeight нулевые. Подскажите как быть? |
Когда fps будет, тогда точно и размеры будут :)
А вообще... по-чесному - никак (кроме того, это не статическая величина, она может меняться в каждом кадре). А свойства, так они геттеры и показывают чесно то, что извесно в данный момент. Технически, вы бы могли загружать видео самостоятельно, парсить его (до размеров добраться в принципе не сложно), и потом скармливать его NetStream'у. Другой ворпос - на скролько это важно / критично, чтобы проводить практически исследовательскую работу. Если за это не платят - просто по таймеру, часто на сколько совесть позволяет :) |
wvxvw fps - это количество кадров в секунду ? или что вы имели введу ?
|
http://help.adobe.com/en_US/FlashPla...tml#currentFPS
Но вообще это сарказм такой был... это свойство так же неизвесно, как и размер видео. |
wvxvw, ну может быть и так. Но хотя бы должно было быть событие, когда загрузился заголовок и декодер смог получить информацию о медиа файле. И я говорю не о метаданных. Здесь же получается, что даже при первом NetStream.Buffer.Full у нас иногда могут быть еще не готовы данные, получаемые через эти геттеры/сеттеры. Хотя заполнение буфера предполагает, что заголовок медиа файла точно загружен.
Можно ли с уверенностью сказать что событие NetStream.Play.Start будет всегда? Пока сделал так: - По NetStream.Play.Flush/NetStream.Buffer.Full/onMetaData вызываю функцию в которой проверяю через флажок был ли я уже здесь и если да, то выход; - Далее - нулевые ли размеры, если да то сюда же по setTimeout; - Иначе считаю что идет инициализация в начале проигрывания. В конце функции выставляю упомянутый выше флаг, который сбрасываю при NetStream.Play.Stop. Здесь правда беспокоит этот setTimeout, вдруг произойдет ошибка и мы так и не получим размеры видео :) |
| Часовой пояс GMT +4, время: 12:21. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.