Однажды появилась надобность создать маленькую 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/



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