Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Когда узнавать размеры видео у NetStream? (http://www.flasher.ru/forum/showthread.php?t=149850)

Ruzzz 01.02.2011 20:28

Когда узнавать размеры видео у 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 нулевые.

Подскажите как быть?

wvxvw 01.02.2011 22:04

Когда fps будет, тогда точно и размеры будут :)
А вообще... по-чесному - никак (кроме того, это не статическая величина, она может меняться в каждом кадре). А свойства, так они геттеры и показывают чесно то, что извесно в данный момент. Технически, вы бы могли загружать видео самостоятельно, парсить его (до размеров добраться в принципе не сложно), и потом скармливать его NetStream'у. Другой ворпос - на скролько это важно / критично, чтобы проводить практически исследовательскую работу. Если за это не платят - просто по таймеру, часто на сколько совесть позволяет :)

avilov 01.02.2011 22:30

wvxvw fps - это количество кадров в секунду ? или что вы имели введу ?

wvxvw 01.02.2011 23:10

http://help.adobe.com/en_US/FlashPla...tml#currentFPS
Но вообще это сарказм такой был... это свойство так же неизвесно, как и размер видео.

Ruzzz 02.02.2011 09:49

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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.