Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Событие о размере видео приходит через раз (http://www.flasher.ru/forum/showthread.php?t=190522)

TanaTiX 25.12.2012 15:25

Событие о размере видео приходит через раз
 
Есть простенький плеер (Video, NetStream, NetConnection). Ему по http (а на тестах еще и с локального компа) передается ссылка на видео (.flv) и начинается воспроизведение. При этом мы "подписываемся" на колбэк:
Код AS3:

public function onMetaData(info:Object):void

Проблема в том, что при одном и том же файле (загружаемом в тестах с локального ПК) колбэк срабатывает через раз. Т.е. видео тоже, код не меняется, а в одном случае метод отрабатывает, в другом - нет. Все эти пляски для того, что бы определить продолжительность видео. С чем это может быть связано? Как корректно определить продолжительность видео? Заранее спасибо.
Как вариант - прописать продолжительность для каждого видео вручную, но т.к. таких роликов около 7 гигов, очень бы этого не хотелось.

ЗЫ. Не уверен, что тема относится непосредственно к этому разделу, пожалуй будет зависеть от предложенных решений.

XoJlToH 25.12.2012 18:11

Покажите свой код подписки на метадату. Там были какие то особенности с подпиской внутри нетсрима

TanaTiX 25.12.2012 22:30

Код AS3:

_ns.client = this;

И далее в том же классе.
Код AS3:

public function onMetaData(info:Object):void {
        trace("metadata: duration=" + info.duration);
}


Stone 26.12.2012 13:42

onMetaData не приходит если начать работать со стримом. стоп, плэй, сик вроде, уже не помню точно какие влияют, в хэлпе было.

TanaTiX 27.12.2012 15:09

Цитата:

если начать работать со стримом
Понятно, что для получения данных необходимо хоть что-то загрузить. Вопрос, почему это происходит не постоянно.

Stone 28.12.2012 11:25

не совсем так. необходимо именно дождаться прихода матаданных, и только после этого, делать хоть что то.

TanaTiX 28.12.2012 13:53

Stone, немного не понял. Если метаданные не являются отдельным файлом, т.е. вшиты в видеофайл (про NetStream-ы как таковые пока не говорим), то как получить эти данные до начала проигрывания? Не припомню такого в официальной справке. Может невнимательно читал...

Stone 28.12.2012 15:16

ну конечно первый раз нужно стартануть стрим

Код AS1/AS2:

stream.play(url);

и пока мета не пришла ничего не делать.
обычно на netStatusHandler вешают разные обработчики состояния, а они частенько приходят раньше чем мета.

kackbip 28.12.2012 15:27

Метадата обычно вшита в начало файла. Если вы берете файл с начала то первым делом вы получите метаданные. Хотя это как бы не аксиома, но так должно быть для корректного проигрывания.

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

Для того чтобы метадата во всех роликах удовлетворяли вашим условиям возможно имеет смысл прогнать их через flvtool2


Часовой пояс GMT +4, время: 12:23.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.