Потоковое видео в реальном времени с локального IP-адреса в браузер во внешней сети с использованием websocket/webRTC с raspberry pi 3b+

У кого-нибудь есть опыт работы с веб-сокетами и webRTC с использованием серверов TURN/STUN?

Требование: отправлять видеопоток в реальном времени с локального IP-адреса в браузер во внешней сети, и мне нужна помощь в реализации через raspberry pi 3b+. Источником моей камеры является устройство Android, и с помощью сторонних приложений я могу генерировать видеопоток по локальной сети. Используя то же приложение, я могу транслировать через Youtube Live, но получаю задержку около 2 секунд в режиме сверхнизкой задержки и включенном видеорегистраторе. И я пытаюсь уменьшить задержку потока.

Q1. Предоставляет ли полуобщественный сервер TURN одноранговую связь один на один. Или любой может просто перейти по URL-адресу, просмотреть и переопределить то, что я транслирую? Предоставьте несколько списков поставщиков услуг.

Просто для информации, будет 1-2 браузера пользователей, подключенных максимум.

Q2. Нужен ли мне шлюз Janus для отправки данных webRTC/вебсокетов на сервер TURN/STUN? Так как моя малина подключена к другой сети, и я не могу выполнить переадресацию из-за ограничений оператора связи.

Q3. Нужны ли мне оба сервера STUN / TURN или мне даже нужен webRTC вместо веб-сокетов для отправки моего видеопотока через Интернет. Веб-сокетов недостаточно?

Q4. Поскольку мы не внедряем по локальной сети, нужно ли нам также устанавливать coTURN на raspberry pi?

Q5. Есть ли какое-либо приложение для Android, которое может публиковать данные с камеры на сервер websocket/werRTC с общедоступным URL-адресом ws?

Любая помощь будет действительно полезной.


person Shariq Azim    schedule 06.11.2019    source источник


Ответы (1)


Q1. Серверы TURN ретранслируют медиа. Они делают это, выделяя для каждого подключающегося узла порт ретрансляции между 49152–65535. Затем этот порт ретрансляции будет использоваться для передачи мультимедиа второму одноранговому узлу. Одноранговые узлы будут знать, какие порты ретрансляции использовать автоматически, поскольку это является частью процесса сбора льда. Возвращаясь к вашему вопросу: другие одноранговые узлы не могут писать в этот порт ретрансляции, это 1 к 1 с рукопожатиями, нет шансов, что кто-то другой перезапишет его.

Q2. Вам определенно не нужен Janus Gateway для использования TURN. TURN и STUN, вероятно, будут хорошо работать для NAT-Traversal без переадресации портов.

Q3. Вам нужен как минимум сервер TURN (но в идеале вы хотите использовать 1 сервер STUN и 1 сервер TURN). STUN будет работать в большинстве случаев, но не будет работать, если есть брандмауэры или сложные NAT, которые блокируют входящие соединения udp. TURN — это просто запасной вариант для таких случаев. Нужен WebRTC? Только для потокового видео это зависит от варианта использования. Последовательность изображений может быть передана через веб-сокеты, они прекрасно справляются с Blob. Но таким образом у вас не будет очень плавного видеопотока с высокой частотой кадров и высоким разрешением. И, конечно же, я не знаю подходящего способа передачи звука через веб-сокет.

Q4. Raspberry Pi — это Peer, который передает мультимедиа? Пирам не требуется установка локального сервера TURN, вам понадобится только 1 сервер TURN (который не должен находиться за NAT, возможно, работает на каком-то веб-сервере). Сервер TURN — это отдельный экземпляр.
РЕДАКТИРОВАТЬ
Для личного тестирования и разработки вы можете использовать https://numb.viagenie.ca/ . Я мало что знаю о коммерческих хостерах Turn Server, за исключением того, что некоторые из них существуют. Для тех, кто владеет v-сервером или корневым сервером, можно установить coTURN. , это руководство может оказаться полезным. Чтобы проверить, работает ли сервер, я также нашел этот фрагмент очень полезным.
ЗАВЕРШИТЬ РЕДАКТИРОВАНИЕ

Q5. Не существует приложения для Android, которое публикует потоки webRTC по URL-адресу ws, поскольку сообщения websocket используются webrtc только для сигнализации (то есть сообщения одноранговым узлам о своих кандидатах на хост, это IP-адреса и порты, полученные в процессе сбора льда, включая TURN и STUN комбинации IP и портов).

person nasskalte.juni    schedule 07.11.2019
comment
Спасибо, вы развеяли большинство моих сомнений. Не могли бы вы объяснить, почему нам не нужно устанавливать какой-либо сервер поворота в raspberry pi. Пожалуйста, также предложите дешевый сервер поворота с общедоступными диапазонами IP-адресов. - person Shariq Azim; 08.11.2019