Отправка WebRTC MediaStream через Websocket (RTP через HTTP / Websocket)
WebRTC, среди прочего, предназначен для браузера в реальном времени для связи с браузером, но в моем случае он будет использоваться для браузера для серверной аудиосвязи.
из информации, которую я собрал, MediaStream передается с помощью RTP через UDP.
Это потребует, по крайней мере, двух дополнительных портов, кроме протокола, используемого для сигнализации, чего я хотел бы избежать.
в WebRTC есть ли возможность использовать RTP более Websocket вместо RTP через UDP, так что мне нужно использовать только порт 80 или 443?
2 ответов
нет, это невозможно с помощью WebRTC.
WebRTC был построен, чтобы дать браузерам три основные функции:
- возможность доступа к камерам и микрофонам устройства;
- возможность установить сеансы SRTP для отправки / получения аудио и видео;
- возможность устанавливать одноранговые каналы данных между браузерами;
эти функции доступны для веб-приложений через определенный Javascript API здесь. Для доступа к медиа-устройствам можно использовать getUserMedia можно() и вы получите MediaStream для присоединения к HTML5 аудио и видео тегов. Чтобы создать сеанс SRTP, вам нужно создать одноранговое соединение и управлять потоками, чтобы использовать.
вы должны запросить у браузера предложение media SDP и отправить его другой стороне, используя любой протокол (например, websockets). Когда другая сторона получает ваше предложение SDP, она может ввести его в браузер, запросите ответ SDP и отправьте его обратно. Как только оба браузера имеют предложения, они начинают переговоры SRTP, используя ICE.
таким образом, у вас не будет доступа к пакетам RTP для отправки их через websockets.
на самом деле, план заключается в поддержке RTCP-mux RFC 5761 и некоторая форма расслоения (все еще обсуждается) для слияния все потоков на один порт. Однако порт будет выбран ICE / STUN. При необходимости он также будет использовать TURN и в конечном итоге поддерживать TURN-TCP, который может работать через порт 80, я считаю. Однако качество пострадает.