Просмотр полной версии : универсальный плеер. Как определить аудио или видео?
iflamberg
09.06.2009, 16:13
Привет. Меня попросили сделать универсальный плеер для сайта. Т.е. чтобы в зависимости от преданных параметров проигрывал аудио/видео поток с сайта.
Проблема вот в чем. Для проигрывания видео используется NetStream. Для проигрывания аудио - Sound. Принимает плеер линк на проигрываемый файл через FlashVars. Как определить что для линка использовать - NetStream или Sound?
а вторую переменную не передать? ну это самый простой способ
iflamberg
09.06.2009, 16:31
ну передать еще одну переменную с flashvars самый очевидный способ. Но, как-то некрасиво =/
а ссылка какого вида должна быть?
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..."
ну есть у меня догадка что можно по байтикам разобраться, но это так пальцем в нЁбо
По умолчанию ловите поток с помощью 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)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.