![]() |
|
||||||||||
|
|||||
|
Вобщем проблема следущая... делаю флеш плеер для вопросизведения видео и перемотку его на непрогруженое место... Уже был опыт передавал через 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. |
|
|||||
|
Modus ponens
|
Попробуйте поставить больше знаков препинания, да и при чем тут опята (грибы?) - я не понял...
Стриминг это передача флешевого видео используя RTMP (или его вариант) протокол, то, что вы пытаетесь сделать, на сколько я понял, - называется буферизацией. Со стримингом имеет мало общего (первый реализован поверх UDP, а второй - HTTP). Судя по описанию синдромов, вы наверное передаете начиная с середины кадра, или не добавляете метаданные...
__________________
Hell is the possibility of sanity |
|
|||||
|
2 wvxvw
Может быть чего то и не догоняю... так потому и обратился, что бы помогли. Цитата:
однако почему же JW плеер играет... точно такую же ссылку и стриминг у него работает... я да же плагин поставил посмотреть какой запрос отправляется... точно такой же как и у меня... просто он что то там внутри с потоком делат ? или как то сам этим метаданные формирует или еще чего.... |
|
|||||
|
Modus ponens
|
ОК... интернет протоколы условно делятся на 4 уровня, низкоуровневые нас сейчас не интересуют, перейдем к транспортному уровню - это либо TCP либо UDP - первый предполагает обязательную отсылку данных обратно при получении пакета, второй - не обязательно (поэтому быстрее, но менее защищен от ошибок). Стриминг основывается на UDP протоколе.
HTTP - это протокол уровня аппликаций, т.е. это надстройка над транспортным уровнем, в данном случае, над TCP. Буфферизация флешевого видео - это HTTP, т.е. вы просто отдаете часть файла используя дополнительные текстовые заголовки который HTTP протокол предписывает посылать в таких случаях. Почему какой-то плеер может проиграть ваше видео а какой-то нет, я не знаю, возможные причины, как я уже сказал - вы отдаете файл с неправильными заголовками / недостаточными метаданными, не правильно выбиратете нужный кадр и т.п. FLV на самом деле довольно простой формат и его можно распарсить из и переделать на ходу в MovieClip и проиграть таким образом, возможно, что если плеер не может правильно определить, что ваш сервер посылает, он будет пытаться его распарсить таким образом - но я очень сильно в этом сомневаюсь т.как немного знаком с JW - и, ну его просто рекламируют много...
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 17.02.2010 в 00:55. |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 2
|
У меня аналогичная проблема.
Я разрабатываю flash сайт и потребовалось внутрь вставить видео ролик с возможностью проигрывания еще не загруженных мест. Настроил yamdi + nginx для превдо стриминга Попробовал в FlowPlayer и JW, все работает. Обычно для встраивания видео использовал FLVPlayback, но он ни как не хочет понимать разрезанные сервером flv файлы.. Как устроены FlowPlayer и JW - так и не смог разобраться, как встроить видео в flash сайт не представляю! |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 78
|
И я присоединяюсь.
Как только не пробовали уже. В FlowPlayer и JW - работает. У меня - нет. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
?start=xxxxxx
Тут xxxxxx не произвольное значение, а смещение одного из ключевых кадров. В flv должны быть внедрены метаданные. Посмотреть реализацию перемотки можно тут: http://red5.googlecode.com/svn/flash...r4/src/Main.as Нужно обратить внимание на функцию getNearestKeyframe и способы ее вызова. |
|
|||||
|
Erlyvideo
|
2wvxvw: насчёт стриминга не совсем верно. Стриминг в общем случае*— это когда сервер сам следит за тем, насколько быстро пихать в клиента данные. Он и по HTTP бывает, когда сервер отдает MPEG-TS или RTMPT.
Ну и отдача видео по UDP всё таки стремительно уходит в небытие, потому что современные кодеки совершенно нестойкие к потере хотя бы одного кадра. Что же до темы автора, то ему надо сначала заюзать flvtool2, что бы проставить все метаданные. |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 2
|
Нашел решение
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; }
и выполняем |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:44. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|