Я работаю над упаковкой c ++ lib WebRTC с помощью jni и использую его на java-сервере.
Мой рабочий репозиторий https://github.com/BeiKeJieDeLiuLangMao/WebRTC, C ++ код находится в / CPP / SRC
Я создаю коды PeerConnection следующим образом:
PeerConnection *CreatePeerConnection(PeerConnectionObserver *peerConnectionObserver) {
webrtc::PeerConnectionInterface::RTCConfiguration configuration;
webrtc::PeerConnectionInterface::IceServer ice_server;
ice_server.uri = "stun:stun.l.google.com:19302";
configuration.servers.push_back(ice_server);
std::unique_ptr<cricket::PortAllocator> port_allocator(new cricket::BasicPortAllocator(new rtc::BasicNetworkManager()));
port_allocator->SetPortRange(60000, 60001);
return new PeerConnection(peer_connection_factory->
CreatePeerConnection(configuration, std::move(port_allocator), nullptr, peerConnectionObserver), peerConnectionObserver);
}
Я нахожу, что порты udp, используемые peerConnection, не будут освобождены после того, как я закрою peerConnection, и каждый порт может быть повторно использован один раз, после того, как они не являются кандидатами в лед.
Кстати я закрываю peerConnection по
WebRTC :: PeerConnectionInterface :: Закрыть
Задача ещё не решена.
Других решений пока нет …