Я работаю над собственным приложением для Android WebRtc. Я также компилирую io.pristine lib. Я могу устанавливать звонки между двумя устройствами, только если они оба подключены к Wi-Fi. В случае, если одно из устройств подключено к сотовой сети, я не могу установить связь. Я читал любой возможный форум, и похоже, что мне нужен сервер TURN. У меня уже есть собственный сервер TURN, но я не понимаю, как я могу заставить приложение использовать этот сервер. Любая помощь приветствуется. Спасибо!!
Добавить сервер TURN в android webRtc native
comment
не могли бы вы подсказать мне, как собрать io.pristine lib.
- person M.Hefny   schedule 17.08.2017
comment
Строго говоря, достаточно просто STUN-сервера, но TURN также предоставит запасной вариант, если ваши клиенты не могут установить одноранговое соединение. Существуют бесплатные общедоступные серверы STUN, например stun.l.google.com:19302.
- person jamix   schedule 03.01.2018
Ответы (2)
Вам необходимо установить сервер TURN при создании PeerConnection.
Это будет примерно так:
// Set ICE servers
List<PeerConnection.IceServer> iceServers = new ArrayList<>();
iceServers.add(new org.webrtc.PeerConnection.IceServer("stun:xxx.xxx.xxx.xxx"));
iceServers.add(new org.webrtc.PeerConnection.IceServer("turn:xxx.xxx.xxx.xxx:3478", "username", "credential"));
// Create peer connection
final PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
PeerConnectionFactory factory = new PeerConnectionFactory(new PeerConnectionFactory.Options());
MediaConstraints constraints = new MediaConstraints();
PeerConnection peerConnection = factory.createPeerConnection(iceServers, constraints, new YourPeerConnectionObserver());
Я не запускал этот код, но вы должны понять.
person
Mikko
schedule
03.08.2017
просто добавьте скобку в конце 2-й и 3-й строки.
- person Uriel Frankel; 24.12.2017
Привет, @Mikko, мои серверы ICE выглядят так: stun: URL, turn: URL: 433? Transport = tcp, turn: URL: 5349? Transport = tcp Но я вижу только typ host и typ srflx Ice Candidates в сигнальном канале. Я могу установить вызов, когда устройства подключены к той же точке доступа, но получает onIceConnectionChange: state = FAILED, когда одно из них использует сотовую сеть
- person Dmytro Batyuk; 22.10.2018
WebRTC отказался от старого API для создания серверов ICE. (Ответ, использующий старый API)
Для создания ICE-сервера вам необходимо использовать шаблон сборщика IceServer.
PeerConnection.IceServer stun = PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer();
PeerConnection.IceServer turn = PeerConnection.IceServer.builder("turn:numb.viagenie.ca").setUsername("[email protected]").setPassword("muazkh").createIceServer();
person
emin deniz
schedule
24.06.2019