PDA

Просмотр полной версии : flv streaming with lighttpd


caste
07.03.2009, 18:21
Есть сервер lighttpd с установленым flv stream модулем.

Модуль позволяет выдавать flv видео файл с нужной секунды по параметру ’?start=’ указаный как часть запроса.

Вопрос : как из флеша воспроизводить видео с параметром? Или как решить подобную задачу?

Пробывал через stream.play(url). Не поддходит т.к он начинает воспринимать параметр как имя видео файла в url :(. Через скрипт стриминг (как в xmoov.php примерах) работает на ура-но это псевдо стриминг ж(

cleptoman
07.03.2009, 19:45
stream.play(url?start=180.5)

а вообще не все FLV одинаково плезны для этой штуки..потому как значения для переменной start выбираются из массива кейфрэймс, который прилетает в метадате.

чего то я много понаписал.)

caste
07.03.2009, 20:16
Но параметр в полном урле http://localhost/videos/21/1.flv -так и передавать ?http://localhost/videos/21/1.flv?start=180.5 -должно при наличии модуля распознать позицию и вопроизвести файл? А то у меня пишет что файл не найден ,а без параметра восспроизводит...

спасибо -покопаю метадату ...

cleptoman
07.03.2009, 20:40
насколько помню там не напрямую FLV запрашивается а через PHP скрипт, который выдирает кусок и отдает клиенту

caste
07.03.2009, 21:41
В версии модуля то на прямую -плеер http://www.longtailvideo.com/players/jw-flv-player/ как раз без скрипта работает если есть параметр в настройках что работать через модуль lighttpd сервера..Вообще согласен мистика просто ...и как у них всё прописано в том плеере...А через скрипт не проблема -работает, но я боюсь что если будут 1000 человек смотреть нагрузка будет большая на сервер ж(

Spazm
01.09.2009, 18:42
Здраствуйте. Код в flv:

if(String(_root.start_seek)=="undefined")
{
_root.start_seek=0;
}//end if

//Создаем объект NetConnection:
var netConn:NetConnection = new NetConnection();
// Активируем соединение, которое позволит проигрывать FLV файлы с HTTP и локальных адресов:
netConn.connect(null);
// Создаем объект NetStream (ради него мы создали объект NetConnection и открыли соединение):
var netStreamX:NetStream = new NetStream(netConn);
// Привязываем объект NetStream к нашему видео объекту:
my_video.attachVideo(netStreamX);
// Устанавливаем вместимость буфера - сколько секунд видео загрузится до того, как оно запустится на экране:
netStreamX.setBufferTime(5);
// Загружаем и проигрываем внешний FLV файл:
var file_path=_root.file_name+"?start="+_root.start_seek;
trace(file_path);
netStreamX.play(file_path);


//_________________________________________________________

Код html:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251" />
<title>my_html</title>
<style type="text/css">
</style>
<script type="text/javascript" src="swfobject.js"></script>
</head>
<body bgcolor="#c0c0c0" >


<div id="flashcontent1" style="position:relative;width:100%;height:600">

</div>



<script type="text/javascript">
var so = new SWFObject("flash/psevdo_1.swf", "movie", "100%", "100%", "9", "#ffffff");//Мой плеер)))
so.addParam("allowFullScreen", "true");
so.addVariable("start_seek", "1");//Стартовый параметр
so.addVariable('autostart','true');//Тоже откуда-то возможно нужно
so.addVariable("file_name", "http://flowplayer.org/video/Extremists.flv");//Беру с http://flowplayer.org
so.addVariable("streamscript", "lighttpd");//Это я вычитал с форумов всяких
so.write("flashcontent1");
</script>

</body>
</html>


Так вот когда я отсылаю с параметром start_seek=0 — все окейно работает. В моем плеере переменная start_seek прибавляется к переменной file_name и получается запрос типа http://flowplayer.org/video/Extremists.flv?start=1 и видео грузится по этому пути. Как я понял — главное что запрос идет на сервак lighttpd, а flowplayer.org должно быть именно то что нужно. и как я понял нужно передавать в GET-е переменную start. Но работает тока с start=0. Не знаю — вроде капаю в нужном направлении, но файл отказывается грузиться если start не равно 0. Мысли есть7
В строке so.addVariable("streamscript", "lighttpd"); я передаю переменную — как ее должен обработать плеер? Может в этом дело, что я никак эту переменную не обрабатываю во флеше? Спасибо за ответы.