LINUX.ORG.RU

Потоковое видео из локалки в интернет через промежуточный сервер

 , ,


0

0

Есть ip-камера, отдающая поток в локальной сети по http. VLC с компьютера из локалки ее поток кушает, проблем нет.

Хочу перебросить поток в открытый интернет через vps. Пробрасывать на роутере порты так, чтобы vlc с сервера брал поток с камеры и перераздавал в веб, пока не хочу. Хочу, чтобы первый vlc из локалки брал поток с камеры, передавал его второму vlc на vps, а тот уже раздавал его на веб.

Хочу, но не вижу, можно ли так сделать. Активный режим отдачи потока (когда передающий сам подключается к медиасерверу, а не ждет запроса), если я правильно понял, есть в связке vlc+wowza http://www.jpsaman.org/node/28, с которым не хочу связываться, пока есть надежда на vlc или что-то другое непроприетарное.

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

стоило задать вопрос и сразу все получилось (по крайней мере, похоже на то) - как мне хочется делается через udp или rtp.

На отдающей машине нужно создать поток «rtp/mpeg transport stream» и указать адрес принимающей машины - типа: адрес=192.168.1.2 (если все получится, это будет интернет-адрес ретранслируещего сервера) порт=5004 (по умолчанию) имя потока=что угодно

на принимающей - открыть поток rtp://@:5004 что бы это ни значило

bender ★★★★★
() автор топика
Ответ на: комментарий от ValdikSS

да, я заметил. Вообще камера начинает забивать весь вайфай даже до выхода в интернет, через прямой провод к роутеру относительно ок.

bender ★★★★★
() автор топика

В общем, пацаны, не пользуйтесь VLC для стриминга дальше локалки.

Я сделал локальный ретранслятор->сервер через rtp:

cvlc http://admin:xxx@192.168.1.10/video.cgi?resolution=VGA --sout='#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=yyyy.zz,port=5004,mux=ts,sap,name=m1}' --sout-keep --extraintf=logger --verbose=2

от сервера в публику через http (можно аналогично раздавать через rtsp):

cvlc rtp://@:5004 --sout '#http{mux=ts,dst=:8081/robotled.mp4}' --sout-keep  --extraintf=logger --verbose=2

потом на клиенте (можно на многих клиентах):

vlc http://yyyy.zz:8081/robotled.mp4

Vlc поток смотрит, но лаг - 4 секунды. При этом перекодировку в Webm из Vlc сам этот Vlc нифига не ест. Встроить в html этот поток не получилось (флеш не нужен), тег video для потокового видео не готов.

Сделал по этой инструкции: http://phoboslab.org/log/2013/09/html5-live-video-streaming-via-websockets

Локальный ретранслятор через ffmpeg:

ffmpeg -f mjpeg -i http://admin:xxx@192.168.1.10/video.cgi?resolution=640x480 -f mpeg1video http://yyyy.zz:8082/robotled/640/480/

на сервере его уже принимает сервачок на node.js и перенаправляет в веб-сокет, который раздаёт поток в html-странички (см по ссылке). Всё работает, задержка доля секунды.

bender ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.