Итак, появилось у меня желание показать какое-либо видео всем друзьям. Или провести живую презентацию. Как это сделать с минимумом затрат? Ответ - LiveStreaming. Тут я расскажу, как ее настроить с минимумом телодвижений.
Сначала схема. В идеале:
Камера -> Поток -> СтримСервер -> Веб-сервер -> Браузер
На данный момент самое простое решение - реализовать на базе флеша. И если с камерой вопросов особо нету, то возникает вопрос в связке Поток -> СтримСервер.
Самый популярный на данный момент OpenSource СтримСервер - это
Red5. Истинно мультиплатформенный, написан на Java. Из минусов - его сложно настраивать неспециалисту в Флеш-технологиях. В идеале он требует знаний Java и Flex/ActionScript/etc
Посему для меня, простого юзверя, он подходил мало. На просторах интернета был найден еще один СтримСервер -
ErlyVideo. Написан на Эрланге, также мультиплатформенный (правда на Windows мне так и не удалось его запустить). Написан он нашим соотечественником Максимом Лапшиным. Распостраняется под лицензией MIT.
Далее я опишу процесс установки и настройки.
1. Перед установкой следует убедиться, что у системы есть
FQDN (формата something.example.com) адрес. Проверить это можно командой
hostname
Если нет, то прописать желаемый адрес в
/etc/hostnamesomething.example.com
и
/etc/hosts127.0.0.1 localhost
127.0.1.1 something.example.com
Возможно, стоит произвести перезагрузку.
2. Ставил я ее из репозитария, как было предложено на
страничке. В репозитарии находятся пакеты (по крайней мере, на момент написания)
только для х64. Поэтому для x32 - добро пожаловать в установку из
исходников.
Если п.1 был корректно выполнен, установка пройдет как по маслу.
3. Все, сервер установлен. Проверить его работоспособность можно на localhost:8082
4. Теперь о вещании. На
этой страничке все подробно расписано, но я повторюсь.
4.1 Настраиваем VLC на любой системе. Используюя Wizard создаем стрим формата HTTP на адрес 0.0.0.0:8080 (для примера),
обязательно инкапсуляция MPEG-TS. Можно использовать встроенный h.264 кодировщик для кодирования "на лету". Например, так:
vlc -v videofile.avi --sout #transcode{vcodec=h264,vb=500,acodec=mp4a,ab=64,channels=1}:std{access=http,mux=ts,dst=0.0.0.0:8080}
4.2 Редактируем файл
/etc/erlyvideo/erlmedia.conf для привода его к виду
{rtmp_port, 1935}.
{rtsp_port, 8081}.
{http_port, 8082}.
{vhosts, [
{default, [
{hostname, ["localhost"]},
{modules, [trusted_login, apps_push, apps_streaming, apps_recording, apps_shared_objects]},
{secret_key, "123"},
{access_log, {"/var/log/erlyvideo/", "access", {size, 1000000}, 10, "log", info}},
{error_log, {"/var/log/erlyvideo/", "error", {size, 1000000}, 10, "log", info}},
{host, "rtmp://localhost"},
{file_dir, "/var/lib/erlyvideo/movies"},
{wwwroot, "/var/lib/erlyvideo/wwwroot"},
{mpegts, [
{"stream/vlc.ts", "http://IP-адрес машины с VLC:8080/"}
]}
]},
{production, [
{hostname, ["production.local"]},
{modules, [trusted_login, apps_push, apps_streaming, apps_recording, apps_rtmp, apps_shared_objects]},
{access_log, {"log", "production-access", {size, 1000000}, 10, "log", info}},
{error_log, {"log", "production-error", {size, 1000000}, 10, "log", info}},
{secret_key, "<какой-то ключ>"},
{host, "rtmp://localhost"},
{file_dir, "/tmp"}
]}
]}.
Тут надо перезапустить сервер, но в связи с некими техническими особенностями реализации перезапуск лучше делать перезагрузкой. Так проще.
4.3 На машине с erlyvideo или любой другой идем браузером по адресу
http://<IP-адрес стримсервера>/flowplayer/index.html. В появившемся окне адреса вбиваем
rtmp://<IP-адрес стримсервера>, в окне Path -
stream/vlc.ts.
4.4 Нажимаем Play
5



6 PROFIT!