【问题标题】:where exactly the iceCandidate generate in AppRtcDemo?在 AppRtcDemo 中,iceCandidate 究竟在哪里生成?
【发布时间】:2014-11-11 10:40:47
【问题描述】:

我正在开发 webrtc Peer to Peer Calling 并成功运行 WEBRTC 站点上提供的 AppRTCDemo。我已经浏览了代码并坚持了几点:

1 : 当我输入 URL 时,它会访问服务器并得到类似 的响应:

response return from server{"meta_viewport":"","pc_constraints":"{\"optional\": [{\"googImprovedWifiBwe\": true}]}","opusfec":"true","include_vr_js":"","vsbr":"","audio_receive_codec":"opus\/48000","arbr":"","vrbr":"","vsibr":"","token":"AHRlWroqCeuFFBWs4dLJRahxtwho2ldeH_94M_ZipRkK7aIH3nAiSFfScjb_Opz2LwC9xVeWeQrJkRWQAeTsK5sxdJEPoC3jP8uQXkE23QnSANqoBwsHOM4","initiator":1,"ssr":"","room_key":"95505311","pc_config":"{\"iceServers\": [{\"urls\": \"stun:stun.l.google.com:19302\"}]}","stereo":"false","audio_send_codec":"","turn_url":"https:\/\/computeengineondemand.appspot.com\/turn?username=77294535&key=4080218913","me":"77294535","room_link":"https:\/\/apprtc.appspot.com\/?r=95505311&t=json","error_messages":[],"offer_constraints":"{\"optional\": [], \"mandatory\": {}}","asbr":"","media_constraints":"{\"audio\": true, \"video\": true}"}

在这里,我只想知道他们在哪里创建 iceServer ?在他们的服务器上或者他们的 channel.html 文件中是否有任何代码。

有没有办法在没有服务器的应用程序上生成iceServer?还是 IceServer 是我们从服务器发送的 stun/turn URL?

我对 Channel.html 也有一些疑问:

channel.html 文件如何帮助这个演示运行?我也经历过这个,它正在调用 onOpen() 并且正在调用 GAECLIENT 类方法。

谢谢,

【问题讨论】:

  • “创建iceServer”是什么意思?你是在问这个例子使用了什么 Ice Servers 吗?你是在问候选人是如何产生的吗? “生成iceServer”是什么意思?
  • 是的,候选人是如何创建的?

标签: webrtc server


【解决方案1】:

在构造时,将使用哪个ice server 传递给RTCPeerConnection 构造函数(对于apprtc 示例,该对象称为pc)。您可以通过查看 pcConfig 对象来专门查看服务器。

一旦连接被创建(在这个例子中直到调用开始才完成),localDescription(一个RTCSessionDescription对象)被设置。一旦设置好,WebRTC api 将开始自动收集 IceCandidates,以针对在创建对等连接时首次引入的 ice 服务器。一旦创建了一个新的候选者,onicecandidate 事件就会被触发(如果您在 pc 对象创建后查看该回调,则可以看到用于传输候选者的函数)。

所以一般步骤如下:

  1. 在创建 RTCPPeerConnection 对象时设置要收集候选人的 iceServers
  2. 将 localDescription 设置为您创建的本地 RTCSessionDescription 对象(通常通过您在 peerconnection 的 createOffercreateAnswer 函数中设置的成功回调创建)。
  3. 它将开始针对您在构建对等连接时设置的服务器自动收集候选人,并且每个候选人都会触发 onicecandidate 事件。

现在,专门针对 apprtc 演示页面,它使用了一个开放的 stun 服务器 stun:stun.l.google.com:19302 和一组封闭的轮流服务器(托管在 Google 的云上),这些服务器具有在页面加载时收集的动态凭据。

【讨论】:

  • 谢谢本杰明,你能不能也帮我解决一下 WEBRTC android 应用程序流程。我已经阅读了很多文章,但没有得到正确的建议。 RTCPPeerConnection API 仅适用于 web,在 android 中我们有 PeerConnection 和 PeerConnectionFactory。我的问题是,如果我从 android 应用程序开始,服务器究竟如何帮助我,例如调用 URL,例如apprtc.appspot.com/?r=09021962 然后我应该从服务器得到什么响应以及我如何连接 call.vv
  • 这是一个完全不同的问题,如果被问到这样的话会对其他人有益。但是,通常,您应该期望得到完全相同类型的响应并相应地处理它们(尽管如果您使用的是本机 API,代码会有所不同)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2012-06-29
  • 2017-08-14
  • 2018-07-14
  • 1970-01-01
相关资源
最近更新 更多