FLV потоковое видео с Nginx и JW Player 5.1

FLV потоковое видео с Nginx и JW Player 5.1

debian, flash, linux, nginx, серверОднажды появилась надобность создать маленькую youtube. Точнее, используя доступные программы создать сервис позволяющий смотреть и перематывать видео. Особенно это актуально просматривая длинный видео файл.

Прочитав уйму материалов по теме остановился на JW Playerи Nginx. Все прекрасно заработало, только с перемоткой повозилсья. Есле и вы столкнулись с подобным, то надо учесть две вещи:

 

1.      flv должен содержать метаданные. Конвертируя с Adobe Video encoder эти данные не добовльяются.
2.      JWPlayerкак flashvars обезательно нужно указать provider=http

О формате FLV

Получив резкую популярность Adobe Flash, за собой приволок видео формат flv. Формат достаточно молодой, появился на свет с Flash7. То есть в 2003. году. Можно себе представить насколько пользователи не охотно в то время ставили разные плагины, в том числе и флеш. Связи с этим не совсем справедливо считать, что формат flv был знаком в широких кругах. Сейчас, - да, flv везде и по всюду.

Кроме flv стриминга существуют еще три альтернативы:

1. Скачать весь видео файл и тогда его проигрывать. Формат? – любой, так как его проигрывание будет зависеть от наличия того или иного проигрыватель на компьютере пользователя.

2. Использование контейнера - wmv, mov. При этом файл можно начинать проигрывать, не дожидаясь, окончание полной загрузки. С точки зрение разработки сайта все равно нельзя знать наверняка сможет ли видео быть воспроизведенным на клиентском компьютере.

3. Прибегнуть к использованию mediaсервера. Наличие таких решений на основе opensource, или за разумные деньги очень ограничено.

Инсталляция.

Если пользуетесь виртуальным хостингом (shared hosting) , то дальше можете не читать, так как чтобы выполнить  низе упомянутые действие требуется наличие определенных прав, с которыми админ делится не захочет ;) К счастью существует  псевдо-стриминг, где ни какие специальные права не требуются [4].

Рассмотрим пример на основе Nginx.

1. Apache2 ставим на порт 8080
2. Nginx ставим на порт 80, с которого все запросы будут перекидывать apache2 на порт 80. Подробнее тут [2].

Конфигурацыя Nginx:

server {

  listen 80;

  server_name video.mydomain.tld;

  access_log /var/log/nginx/video.access.log;

  location ~ \.flv$ {
    flv;
    root /var/www;
  }

  location / {
    root /var/www;
    index index.html index.htm;
  }

}


3. Кодируем видео в формат flv. Под Linux: ffmpeg -i "01.avi" -y -f flv -ar 44100 "movie.flv"
4. Добавляем метаданные. Это можно сделать так[5]. Или под Linux: flvtool2 -UP movie.flv
5. Скачиваем JW Player [3].
6. Добовляем код в веб страницу

<div id="flashContent"></div>

<script type="text/javascript">
  var so = new SWFObject('player.swf','flashContent','720','576','9');
  so.addParam('allowfullscreen','true');
  so.addParam('allowscriptaccess','always');
  so.addParam('bgcolor','#FFFFFF');
  so.addParam("flashvars","file=movie.flv&provider=http");
  so.write('flashContent');
</script>

Вот и все! Должно работать :)

Сделав перемотку вперед, назад, в логах nginxдолжно быть видно следующее:

"GET /movie.flv?start=27503944 HTTP/1.1" 200 1752013
"GET /movie.flv?start=88336188 HTTP/1.1" 200 13564873

Если же ничего не работает:

- если в логах рядом с movie.flvвыдает ошибку 404, проверти значение rootконфигурации nginx;
- если в плеере неработает перемотка или в логах nginx отсутствует параметр start - не созданы, или созданы неправильна метаданные.

 

[1] http://developer.longtailvideo.com/trac/wiki/Player5Formats
[2] http://kovyrin.net/2006/05/18/nginx-as-reverse-proxy/
[3] http://www.longtailvideo.com/players/jw-flv-player/
[4] http://stream.xmoov.com/
[5] http://www.buraks.com/flvmdi/

» Оцени статю с ластами

(17)

» Статьи по Теме

» Комментарии

нужна nginx защита от хотлинка
serge5448 2011-08-15 23:44
* обязательный
* не публицыруется
MQL4 PHP digg     vimeo youtube     blogs.mail.ru livejournal liveinternet vkontakte facebook twitter