LINUX.ORG.RU

video streaming proxy server

 


1

1

Задача реализовать потоковое видео по схеме:

  1. вебкамера через браузер транслирует поток на сервер.
  2. к серверу подключаются клиенты через браузер.
  3. вебкамер может быть много, у разных стримеров.
  4. серверов тоже может быть много, чтобы не упираться в пропускную способность сети.
  5. все это управляется через родительский сервер с сайтом на php.

Подскажите куда копать? наткнулся на нечто похожее здесь https://flashphoner.com/webrtc-server-potokovogo-video-dlya-onlajjn-t/?lang=ru какие есть еще варианты?

Ответ на: комментарий от anonymous

извольте сударь, виноват-ссс

по теме: если ОП серьезно начнешь угарать по WebRTC, то чекай вот это: https://imgur.com/a/LEwoOsE

практически любая webrtc помойка работает примерно так.

с полгода назад у меня был ресерч в плане онлайн трансляций, если нужно будет угарать и кастомизировать:

бери janus-gateway

вот на эти копипасты я потратил много человекочасов, т.к. документации хуй

создание комнаты:

set -ex

list_rooms() {
cat<<EOF
EOF
} 

room_id=1234

session_id=$(curl -X POST -d '{"janus": "create", "transaction": "ciao"}' http://localhost:8088/janus 2>/dev/null  | awk -F ' ' '/\"id\"/ {print $2}')
echo "Session id: $session_id" 

handle_id=$(curl -X POST http://localhost:8088/janus/${session_id} --data "{\"transaction\": \"ciao\", \"janus\": \"attach\", \"plugin\":\"janus.plugin.videoroom\"}" 2>/dev/null | awk -F ' ' '/\"id\"/ {print $2}') 
echo "Handle id: $handle_id" 

publisher_id=`curl -H "Content-Type: application/json" -X POST -d '{"body":{"request":"listparticipants","room":1234},"janus":"message","apisecret" : "janusrocks","transaction":"ciao"}' http://localhost:8088/janus/${session_id}/${handle_id} | jq '.plugindata.data.participants[0].id'`

curl -H "Content-Type: application/json" -X POST -d '{"body":{"request":"listparticipants","room":1234},"janus":"message","apisecret" : "janusrocks","transaction":"ciao"}' http://localhost:8088/janus/${session_id}/${handle_id} 


curl -H "Content-Type: application/json" -X POST -d '{"body":{"request":"rtp_forward","publisher_id": '${publisher_id}', "room":1234,"host":"127.0.0.1","audio_port":6000,"video_port":6002, "audiopt": 111, "videoopt": 100, "video_pt": 100, "audio_pt": 111, "secret":"adminpwd"},"janus":"message", "apisecret" : "janusrocks","transaction":"ciao"}' http://localhost:8088/janus/${session_id}/${handle_id}

#curl -H "Content-Type: application/json" -X POST -d '{"body":{"request":"rtp_forward","publisher_id": 5337077391413987, "room":1234,"host":"127.0.0.1","audio_port":7000,"video_port":7002, "audiopt": 111, "videoopt": 100, "video_pt": 100, "audio_pt": 111, "secret":"adminpwd"},"janus":"message", "apisecret" : "janusrocks","transaction":"ciao"}' http://localhost:8088/janus/${session_id}/${handle_id}

Пример SDP файла

v=0 
o=- 0 0 IN IP4 127.0.0.1 
s=RTP Video 
c=IN IP4 127.0.0.1 
t=0 0 
a=tool:libavformat 56.15.102 
m=audio 6000 RTP/AVP 111 
a=rtpmap:111 OPUS/48000/2 
m=video 6002 RTP/AVP 100 
a=rtpmap:100 H264/90000 
a=fmtp:100
packetization-mode=1

Ретрансляция в rtmp при помощи SDP файла выше

ffmpeg -analyzeduration 2M -probesize 2M -protocol_whitelist file,udp,rtp -strict -2 -i new.sdp -c:v copy -c:a aac -f flv ${URL}

если нужно просто собрать конференцию на попиздеть - бери jitsi - там все красиво из коробки работает

anonymous
()

серверов тоже может быть много, чтобы не упираться в пропускную способность сети. все это управляется через родительский сервер с сайтом на php.

ешки матрешки, только сейчас прочитал

ОП тебе лучше всего купить уже готовый сервис, рили, open-source будет неприятная половые дейтвия которая не попадают под твои критерии

Если ты обычный пососик и тебе большой босс сказал «сделай вебконфернции для нас» - лучше покупать сторонний сервис за мелкий прайс (их сейчас как грязи)

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