Как сделать потоковое видео на сайте.
1. RTMP поток. Чаще всего используется для трансляции видео с вебкамер и трансляции телевидения в реальном времени. Иногда используется и для воспроизведения видеофайлов. RTMP канал транслирует информацию со скоростью воспроизведения, поэтому даже при воспроизведении файла его нельзя скачать целиком, можно только записать трансляцию со скоростью воспроизведения.
2. Потоковое воспроизведение файла.
Обычный стандартный вариант воспроизведения видео. Файл скачивается частями (с вашего сервера или чужого) в буфер и показывается в плеере, то что скачалось.
Вот об этих двух вариантах и расскажу.
Некоторые используют встроенные в систему плееры, и вызывают их с использованием специальной команды, но если кто-то посетит ваш сайт с другой операционной системой, то не увидит уже видео, так как в другой операционке этого плеера может и не быть.
Поэтому я рекомендую использовать плееры JW FLV Media Player или TarantinovFLV.
Будет работать под любой операционной системой и в любом браузере.
Главное, чтобы в браузере был flash и javascript.
Плеер будет загружаться в браузер посетителя с вашего сайта.
JW FLV Media Player способен воспроизводить не только видео, но еще музыку и картинки.
На сайте разработчиков вы найдете всю необходимую информацию на английском, а так же разные версии проигрывателей.
JW FLV Player способен воспроизводить потоковое видео в формате FLV или MP4, а так же RTMP каналы.
FLV достаточно распространный формат для воспроизведения потокового видео в интернете, очень подходит для наших целей.
Воспроизведение видеофайлов.
Как создать FLV.
Для создания flv или MP4, вам потребуется конвертер.
В интернете можно найти большое количество конвертеров, например Total Video Converter.
Очень простой в работе конвертер, открываете любое видео в нем и выбираете в какой формат конвертировать, дальше он все сделает сам.
Если хотите, можете настроить качество конвертируемого видео в настройках.
Итак, видео сконвертировали, теперь скачивайте плеер JW FLV Media Player.
Из всех файлов нужны только player.swf и swfobject.js.
Все остальное можно выбросить.
Загружайте эти два файла и видео куда-то на свой сервер.
Теперь просто втыкаете в нужном месте на странице такой html
<script type="text/javascript" src="swfobject.js"></script>
<div id="player">Здесь можно написать что то, если вдруг не будет грузится плеер. Возможно не включен flash в браузере.</div>
<script type="text/javascript">
var so = new SWFObject('player.swf','mpl','400','250','8');
so.addParam('allowfullscreen','true');
so.addParam('flashvars','file=video.flv');
so.write('player');
</script>
Пример локального воспроизведения файла
Пример воспроизведения ролика youtube
Пример воспроизведения RTMP
Если вы все сделали правильно, то вы увидите черное окно плеера, при нажатии на воспроизведение начнет показывать видео.
Разбор этого кода.
<script type="text/javascript" src="swfobject.js"></script>
Загрузка вспомогательного класса, который упрощает использование флеш на сайте. Указывайте путь где лежит этот файл.
var so = new SWFObject('player.swf','mpl','400','250','8');
Указываем теперь этому классу где лежит плеер и задаем настройки флеш.
Краткий синтаксис класса SWFObject:
var so = new SWFObject(swf, id, width, height, version, background-color);
swf - Путь к плееру.
id - ID вашего объекта (что угодно можно указать).
width - Ширина плеера.
height - Высота плеера.
version - Требуемая версия флеш.
background-color - Цвет фона.
so.write('player');
Здесь указываем в каком месте загрузить плеер.
В конкретном примере плеер грузится между тегами
<div id="player"></div>
so.addParam('allowfullscreen','true');
Разрешить использовать полноэкранный режим.
Для выключения нужно установить false.
so.addParam('flashvars','file=video.flv');
А это вызов самого видео файла, может быть не только локальный, можно указать удаленный файл через http://.
so.addParam('flashvars','file=http://www.youtube.com/watch?v=O6ExAru7s58');
А вот так можно вызвать ролик youtube. Вместо имени файла указываете страницу youtube где размещен ролик.
so.addParam('flashvars','file=2x2.sdp&provider=rtmp&streamer=rtmp://213.21.0.16/2x2');
А вот так вызывается RTMP поток. Тут добавлены две переменные provider и streamer. О них ниже.
А сейчас об остальных настройках плеера.
Все настройки плееру передаются через so.addParam('flashvars','[...]');
Передача параметров происходит по принципу переменных в ссылках.
Например, если вам нужно чтобы при загрузке страницы видео начинало воспроизводится автоматически, нужно изменить наш пример так:
so.addParam('flashvars','file=video.flv&autostart=true');
То есть за автоматическое воспроизведение отвечает параметр autostart=true.
Параметры указываются через &.
Если в параметрах встречаются данные символы, их нужно заменять.
? > %3F
= > %3D
& > %26
Все файлы, которые можно вызывать в параметрах могут быть удаленными, то есть можно указывать полный адрес через http://
Переменные плеера JW FLV:
Название | Описание | Возможные значения |
Общие переменные | ||
image | Путь к файлу изображения, которое показывается в плеере, когда не идет показ видео(превью для видео) | |
start(0) | С какой секунды начинать воспроизведение | |
duration(0) | Максимальная продолжительность в секундах. Если не указать, воспроизводится до конца. | |
link | Ссылка. Если указать ссылку, то в панели плеера появится значек ссылки, при нажатии откроется указанная страница в браузере. | |
file | Файл для показа в плеере(музыка mp3, изображение или видео). Либо плейлист. Про плейлисты ниже. | |
provider | Указывает, какой тип данных будет обрабатываться. По умолчанию определяет тип по расширению файла, но если плеер не может опознать тип содержимого, можно указать вручную. |
video - стандартный видео файл FLV / MP4. sound - музыкальный MP3 файл. image - JPG/GIF/PNG изображение. youtube - видео из YouTube. http - FLV/MP4 видео файл, воспроизводимый в псевдопотоке. rtmp - воспроизведение RTMP потока. |
streamer |
Указывается RTMP канал для воспроизведения, например file=2x2.sdp&provider=rtmp&streamer=rtmp://213.21.0.16/2x2 указан файл, тип содержимого и адрес канала |
|
Цвета | ||
backcolor | Цвет контрольной панели, на которой находятся кнопочки управления, а так же фон плейлиста. | |
frontcolor | Цвет содержимого контрольной панели(кнопочки, тексты и т.д.), а так же цвет текстов в плейлисте | |
lightcolor | Цвет некоторых элементов, например цвет громкости звука(включенного), цвет строки, показывающей пройденное время ролика после ползунка | |
screencolor | Цвет фона дисплея плеера | |
Расположение | ||
controlbar(bottom) | Расположение панели. |
bottom-снизу over-наложено на видео и исчезает при воспроизведении none-нет панели. |
playlist(none) | Расположение плейлиста. |
bottom-снизу over-располагается на дисплее, при начале воспроизведения исчезает до остановки видео, right-справа, none-нет плейлиста. |
playlistsize(180) | Размер плейлиста. Если плейлист расположен справа, то это ширина плейлиста, если плейлист расположен снизу, тогда это высота | |
skin | Путь к скину плеера. не много скинов можно скачать здесьhttp://www.longtailvideo.com/addons/skins | |
Действие | ||
autostart(false) | Автоматическое воспроизведение после загрузки страницы |
false-нет true-да |
bufferlength(1) | Буферизация перед стартом. Количество секунд, которые нужно скачать перед тем, как начать воспроизведение | |
displayclick(play) | Действие, выполняемое при нажатии на дисплей плеера |
play-воспроизведение/пауза link-переход по ссылке указанной в параметре link fullscreen-переход в полноэкранный режим none-ничего не делать mute-выключить звук next-следующий ролик в плейлисте. |
icons (true) | Показывать в центре экрана значек воспризведения и буферизации. |
true-да false-нет |
item (0) | Номер ролика в плейлисте, который воспроизводится по умолчанию. отсчет начинается с нуля. | |
logo | Картинка-логотип jpg, png или gif. В скине по умолчанию крепится в верхний правый угол, но в разных скинах это расположение может меняться | |
mute (false) | Загрузка плеера с изначально выключенным звуком. |
false-звук включен true-звук выключен. |
quality(true) | Включает улучшеное качество воспроизведения видео при загрузке. Можно переключать правой кнопкой мыши через меню. |
true-включено false-выключено |
repeat(none) | Повтор роликов |
list-показывает поочереди ролики в плейлисте и остановится при окончании плейлиста. always-крутит все ролики в плейлисте по кругу без конца. single-повторяет один ролик по кругу. none-нет повтора |
resizing(true) | Разрешить изменять размер видео в зависимости от размеров плеера. |
true-да false-нет |
stretching(uniform) | Подгоняет размеры видео |
exactfit-не пропорционально, заполняет весь экран по ширине и высоте. uniform-пропорционально заполняет экран плеера, показывая всю картинку видео(заполняя большие стороны фоном). fill-пропорционально заполняет весь экран по минимальным сторонам, уводя часть видео за пределы экрана. none-не меняет размеры видео. |
volume (90) | уровень звука плеера при старте. от 0 до 100 | |
Внешние переменные | ||
abouttext | При нажатии правой кнопкой мыши будет виден этот тект, как владельца. Вносить сюда свой текст разрешается только при использовании коммерческой лицензии. | |
aboutlink | Ссылка которая срабатывает при нажатии на тексте abouttext. Тоже менять запрещено без коммерческой лицензии. |
Это почти все настройки, осталось несколько мелких переменных, о них не стал писать, так как не смог протестировать их.
Все переменные описаны здесь http://developer.longtailvideo.com/trac/wiki/FlashVars
Так же можно воспользоваться онлайн конструктором плеера.
Заполняя необходимые поля формы вы в онлайне создаете готовый код плеера для установки на своем сайте.
Конструктор http://www.longtailvideo.com/support/jw-player-setup-wizard
А сейчас не много о плейлисте.
Очень удобная вещь.
Можно загрузить не один ролик, а сразу несколько в пределах одного плеера.
Вот пример вывода плеера с плейлистом
so.addParam('flashvars','file=pl.xml&playlist=right');
Здесь уже в переменной file указывается не файл с видео, а xml файл плейлиста.
Пример xml файла плейлиста:
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<title>Example XSPF playlist for the JW Player</title>
<info>http://developer.longtailvideo.com/trac</info>
<tracklist>
<track>
<title>Название</title>
<creator>-----</creator>
<info>http://www.webi.ru/</info>
<annotation>Описание</annotation>
<image>1.jpg</image>
<location>m.flv</location>
</track>
<track>
<title>Название2</title>
<creator>------</creator>
<info>http://www.webi.ru/</info>
<annotation>Описание</annotation>
<image>2.jpg</image>
<location>2.flv</location>
</track>
</tracklist>
</playlist>
Полный формат плейлистов можно найти тут http://developer.longtailvideo.com/trac/wiki/FlashFormats
Этот плеер понимает много форматов xml, я взял самый понятный и простой.
В данном примере два ролика, можете пихать сюда больше.
Как видите в плейлисте все понятно без лишних комментариев.
Самое главное, кодировка файла должна быть UTF-8.
Вот и все.
Установили и настроили видео.
Вот ссылки по теме.
Скачать JW FLV Media Player с нашего сайта
Сайт разработчиков плеера. Здесь несколько вариантов плееров.
http://www.longtailvideo.com/
JW FLV Media Player. Это ссылка конкретно на описаный плеер.
http://www.longtailvideo.com/players/jw-flv-player/
Описание переменных для so.addParam('flashvars','[...]');
http://developer.longtailvideo.com/trac/wiki/FlashVars
Онлайн конструктор.
Легкий способ создать необходимые настройки
http://www.longtailvideo.com/support/jw-player-setup-wizard
Форматы поддерживаемых файлов(плейлистов, видео, аудио, изображений)
http://developer.longtailvideo.com/trac/wiki/FlashFormats
Скины
http://www.longtailvideo.com/addons/skins
Правила создания своих скинов
http://developer.longtailvideo.com/trac/wiki/SkinningThePlayer
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 1 Git для начинающих. (12.04.2013)
- 0 Лишь этот голос. Наталья Ром – Хочу говорить крaсиво! Техники речи. Техники общения (23.07.2014)
- 0 Путешественнику на заметку: Необходимые выражения на разных языках (28.11.2014)
- 0 Synology и VPN подключение удалённого компьютера. (31.05.2014)
- 0 Браузер не открывает страницы, а скайп и icq работают. Что делать? (12.05.2014)
- 0 Если на флешке пропали файлы (07.02.2014)
- 0 Ошибка при выполнении команды grunt после обновления OS X 10.9: Bus error: 10. Перестал работать grunt (07.11.2013)
- 0 Регулярные выражения в PHP (12.04.2014)
- 0 Как сделать потоковое видео на сайте. (24.10.2013) ← вы тут
- 0 Защитить сайт или определённую папку паролем с помощью .htaccess (27.05.2013)
- 0 Удаление папок subversion (.svn) из проекта в Windows (22.03.2013)
- 0 Гугл закрывает Google Reader (17.03.2013)
- 0 Сброс пароля для root в mysql установленном через Denwer в Windows (14.03.2013)
- 0 Создание нового репозитория на Github, перенос локального репозитория и обновление удалённого через командную строку (30.03.2013)
- 0 Git "command not found" после обновления OS X до Mountain Lion (20.03.2013)
- 0 Использование веток (branches) в Github при разработке и доработке кода. Как делать pull request автору репозитория. (20.03.2013)
- 0 Полезные команды для вебразработчика (20.11.2017)
- 0 Склейка URL c www, 301 редирект с WWW и без WWW. Один ли сайт? Унифицированный Root (04.09.2013)
- Как включить SSL и сделать редирект на HTTPS. На примере Opencart 2 (03.12.2017)
- Для владельцев барбершопов (01.11.2017)
- Превышение лимита CPU - снижаем нагрузку на хостинг (29.07.2016)
- Взаимодействие клиента и заказчика. Правильная организация взаимной работы (20.08.2015)
- Волков Дмитрий Николаевич (10 сентября 1924 – 17 июля 1991) деревня Чарсуль Клепиковский район Рязанской области (26.04.2015)
- Позвонили, сказали пришёл срок поверки ваших счётчиков. Надо ли мне их пускать? (22.04.2015)
- Несколько функций в body onload (08.03.2013)