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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

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

Регистрация: Aug 2004
Адрес: N. Novgorod
Сообщений: 127
Отправить сообщение для klafuda_klalafu с помощью ICQ
По умолчанию http псевдо стриминг

Вобщем проблема следущая... делаю флеш плеер для вопросизведения видео и перемотку его на непрогруженое место... Уже был опыт передавал через start=нужная_секунда и пошло поехало...
Но не тут то было.... сталкнулся с nginx. В котором есть какой-то модуль для отдачи видеофайлов.... Опять же сперва файл захватывается легко и просто
запрос- ответ играет файл http://69.10.61.34:8080/new.php?video=111111-ttv/123123 . как только мне понадобилось получить видео с какого то момента - опытным путем выяснилось что надо передавать не секунду, а байт с которого надо отдавать видео, но видое отдается то отдается, но не играется. пытаюсь просто скачать файл, замечательно файл скачивается размер меньше чем надо... не проигрывается в локальном плеере.
http://69.10.61.34:8080/new.php?vide...&start=5000000
Однако JW плеер его проигрывает как так ??? чего там в нем такого ??? копал сорцы ничего не понял толком ... каков принцип ? кто может подсказать ?
http://69.10.61.34/jwp1.html
Может быть там как то метадата во флешке конвертится и преобразуется или надо на сервере какие то манипуляции сделать что бы просто передавая start=байт все работало как часы.


Последний раз редактировалось klafuda_klalafu; 16.02.2010 в 13:56.
Старый 16.02.2010, 13:04
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

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

Старый 16.02.2010, 13:56
klafuda_klalafu вне форума Посмотреть профиль Отправить личное сообщение для klafuda_klalafu Найти все сообщения от klafuda_klalafu
  № 3  
Ответить с цитированием
klafuda_klalafu

Регистрация: Aug 2004
Адрес: N. Novgorod
Сообщений: 127
Отправить сообщение для klafuda_klalafu с помощью ICQ
2 wvxvw
Может быть чего то и не догоняю... так потому и обратился, что бы помогли.
Цитата:
Судя по описанию синдромов, вы наверное передаете начиная с середины кадра, или не добавляете метаданные...
то есть сервер мне передает неполную информацию ??? или что???
однако почему же JW плеер играет... точно такую же ссылку и стриминг у него работает... я да же плагин поставил посмотреть какой запрос отправляется... точно такой же как и у меня... просто он что то там внутри с потоком делат ? или как то сам этим метаданные формирует или еще чего....

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
ОК... интернет протоколы условно делятся на 4 уровня, низкоуровневые нас сейчас не интересуют, перейдем к транспортному уровню - это либо TCP либо UDP - первый предполагает обязательную отсылку данных обратно при получении пакета, второй - не обязательно (поэтому быстрее, но менее защищен от ошибок). Стриминг основывается на UDP протоколе.
HTTP - это протокол уровня аппликаций, т.е. это надстройка над транспортным уровнем, в данном случае, над TCP. Буфферизация флешевого видео - это HTTP, т.е. вы просто отдаете часть файла используя дополнительные текстовые заголовки который HTTP протокол предписывает посылать в таких случаях.
Почему какой-то плеер может проиграть ваше видео а какой-то нет, я не знаю, возможные причины, как я уже сказал - вы отдаете файл с неправильными заголовками / недостаточными метаданными, не правильно выбиратете нужный кадр и т.п. FLV на самом деле довольно простой формат и его можно распарсить из и переделать на ходу в MovieClip и проиграть таким образом, возможно, что если плеер не может правильно определить, что ваш сервер посылает, он будет пытаться его распарсить таким образом - но я очень сильно в этом сомневаюсь т.как немного знаком с JW - и, ну его просто рекламируют много...
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 17.02.2010 в 00:55.
Старый 26.02.2010, 11:16
art.arapov вне форума Посмотреть профиль Отправить личное сообщение для art.arapov Найти все сообщения от art.arapov
  № 5  
Ответить с цитированием
art.arapov

Регистрация: Feb 2010
Сообщений: 2
Question Помогите же с псевдо стримингом

У меня аналогичная проблема.

Я разрабатываю flash сайт и потребовалось внутрь вставить видео ролик с возможностью проигрывания еще не загруженных мест.

Настроил yamdi + nginx для превдо стриминга
Попробовал в FlowPlayer и JW, все работает.

Обычно для встраивания видео использовал FLVPlayback, но он ни как не хочет понимать разрезанные сервером flv файлы..

Как устроены FlowPlayer и JW - так и не смог разобраться, как встроить видео в flash сайт не представляю!

Старый 19.03.2010, 20:17
kyzi007 вне форума Посмотреть профиль Отправить личное сообщение для kyzi007 Найти все сообщения от kyzi007
  № 6  
Ответить с цитированием
kyzi007

Регистрация: Nov 2008
Сообщений: 78
И я присоединяюсь.
Как только не пробовали уже.
В FlowPlayer и JW - работает. У меня - нет.

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

Регистрация: Feb 2008
Сообщений: 560
?start=xxxxxx
Тут xxxxxx не произвольное значение, а смещение одного из ключевых кадров.
В flv должны быть внедрены метаданные.

Посмотреть реализацию перемотки можно тут: http://red5.googlecode.com/svn/flash...r4/src/Main.as

Нужно обратить внимание на функцию getNearestKeyframe и способы ее вызова.

Старый 22.03.2010, 10:20
maxlapshin вне форума Посмотреть профиль Отправить личное сообщение для maxlapshin Найти все сообщения от maxlapshin
  № 8  
Ответить с цитированием
maxlapshin
Erlyvideo

Регистрация: Aug 2008
Сообщений: 197
Отправить сообщение для maxlapshin с помощью ICQ
2wvxvw: насчёт стриминга не совсем верно. Стриминг в общем случае*— это когда сервер сам следит за тем, насколько быстро пихать в клиента данные. Он и по HTTP бывает, когда сервер отдает MPEG-TS или RTMPT.

Ну и отдача видео по UDP всё таки стремительно уходит в небытие, потому что современные кодеки совершенно нестойкие к потере хотя бы одного кадра.


Что же до темы автора, то ему надо сначала заюзать flvtool2, что бы проставить все метаданные.

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

Регистрация: Feb 2010
Сообщений: 2
Нашел решение

Код AS3:
customClient = new Object();
nc = new NetConnection();
nc.connect(null);
ns = new NetStream(nc);
_myVideo = new Video();
myVideo.addChild(_myVideo);
 
customClient.onMetaData = metaDataHandler;
ns.client = customClient;
ns.play("http://video.ru/video.flv");
_myVideo.attachNetStream(ns);
 
function metaDataHandler(infoObject:Object):void 
{
	var timePositions = infoObject.keyframes.times;
	var filePositions = infoObject.keyframes.filepositions;
	var width_ = infoObject.width;
	var height_ = infoObject.height;
	var totalTime_ = infoObject.duration;
}
Для перемещения по видео на X(time) позицию по времени делаем слудующее
  1. Находим ближайшее к X(time) значение в массиве timePositions
  2. Запоминаем индекс элемента этого значения в массиве timePositions
  3. Узнаем значение Y по индексу из массива filePositions - это размер в байтах того места которое ближе всего к X(time)

и выполняем
Код AS3:
ns.play("http://video.ru/video.flv?start=YYYYY");

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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