标签: webrtc

WebRTC:忍者构建不起作用

我在UBUNTU环境中构建webRTC的步骤.

看看代码:

 gclient config https://webrtc.googlecode.com/svn/trunk
 echo "target_os = ['android', 'unix']" >> .gclient
 gclient sync --nohooks
Run Code Online (Sandbox Code Playgroud)

生成忍者makefile:

cd trunk

 $./build/install-build-deps-android.sh
 $. build/android/envsetup.sh
 Defaulting GYP_GENERATORS to ninja

 $gclient runhooks
 $android_gyp
Run Code Online (Sandbox Code Playgroud)

android_gyp的结果:

GYP_GENERATORS set to 'ninja'
Updating projects from gyp files...
gyp: /home/user/webRTC/trunk/chrome/chrome_resources.gyp not found (cwd: /home/user/webRTC/trunk)
gyp: /home/user/webRTC/trunk/tools/android/findbugs_plugin/findbugs_plugin.gyp not found (cwd: /home/user/webRTC/trunk)
gyp: /home/user/webRTC/trunk/sql/sql.gyp not found (cwd: /home/user/webRTC/trunk)
gyp: /home/user/webRTC/trunk/tools/android/android_tools.gyp not found (cwd: /home/user/webRTC/trunk)
gyp: /home/user/webRTC/trunk/sync/sync.gyp not found (cwd: /home/user/webRTC/trunk)
gyp: /home/user/webRTC/trunk/sandbox/sandbox.gyp not found (cwd: /home/user/webRTC/trunk)
gyp: /home/user/webRTC/trunk/net/net.gyp not found (cwd: /home/user/webRTC/trunk) …
Run Code Online (Sandbox Code Playgroud)

build webrtc ninja

1
推荐指数
1
解决办法
1万
查看次数

创建一个无需用户许可即可运行的WebRTC应用程序

我想创建不要求用户允许/拒绝权限的WebRTC应用程序.

我可以在浏览器中实现它,要求允许使用网络摄像头和麦克风. permmision允许/拒绝

我想要一个默认授予网络摄像头和麦克风权限的解决方案.

还有其他我可以使用的东西而不是浏览器吗?一个独立的应用程序或什么?

任何帮助将受到高度赞赏.

node.js webrtc

1
推荐指数
1
解决办法
158
查看次数

node.js中的内存使用量没有减少?这是怎么回事?

我正在使用任务管理器跟踪内存,我的应用程序是使用socket.io的webrtc应用程序.

因此,当我跟踪内存并打开localhost时,连接两个浏览器窗口,显然会增加一些内存.我认为它从19.3 MB开始,然后为每个连接增加0.5MB.

然而!当我关闭连接时,不再打开localhost窗口,它的内存使用量永远不会减少!因此,如果它达到20MB或其他东西,那么它将保持在那里,永远不会减少.

为什么是这样?有某种内存泄漏吗?

顺便说一句,这是跟踪内存使用情况的正确方法吗?或者我不应该使用任务管理器?

javascript ram node.js webrtc server

1
推荐指数
1
解决办法
1229
查看次数

如何关闭webrtc datachannel?

我不能使用以下方法.

因为我只使用datachannel(不使用getUserMedia)

<script>
    peerConnection.removeStream(remoteStream)
    remoteVideo.onerror = null;
    remoteVideo.pause();
    remoteVideo.src = undefined;
    remoteStream.stop();
    remoteStream.onended = null;
    remoteStream = null;

    peerConnection.removeStream(localStream)

    localVideo.onerror = null;
    localVideo.pause();
    localVideo.src = undefined;
    localStream.stop();
    localStream.onended = null;
    localStream = null;
</script>
Run Code Online (Sandbox Code Playgroud)

有没有办法关闭数据通道?

webrtc rtcdatachannel peer-connection

1
推荐指数
1
解决办法
831
查看次数

如何检测麦克风类型

我使用webRTC(getUserMedia)来录制声音并将其上传到后端服务器.一切顺利,除了我无法确定麦克风类型(它是内置麦克风,USB麦克风,耳机麦克风,还是其他?)

有谁知道我怎么能检测出这种类型?

javascript webrtc getusermedia

1
推荐指数
1
解决办法
1096
查看次数

WebRTC在同一台机器中的两个页面之间

我正在尝试实现一种机制来在页面之间发送文本数据(例如JSON),在同一台机器上使用javascript .
我发现了一些代码并将其包装但它只能在同一页面上运行.
目前我不想使用WwebRTC框架,只有adapter.js.

//Must include adapter.js before

var WebRTCManager = (function () {

    'use strict';

    //Ctor
    function WebRTCManagerFn() {

      console.log('WebRTCManagerFn ctor reached');

      this._events = {};

      this._localConnection = null
      this._remoteConnection = null;
      this._sendChannel = null;
      this._receiveChannel = null;
    }

    WebRTCManagerFn.prototype.addEventListener = function (name, handler)        {
      if (this._events.hasOwnProperty(name))
          this._events[name].push(handler);
      else
          this._events[name] = [handler];
    };

    WebRTCManagerFn.prototype._fireEvent = function (name, event) {
       if (!this._events.hasOwnProperty(name))
          return;

       if (!event)
          event = {};

       var listeners = this._events[name], l = listeners.length;
       for (var i = …
Run Code Online (Sandbox Code Playgroud)

javascript ipc communication webrtc

1
推荐指数
1
解决办法
1577
查看次数

关闭停止共享,隐藏Chrome桌面捕获窗口

每当我们使用chrome桌面捕获从Chrome扩展程序记录我们的屏幕时,我们会在底部显示以下窗口.它提供了停止屏幕共享或隐藏屏幕共享 停止/隐藏屏幕共享的选项

我正在开发一个扩展来启动和停止桌面录制.当用户点击我的分机的"停止"按钮时,我希望此窗口消失.这样做的方法是什么?

我已经尝试将请求ID传递给此API chrome.desktopCapture.cancelChooseDesktopMedia(pending_request_id),但这似乎不起作用.

google-chrome-extension mediarecorder webrtc screen-recording

1
推荐指数
1
解决办法
2131
查看次数

WebRTC视频未显示

我正在创建一对一的webrtc视频聊天室,此代码不起作用,我想知道为什么

function hasUserMedia(){
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
return !!navigator.getUserMedia; 
}

function hasRTCPeerConnection() {
window.RTCPeerConnection = window.RTCPeerConnection || 
window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
return !!window.RTCPeerConnection;
}



 function startPeerConnection(stream) {
 var configuration = {

    "iceServers": [{ "url": "stun:stun.1.google.com:19302" }]
 };
 yourConnection = new RTCPeerConnection(configuration);
 theirConnection = new webkitRTCPeerConnection(configuration);

 yourConnection.addStream(stream);
 theirConnection.onaddstream = function (e) {
     theirVideo.src = window.URL.createObjectURL(e.stream);
 };


 yourConnection.onicecandidate = function (event) {
    if (event.candidate){

   theirConnection.addIceCandidate(newRTCIceCandidate(event.candidate));
    }
  };

 theirConnection.onicecandidate = function (event) {
    if (event.candidate) {
        yourConnection.addIceCandidate(new 
  RTCIceCandidate(event.candidate));
    } …
Run Code Online (Sandbox Code Playgroud)

html javascript webrtc

1
推荐指数
1
解决办法
2336
查看次数

Kurento WebRTC连接在大约30%的情况下失败

我花了几天时间寻找连接问题,但没有任何运气。我正在尝试使用Kurento实现一个相对简单的one2one呼叫。

在下面,您会找到Kurento的调试日志,其中说明了可以建立连接和连接失败的情况。

如果您需要更多日志(例如,客户端,信令服务器,tcpdumps或Kurento的跟踪日志),请告诉我,我会提供!

任何帮助或新的投入,我们将不胜感激!

问题描述:

在大约30%的情况下,无法建立WebRTC连接。不幸的是,当可以建立Connection时,我缺乏任何形式,而当不能建立连接时,它似乎是完全随机的。我在同一网络中,使用相同的设备,使用相同的TURN服务器,使用相同的信令协议,但是在30%的情况下无法建立连接。

当我在本地运行应用程序时,它似乎更可靠地工作,几乎可以在100%的时间内建立连接(或者甚至有100%的时间可以建立连接,我已经测试了很多次了,但我都失去了跟踪)。我使用docker在本地设置基础架构,并在单独的网络中运行不同的容器(TURN,Kurento和Signalling)以模仿生产部署。

我们在开发和生产环境中会遇到相同的行为。在我们的开发环境中,我们绝对没有防火墙,因此这似乎不是问题。

我试图找出问题原因的原因:

通常,我一直在比较有效案例和无效案例的日志,但是我没有发现它们之间的任何重大差异都可以指出问题所在。

我已经通过TURN服务器(使用Firefox和force_relay标志)以及通过Kurento直接测试了WebRTC连接,但是在这两种情况下,大约30%的情况下连接均失败。

我尝试过滤不是中继候选者的所有ICE候选者。

我已经嗅探了我们的信令服务器(也控制Kurento)和Kurento之间的流量,以查看所交换的JSON RPS消息是否存在任何差异,但它们看起来基本相同。

我已经使用以下工具测试了我们的STUN和TURN服务器:https : //webrtc.github.io/samples/src/content/peerconnection/trickle-ice/,我同时获得了serverreflexive和中继候选者,它们看起来都是正确的

我已经从成功的连接和不成功的连接中窃听了来自客户端的流量,但是可能会发现很大的不同

我简化了Kurento媒体管道(没有记录,没有集线器),但是行为是相同的

我使用了不同的浏览器(Chrome,Firefox和本机iOS实现),但是行为是相同的

Kurento调试日志,说明可以建立连接的情况:

https://gist.github.com/omnibrain/2bc7ad54f626d278d3c8bac29767ac4c

无法建立连接的情况下的Kurento调试日志:

https://gist.github.com/omnibrain/f7caee04a5c6d77ea22a9ccfa95dd825

webrtc kurento libnice

1
推荐指数
1
解决办法
490
查看次数

在xcode版本10.2中为产品类型“应用程序”签名二进制文件时,空标识无效

我已经编译了webrtc ios源代码,然后使用了以下命令:

gn gen out/ios --args='target_os="ios" target_cpu="arm64"' --ide=xcode
Run Code Online (Sandbox Code Playgroud)

然后我用Xcode打开工作区。

但是当我编译代码时,Xcode在下面给了我这个错误。

当为产品类型“应用程序”签名二进制文件时,空标识无效。(在目标“ AppRTCMobile”中)

我的Xcode版本是10.2,是最新版本。

我真的不知道这是怎么发生的,有人可以帮我吗?

我的代码符号设置是:

一切看起来还好。

ios webrtc

1
推荐指数
3
解决办法
8193
查看次数