我正在做一个 iOS 原生 WebRTC 实现,并且我正在尝试与 Wowza 流引擎进行对等连接。
我已经构建了自己的实现,交换SDP报价/答案,没有错误,但交换在冰状态检查中停止。
这也可以按预期从 Chrome 通过 WebRTC 传输到 Wowza 引擎,因此问题似乎并不存在于此。
我收到日志错误
[019:110] [51467] (stunport.cc:282): Port[801a400:0:1:0:local:Net[en2:169.254.0.x/16:Wifi:id=1]]: UDP send of 100 bytes failed with error 65
[009:190] [52483] (port.cc:1731): Conn[7058e00:0:Net[en2:169.254.0.x/16:Wifi:id=3]:K1VeXnEm:1:0:local:udp:169.254.31.x:63068->u76s55ya:1:50:local:udp:52.7.176.x:6970|C--W|-|0|0|218992623103|-]: Sent STUN ping, id=66706566354b77567a55706a, use_candidate=0, nomination=0
[009:241] [52483] (port.cc:1731): Conn[503dc00:0:Net[pdp_ip0:10.233.207.x/32:Cellular:id=8]:Usd6n9/m:1:0:local:udp:10.233.207.x:61703->u76s55ya:1:50:local:udp:52.7.176.x:6970|C--W|-|0|0|218992229887|-]: Sent STUN ping, id=6431755a4674675155333050, use_candidate=0, nomination=0
[009:292] [52483] (port.cc:1731): Conn[7060e00:0:Net[en0:192.168.0.x/24:Wifi:id=1]:s9SLzrT3:1:0:local:udp:192.168.0.x:53334->u76s55ya:1:50:local:udp:52.7.176.x:6970|C--I|-|0|0|218992754175|-]: Sent STUN ping, id=496e57507237574d52324b50, use_candidate=0, nomination=0
任何帮助都会很棒!
编辑: 更详细的流程。
我正在尝试在 iOS 上的 Wowza Streaming Engine 实例和 WebRTC 之间创建对等连接。连接只是发布,没有接收任何流。
我的步骤如下
最终状态始终是 RTCIceConnectionStateChecking 然后失败。
您需要交换(滴流)ICE候选人,或者在交换SDP要约/答案之前等待几秒钟,以便当地ICE代理有时间用候选人填充要约/答案(可通过获取本地描述来获取)。
也许有人在 iOS 上也会遇到这个问题。我也想知道如何让trickle工作,因为在我的情况下,它似乎甚至无法在iOS到iOS之间工作。但有可能的是,作为当前的呼叫者,您的连接会转到
checking
再次发送报价。在第二个offer中,您也会找到所有候选人。因此,当您发送所有候选人和那些没有在第二个offer上连接的候选人时,这可以让同行们进行连接。
尝试将您立即生成的报价与转到
checking
后生成的报价进行比较,看看有何不同。
func webRTCClient(_ client: WebRTCClient, didChangeConnectionState
state: RTCIceConnectionState)
如果您接到州“正在检查”电话:-
-(void)offerForConstraints:(RTCMediaConstraints *)constraints
completionHandler:(nullable void (^)(RTCSessionDescription *_Nullable sdp,
NSError *_Nullable error))completionHandler;
对于遇到 ICE 连接状态卡在“正在检查”(RTCIceConnectionStateChecking)问题的人: