【问题标题】:WebRTC - ApprtcDemo with local server does not work with Android native to PC browserWebRTC - 本地服务器的 ApprtcDemo 不适用于 PC 浏览器原生的 Android
【发布时间】:2014-05-30 07:26:09
【问题描述】:

我从 Android 到桌面的 ApprtcDemo 无法正常工作,我已经关注了所有 StackOVerflow 链接和 Google 讨论链接,但它们都没有使它工作,每个人都声称本地设置对他们有用,但做同样的建议没有用。

所以请在这里你可以找到完整的源代码其他人是如何做的,我也是这样做的,但当 Android 设备应用程序启动时,我仍然只能看到 selfview 并且它连接到 Google Apps Engine,但它永远不会连接到房间以获取音频/视频会议。

您能否提出建议和建议,以便我们可以在这里就这个问题共同做出可靠的回答?我花了 3 个月的时间,我还不能让它工作。

第 1 步:转到 https://code.google.com/p/test-apprtc-demo/source/browse/

第 2 步:文件夹 apprtc = javascript、python、webrtc、google 应用引擎 完整的代码文件夹android包含所有android的源代码 应用程序演示

第 3 步:请检查我修改过的文件

一) https://code.google.com/p/test-apprtc-demo/source/browse/android/assets/channel.html

在这里我嵌入了其他人对此感到困惑的 javascript

https://code.google.com/p/test-apprtc-demo/source/browse/apprtc/index.html

这里我用硬编码的 turnserver 详细信息更改了 pcConfig 变量

b) https://code.google.com/p/test-apprtc-demo/source/browse/android/src/org/appspot/apprtc/AppRTCClient.java

这里我修改了 private PeerConnection.IceServer requestTurnServer(String url) private LinkedList iceServersFromPCConfigJSON( 字符串 pcConfig)

c) https://code.google.com/p/test-apprtc-demo/source/browse/android/src/org/appspot/apprtc/AppRTCDemoActivity.java

这里我已经修改了 roomInput.setText("http://notappspot.com.placeit.toyour.localhost/?r=");

d) https://code.google.com/p/test-apprtc-demo/source/browse/android/src/org/appspot/apprtc/GAEChannelClient.java

这里我什么都没修改 webView.loadUrl("file:///android_asset/channel.html"); //

第 4 步:现在 Apprtcdemo 已构建/发布并在我的 Android 中运行 电话,同时我在我的 WebRTC 服务器中连接 谷歌浏览器最新版本

第 5 步:当 Android 和 Google Chrome 尝试连接时,没有任何反应 谷歌浏览器显示“等待某人加入....”

在 Android 上,我有一个绿屏和我自己的相机视图 右上角。

请有人建议。这样我就可以建立这个互连,我在这方面失去了 3 个月的时间。

编辑:

第 1 步:启动本地服务器发送信号,让 Mobile 和 Google Chrome 握手:

$ python dev_appserver.py --host 0.0.0.0 --port 9999 /var/tmp/webrtc-read-only/samples/js/apprtc
WARNING  2014-05-30 08:07:49,416 api_server.py:378] Could not initialize images API; you are likely missing the Python "PIL" module.
WARNING  2014-05-30 08:07:49,420 simple_search_stub.py:1072] Could not read search indexes from /var/folders/h3/jgrrj7fd35vf0v77xjbhryph0000gn/T/appengine.apprtc.sun/search_indexes
INFO     2014-05-30 08:07:49,424 api_server.py:171] Starting API server at: http://localhost:52919
INFO     2014-05-30 08:07:49,427 dispatcher.py:182] Starting module "default" running at: http://0.0.0.0:9999
INFO     2014-05-30 08:07:49,434 admin_server.py:117] Starting admin server at: http://localhost:8000

第 2 步:启动 PC 谷歌浏览器以连接服务器

>>

INFO     2014-05-30 08:09:34,059 apprtc.py:147] Applying media constraints: {'video': True, 'audio': True}
INFO     2014-05-30 08:09:34,070 apprtc.py:473] User 24910306 added to room 12344
INFO     2014-05-30 08:09:34,070 apprtc.py:474] Room 12344 has state [24910306-False]
INFO     2014-05-30 08:09:34,075 module.py:639] default: "GET /?r=12344 HTTP/1.1" 200 1646
INFO     2014-05-30 08:09:34,123 module.py:639] default: "GET /js/adapter.js HTTP/1.1" 304 -
INFO     2014-05-30 08:09:34,123 module.py:639] default: "GET /css/main.css HTTP/1.1" 304 -
INFO     2014-05-30 08:09:34,124 module.py:639] default: "GET /js/main.js HTTP/1.1" 304 -
INFO     2014-05-30 08:09:34,289 apprtc.py:268] User 24910306 connected to room 12344
INFO     2014-05-30 08:09:34,290 apprtc.py:269] Room 12344 has state [24910306-True]
INFO     2014-05-30 08:09:34,366 module.py:639] default: "POST /_ah/channel/connected/ HTTP/1.1" 200 -
INFO     2014-05-30 08:09:34,379 module.py:639] default: "GET /favicon.ico HTTP/1.1" 404 154

当时谷歌chrome浏览器日志:

This appears to be Chrome
Initializing; room=12344.
Opening channel.
Requested access to local media with mediaConstraints:
  '{"video":true,"audio":true}'
Channel opened.
User has granted access to local media.

第 3 步:打开 Android 应用程序

>>

INFO     2014-05-30 08:11:54,693 apprtc.py:147] Applying media constraints: {'video': True, 'audio': True}
INFO     2014-05-30 08:11:54,693 apprtc.py:473] User 28334488 added to room 12344
INFO     2014-05-30 08:11:54,693 apprtc.py:474] Room 12344 has state [24910306-True, 28334488-False]
INFO     2014-05-30 08:11:54,698 module.py:639] default: "GET /?r=12344 HTTP/1.1" 200 1652

第 4 步:没有任何反应

现在什么都没有发生......请看移动和桌面屏幕截图,两者都没有做任何事情,就像它在等待什么......

【问题讨论】:

  • 如果您首先验证这是否适用于 2 个浏览器和 2 个手机,该怎么办?如果你在所有正在执行的函数中添加一些日志记录(这样你就可以准确地看到出了什么问题,因为我希望代码没有做某事,但我不知道哪一部分)。
  • 例如,当查看浏览器端 javascript code 时,我看到它记录了一大堆内容。如果你可以在这里复制粘贴会更容易。
  • 不,我想要它生成的浏览器端日志。这样我们就可以看到在会话的建立过程中是否有什么遗漏。如果您也有可能派上用场的服务器日志,因为我认为这与缺少一些信息/没有足够的 ICE 候选人有关。
  • 而且您的信息 div 似乎显示了一些东西。成功建立连接和未建立连接时显示的内容有区别吗?
  • 啊哈,看来电话应用程序没有做任何事情。如果您可以比较工作连接的日志(pc pc),您可能会找出遗漏的内容。尤其是"POST /_ah/channel/connected/ HTTP/1.1" 200 的内容,因为我没有看到电话连接时出现那条线(所以它基本上错过了那里的东西)

标签: java javascript android google-app-engine webrtc


【解决方案1】:

经过大量讨论、试验、错误和记录,我们得出以下答案来解决问题:

  1. 不要从内部资产文件夹加载 channel.html。然后网址不再匹配。 (它试图在'file://'+'/_ah/channel/jsapi'而不是'http://server_adress:port'+'/_ah/channel/jsapi'向服务器发布消息)
  2. 修复后出现双斜线问题。 appRTCSignalingParameters.gaeBaseHref 最后包含一个斜线,但 appRTCSignalingParameters.postMessageUrl 在开头就这样做了,所以程序试图发布到 server_adress:port//message 这是不正确的。只需从 appRTCSignalingParameters.postMessageUrl 中删除 / 即可解决此问题。

旧答案:
感谢您的记录。现在我们知道出了什么问题。 if 不会触发,因为signalingReady == 0。它为零的原因是因为我在第 49 行发现了一些东西:

// Caller is always ready to create peerConnection.
signalingReady = initiator;

我不知道为什么会出现这种情况,也不知道它的作用。

此外,实现它的唯一方法发生在第 311 行,它位于函数 onChannelMessage 内部。该函数没有日志,console.trace 也没有显示来自onChannelMessage 的任何内容,因为在第312 行它应该调用maybeStart()。所以暂时避免它是行不通的,因为没有发出任何信号。

所以我认为可以解决的解决方案是将启动器设置为 1 某处。例如,您可以在创建新房间的函数中执行此操作,因此脚本直接知道您是发起者,而不是加入任何人。

我希望这能解决您的问题,请让我了解更多结果和问题。

(由于这是来自网站的演示,我还建议您尝试了解如何建立 RTC 连接,并从头开始编写所有内容。这将使您的知识更加丰富,调试也会更加容易,因为它是你自己理解的代码)。

【讨论】:

  • 哦!我按照您的指示进行操作,appRTCSignalingParameters.gaeBaseHref 恰好以 2 个斜杠结尾,导致 POST 失败。顺便说一句,我没有设置 STUN 服务器来在本地测试它们。那么如果我想把它部署到互联网上呢?它会找到其他existing STUN/TURN 服务器来使其工作吗?或者我需要设置自己的眩晕/转身服务器?
  • @Robert 你两者都可以。您可以使用public servers,也可以创建自己的。但是你需要告诉浏览器使用哪个:x = new RTCPeerConnection({'iceServers': [{'url': 'stun:stunserver1.com'}, {'url': 'stun:stunserver2.com'}]}).
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 2021-10-12
  • 2023-03-04
  • 2020-08-26
  • 1970-01-01
相关资源
最近更新 更多