Pull to refresh

Comments 10

Или вы не владеете пониманием самых основ WebRTC уровня википедии, либо написали самую непонятную статью по WebRTC в мире — о чём это, какую задачу вы решаете? Никакой SIP не нужен для WebRTC клиент-клиент (stun/turn — нужны). Или ваша цель именно в SIP из браузера?
По идее, «Chrome», а не «Hrome», то есть, правильно будет «GC» (ну или же «ГХ» =))
Тоже не смог завести эти библиотеку. Использовали Астериск. Всё делали по мануалам и стаковерфлоувам, но стабильных звонков так и не добились. Много ошибок решилось, но звонок рвется сразу при соединении, как будто «кладется трубка». А еще ошибка ice servers… Понятия не имею что это такое. Не видать нам звонков из браузера в 2016 году
Как-то пришлось мне разрабатывать проект на angularjs в котором был чат через jabber и видео, аудио звонки. В целом вышло довольно стабильно. Я использовал StropheJS + Jingle для этого. Качество нормальное, были только проблемы между звонками Chrome => FF у них там используются разные видео кодеки, в целом работало но иногда были баги, что звонок рвется при соединении. В целом возможно сделать достаточно стабильное приложение, но для этого необходимо очень хорошо изучить принципы работы webRTC, а STUN сервер это своего рода костыль, для того чтоб пробиться за NAT. Jabber мы использовали исключительно для обмена сообщениями между клиентами, что человеку звонят, отправить ответ, так же через него передавали ссылку на видео-стрим.
Самая непонятная и запутывающая статья для тех кто хочет познакомится с WebRTC. Как выше написали, для того чтобы пробиться через NAT необходимы STUN/TURN сервера. Для peer-to-peer можно обойтись только ими. Но если вы захотите сделать live трансляцию или конференцию то понадобится медиа сервер. Сейчас есть хороший открытый проект Kurento. Уже больше пол года занимаемся переездом от Flash-а в видеочате, скажу там больше подводных камней чем кажется. Браузеры до сих пор не договорились нормально о видео/аудио кодеках и самой реализацией (приемлемо FF и Chrome только работает). Стабильно работает только сочетания VP8/Opus кодеков в FF и Chrome.

P.S: как закончим проект, хочу написать статью со всеми проблемами которые столкнулись и как происходил переезд. Автору советую почитать что такое WebRTC, SDP, IceCandidate, STUN/TURN.
За совет спасибо, статью почитаю.
Проясните до выхода статьи пару вопросов: у меня задача сделать видео чат на сайте для зарегистрированных пользователей. Я беру библиотеку SipJS, в которой реализован WebRTC на основе SIP (...full SIP signaling stack to their WebRTC applications).
Мой сайт передает браузеру страницу с сип-логинами тех, кто в онлайне.
Я с любым могу войти в видео чат. Все просто и понятно (точнее, до конца непонятно, потому что все внутри библиотеки, но работает).
А каков алгоритм без СИП? Что мне должен прислать сайт, чтобы браузер снюхался с нужным абонентом через STUN?
Какие библиотеки Вы используете?
Какие STUN?
Для начала поднимите TURN сервер.
STUN серверов полно открытых, я использую:
  • stun:stun.l.google.com:19302
  • stun:stun1.l.google.com:19302
  • stun:stun2.l.google.com:19302
  • stun:stun3.l.google.com:19302
  • stun:stun4.l.google.com:19302
  • stun:stun.services.mozilla.com

Далее необходим механизм обмена IceCandidate и SDP. Можете поднять на nodeJS быстро вебсокет сервер, который будет соединять и обменивать данными между общающимися.

Процесс создание связи:
(1) Звонящий
(2) Принимающий
1 — добавляет стрим с камеры.
1 — создает SDP (offer)
1 — устанавливает локальный SDP
1 — шлёт (2) принимающему свой локальный SDP (по вебсокетам?).
2 — устанавливает SDP звонящего
2 — создает свой SDP(answer) и устанавливает его как локальный
2 — слушает событие, при успешном соединение в нём придёт сам медиастрим.

А так, документации полно по этому поводу.
Посмотрите прекрасный пример от Googl-a
https://apprtc.appspot.com/
Спасибо за информацию.
А зачем столько STUN серверов?

Вы используете MDN. На G.Chrome Ваш софт работает?

Можете использовать один, это ради примера написал список.
С MDN есть проблемы с тем, что она не умеет IceCandidate по протоколу TCP. Решилось с помощью TURN сервера.
Sign up to leave a comment.

Articles