Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.07.2008, 20:03
Ulya вне форума Посмотреть профиль Отправить личное сообщение для Ulya Найти все сообщения от Ulya
  № 1  
Ответить с цитированием
Ulya

Регистрация: Aug 2006
Адрес: msk
Сообщений: 100
Отправить сообщение для Ulya с помощью ICQ
По умолчанию 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-заголовок перед запрашиваемым файлом.
__________________
Plant a tree B4 UR burried undr 1.

Старый 31.07.2008, 20:27
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Не, никак это не узнать, ну, разве что примерно посчитать, но точно - не возможно. Т.е. можно примерно представить сколько байтов нужно на отрисовку одного кадра, но, опять же такой параметр в SWF не передается, т.е. нужно будет его передать вместе с метадатой, например. Ну и уже просто исходя из позиции, где ткнули, считать сколько это кадров * байтов на кадр. Только если есть кью-поинты - это никак не получится принять в рассчет, т.как заранее вы никак не сможете узнать о их наличии/отсутствии.
__________________
Hell is the possibility of sanity

Старый 31.07.2008, 20:55
Ulya вне форума Посмотреть профиль Отправить личное сообщение для Ulya Найти все сообщения от Ulya
  № 3  
Ответить с цитированием
Ulya

Регистрация: Aug 2006
Адрес: msk
Сообщений: 100
Отправить сообщение для Ulya с помощью ICQ
А как же тогда реализована такая фича тут:http://www.rich-media-project.com/ph...hp-flv-player/ ?
Там есть пхп-скрипт, которому передаётся такой же параметр position=xxxxxx
Я проследила за запросами от флэшки.
Вот тут тоже кое-что пишут: http://www.flashcomguru.com/index.cf...a-PHP-take-two
Но там реализовано через NetStream кажется.

Ну ладно, пусть хоть примерно это будет считаться. Как узнать весь размер файлика и позицию. Подскажите плиз как быть если априори неизвестно есть кьюпойнты или нет.
__________________
Plant a tree B4 UR burried undr 1.

Старый 01.08.2008, 14:43
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 4  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Мне кажется стандартный FLVPlayback не подходит под эти задачи.
В этом и проблема стандартных компонентов. Они решают стандартные задачи.

Хотя, если потеребить метадату, может быть и можно будет его прикрутить.

FLVPlayback вещает событие metadata, в котором есть всякие параметры, типа:

Цитата:
audiodatarate A number that is the kilobytes per second of audio.

videodatarate A number that is the video data rate of the FLV file.
Запомнить их. Потом ловить событие перетягивания ползунка и переводить из секунд(?) в байты, используя аудиодатарэйт и видеодатарэйт...
Должно быть что-то типа такого:
bytes=seconds*(audiodatarate+videodatarate);

Старый 01.08.2008, 19:26
Ulya вне форума Посмотреть профиль Отправить личное сообщение для Ulya Найти все сообщения от Ulya
  № 5  
Ответить с цитированием
Ulya

Регистрация: Aug 2006
Адрес: msk
Сообщений: 100
Отправить сообщение для Ulya с помощью ICQ
crazyone,
а я использую компонент FLV List Gallery от AFComponents. Но он сделан всё равно на основе FLVPlayBack.
Итак, вопрос с передачей байтовой позиции решила.
Код:
player.controls_mc.content.bar_mc.widget_mc.onRelease = function() {
	//widget_mc - бегунок
	delete player.controls_mc.content.bar_mc.widget_mc.onEnterFrame;
	stopDrag();
	if (_root.metadataReceived) {
		//флаг _root.metadataReceived в 1, если получены метаданные флв
		var bmcw = player.controls_mc.mask._width-player.controls_mc.content.bar_mc._x-player.controls_mc.content.volume_mc._width;
		//рассчитываем длину bar_mc (прогресс-бар)
		var phx = player.controls_mc.content.bar_mc.widget_mc._x;//play head _x
		secpos = player.metadata.duration*phx/bmcw;//position in seconds;
		trace("Pos in Sec "+secpos);
		_root.bytepos = Math.floor(secpos*player.bytesTotal/player.metadata.duration)
		player.getVideoPlayer(player.activeVideoPlayerIndex).close();//очищаем плеер
		player.load(player.contentPath+"?start="+_root.bytepos);//запрашиваем у сервера файл с нужного нам места
	}
};

В запросах к серверу видно, что файл действительно запрашивается с нужного места, например, если прокрутить видео до середины, то грузится файл меньшего размера. В это время статус: Connecting to Media. Как только файл грузится до конца, срабатывает статус Media not found. То есть файл грузится с нужной позиции. По идее gninx должен дописывать к нему заголовок так, чтобы плеер понимал, что это flv. Но где-то проблема. У кого какие мысли?
Помогите плиз. я в видео, особенно потоковом полный нуб.
Плиз.
__________________
Plant a tree B4 UR burried undr 1.


Последний раз редактировалось Ulya; 01.08.2008 в 19:29.
Старый 01.08.2008, 20:12
Ulya вне форума Посмотреть профиль Отправить личное сообщение для Ulya Найти все сообщения от Ulya
  № 6  
Ответить с цитированием
Ulya

Регистрация: Aug 2006
Адрес: msk
Сообщений: 100
Отправить сообщение для Ulya с помощью ICQ
кажется проблема в том, что передавать нужно не сам позишн, а ближайший к нему кейфрейм.
В связи с этим еще вопрос:
Как через FLVPlayBack получить список кейфреймов.
Через событие metadata никак.
__________________
Plant a tree B4 UR burried undr 1.

Старый 01.08.2008, 22:03
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Смотря чем генерился FLV, но, как правило список кифреймов есть в метадате.
__________________
Hell is the possibility of sanity

Старый 02.08.2008, 04:07
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 8  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Цитата:
Код:
player.controls_mc.content.bar_mc.widget_mc.onRelease
Make me unsee this!

Цитата:
У кого какие мысли?
Я бы попробовал сохранить файл, который выдаст ngnix на какой-нибудь запрос и потом попытаться бы его воспроизвести.

Старый 04.08.2008, 16:40
Ulya вне форума Посмотреть профиль Отправить личное сообщение для Ulya Найти все сообщения от Ulya
  № 9  
Ответить с цитированием
Ulya

Регистрация: Aug 2006
Адрес: msk
Сообщений: 100
Отправить сообщение для Ulya с помощью ICQ
crazyone,
nginx выдает валидный файл только, если передаваемый ему параметр start является keyframe'ом. Когда я считаю приблизительно байтовую позицию плэйхэда- это естественно не ключ. кадр.=>нужно найти ближайший ключевой кадр.=>возникает вопрос, а как же получить список кадров, с помощью каких функций, событие метадата не даёт этот список увы.
wvxvw, вот всё, что дает метадата мне:
Код:
Encoded_With = Sorenson Squeeze
Encoded_By = Sorenson Squeeze
creationdate = Fri Aug 01 11:26:42 2008 
framerate = 30
audiocodecid = 2
audiodatarate = 48
videocodecid = 2
canSeekToEnd = true
videodatarate = 364
height = 278
width = 480
duration = 901.73
__________________
Plant a tree B4 UR burried undr 1.

Старый 04.08.2008, 18:30
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 10  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Мне кажется, что у вас вес одной секунды считается, как audiodatarate+videodatarate байт(килобайт?). Делите это на framerate, получаете вес одного кадра. Делаете округление байтовой позиции по этому значению и передаете скрипту округленное значение.

Если это не поможет, тогда я не знаю =)

UPD Поищите по поводу flvmdi. Этот софт позволяет добавлять flv-шкам в событие onMetaData массивы с позициями кейфреймов.
Именно так все реализовано на флешкомгуру, куда вы давали ссылку.


Последний раз редактировалось crazyone; 04.08.2008 в 18:39.
Создать новую тему Ответ Часовой пояс GMT +4, время: 22:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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