Можете использовать один, это ради примера написал список.
С MDN есть проблемы с тем, что она не умеет IceCandidate по протоколу TCP. Решилось с помощью TURN сервера.
Для начала поднимите 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 быстро вебсокет сервер, который будет соединять и обменивать данными между общающимися.
Самая непонятная и запутывающая статья для тех кто хочет познакомится с WebRTC. Как выше написали, для того чтобы пробиться через NAT необходимы STUN/TURN сервера. Для peer-to-peer можно обойтись только ими. Но если вы захотите сделать live трансляцию или конференцию то понадобится медиа сервер. Сейчас есть хороший открытый проект Kurento. Уже больше пол года занимаемся переездом от Flash-а в видеочате, скажу там больше подводных камней чем кажется. Браузеры до сих пор не договорились нормально о видео/аудио кодеках и самой реализацией (приемлемо FF и Chrome только работает). Стабильно работает только сочетания VP8/Opus кодеков в FF и Chrome.
P.S: как закончим проект, хочу написать статью со всеми проблемами которые столкнулись и как происходил переезд. Автору советую почитать что такое WebRTC, SDP, IceCandidate, STUN/TURN.
С MDN есть проблемы с тем, что она не умеет IceCandidate по протоколу TCP. Решилось с помощью TURN сервера.
STUN серверов полно открытых, я использую:
Далее необходим механизм обмена 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/
P.S: как закончим проект, хочу написать статью со всеми проблемами которые столкнулись и как происходил переезд. Автору советую почитать что такое WebRTC, SDP, IceCandidate, STUN/TURN.
auto n = 1024 * 1024 * 1024 * 5;
char* buf = new char[n];
std::cout << «Ooops, » << buf << "!\n";