![]() |
byte position для FLV
Hi all,
а можно ли каким-то образом при использовании компонента FLVPlayback отслеживать байтовую позицию для бегунка. То есть как при перетаскивании бегунка отследить событие его отпускания и при этом получить его байтовую позицию в FLV файле? Пытаюсь наладить стримминг видео с помощью nginx http://sysoev.ru/nginx/docs/http/ngx...lv_module.html. Модуль ngx_http_flv_module делает специальную обработку передаваемых файлов: при передаче файла, начиная со смещения, указаного в аргументах запроса "start=XXX", добавляет FLV-заголовок перед запрашиваемым файлом. |
Не, никак это не узнать, ну, разве что примерно посчитать, но точно - не возможно. Т.е. можно примерно представить сколько байтов нужно на отрисовку одного кадра, но, опять же такой параметр в SWF не передается, т.е. нужно будет его передать вместе с метадатой, например. Ну и уже просто исходя из позиции, где ткнули, считать сколько это кадров * байтов на кадр. Только если есть кью-поинты - это никак не получится принять в рассчет, т.как заранее вы никак не сможете узнать о их наличии/отсутствии.
|
А как же тогда реализована такая фича тут:http://www.rich-media-project.com/ph...hp-flv-player/ ?
Там есть пхп-скрипт, которому передаётся такой же параметр position=xxxxxx Я проследила за запросами от флэшки. Вот тут тоже кое-что пишут: http://www.flashcomguru.com/index.cf...a-PHP-take-two Но там реализовано через NetStream кажется. Ну ладно, пусть хоть примерно это будет считаться. Как узнать весь размер файлика и позицию. Подскажите плиз как быть если априори неизвестно есть кьюпойнты или нет. |
Мне кажется стандартный FLVPlayback не подходит под эти задачи.
В этом и проблема стандартных компонентов. Они решают стандартные задачи. Хотя, если потеребить метадату, может быть и можно будет его прикрутить. FLVPlayback вещает событие metadata, в котором есть всякие параметры, типа: Цитата:
Должно быть что-то типа такого: bytes=seconds*(audiodatarate+videodatarate); |
crazyone,
а я использую компонент FLV List Gallery от AFComponents. Но он сделан всё равно на основе FLVPlayBack. Итак, вопрос с передачей байтовой позиции решила. Код:
player.controls_mc.content.bar_mc.widget_mc.onRelease = function() {В запросах к серверу видно, что файл действительно запрашивается с нужного места, например, если прокрутить видео до середины, то грузится файл меньшего размера. В это время статус: Connecting to Media. Как только файл грузится до конца, срабатывает статус Media not found. То есть файл грузится с нужной позиции. По идее gninx должен дописывать к нему заголовок так, чтобы плеер понимал, что это flv. Но где-то проблема. У кого какие мысли? Помогите плиз. я в видео, особенно потоковом полный нуб. Плиз.:umnik2::umnik2: |
кажется проблема в том, что передавать нужно не сам позишн, а ближайший к нему кейфрейм.
В связи с этим еще вопрос: Как через FLVPlayBack получить список кейфреймов. Через событие metadata никак. |
Смотря чем генерился FLV, но, как правило список кифреймов есть в метадате.
|
Цитата:
Цитата:
|
crazyone,
nginx выдает валидный файл только, если передаваемый ему параметр start является keyframe'ом. Когда я считаю приблизительно байтовую позицию плэйхэда- это естественно не ключ. кадр.=>нужно найти ближайший ключевой кадр.=>возникает вопрос, а как же получить список кадров, с помощью каких функций, событие метадата не даёт этот список увы. wvxvw, вот всё, что дает метадата мне: Код:
Encoded_With = Sorenson Squeeze |
Мне кажется, что у вас вес одной секунды считается, как audiodatarate+videodatarate байт(килобайт?). Делите это на framerate, получаете вес одного кадра. Делаете округление байтовой позиции по этому значению и передаете скрипту округленное значение.
Если это не поможет, тогда я не знаю =) UPD Поищите по поводу flvmdi. Этот софт позволяет добавлять flv-шкам в событие onMetaData массивы с позициями кейфреймов. Именно так все реализовано на флешкомгуру, куда вы давали ссылку. |
| Часовой пояс GMT +4, время: 12:18. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.