PDA

Просмотр полной версии : универсальный плеер. Как определить аудио или видео?


iflamberg
09.06.2009, 16:13
Привет. Меня попросили сделать универсальный плеер для сайта. Т.е. чтобы в зависимости от преданных параметров проигрывал аудио/видео поток с сайта.

Проблема вот в чем. Для проигрывания видео используется NetStream. Для проигрывания аудио - Sound. Принимает плеер линк на проигрываемый файл через FlashVars. Как определить что для линка использовать - NetStream или Sound?

Snut
09.06.2009, 16:28
а вторую переменную не передать? ну это самый простой способ

iflamberg
09.06.2009, 16:31
ну передать еще одну переменную с flashvars самый очевидный способ. Но, как-то некрасиво =/

Snut
09.06.2009, 16:51
а ссылка какого вида должна быть?

iflamberg
09.06.2009, 16:58
по расширению файла неполучится определить, т.к. ссылки вида http://80.245.117.94:4234/ , т.е. на аудио или видео поток.

Вообще вот смотрю rutube. И у них даже если аудиозапись - передается ссылка на flv-файл. Например http://rutube.ru/tracks/709969.html?confirm=3136b9ee4c732a6b49e1ed8966429820&v=1fc26a9ba9cb36133d1d4edea3c5fb8b - это всем известное "не единого разрыва". А плееру передается "...&file=http%3A%2F%2Fbl.rutube.ru%2F1fc26a9ba9cb36133d1d4edea3c5fb8b.iflv..."

Snut
09.06.2009, 17:56
ну есть у меня догадка что можно по байтикам разобраться, но это так пальцем в нЁбо

kackbip
09.06.2009, 18:28
По умолчанию ловите поток с помощью Sound, если ошибка всплывает то значит там видео :)))) Это такая автоматическая оценка контента потока :))) Недокументированная.

А по байтикам было бы легко разобраться. Только ни в Sound ни в NetStream байтики недоступны на fp9

О придумал!
Можно воспользоваться классом URLStream. Считываем первые 3 байта потока и глядим что там. Как известно, заголовок flv файла начинается с FLV:
Field | Type | Comment
Signature | UI8 | Signature byte always 'F' (0x46)
Signature | UI8 | Signature byte always 'L' (0x4C)
Signature | UI8 | Signature byte always 'V' (0x56)