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

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

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

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

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

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

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

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

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

Любая помощь будет очень полезна.

1 Ответ

1 голос
/ 08 ноября 2019

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

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

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

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

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

...