我在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) 我想创建不要求用户允许/拒绝权限的WebRTC应用程序.
我可以在浏览器中实现它,要求允许使用网络摄像头和麦克风.

我想要一个默认授予网络摄像头和麦克风权限的解决方案.
还有其他我可以使用的东西而不是浏览器吗?一个独立的应用程序或什么?
任何帮助将受到高度赞赏.
我正在使用任务管理器跟踪内存,我的应用程序是使用socket.io的webrtc应用程序.
因此,当我跟踪内存并打开localhost时,连接两个浏览器窗口,显然会增加一些内存.我认为它从19.3 MB开始,然后为每个连接增加0.5MB.
然而!当我关闭连接时,不再打开localhost窗口,它的内存使用量永远不会减少!因此,如果它达到20MB或其他东西,那么它将保持在那里,永远不会减少.
为什么是这样?有某种内存泄漏吗?
顺便说一句,这是跟踪内存使用情况的正确方法吗?或者我不应该使用任务管理器?
我不能使用以下方法.
因为我只使用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(getUserMedia)来录制声音并将其上传到后端服务器.一切顺利,除了我无法确定麦克风类型(它是内置麦克风,USB麦克风,耳机麦克风,还是其他?)
有谁知道我怎么能检测出这种类型?
我正在尝试实现一种机制来在页面之间发送文本数据(例如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) 每当我们使用chrome桌面捕获从Chrome扩展程序记录我们的屏幕时,我们会在底部显示以下窗口.它提供了停止屏幕共享或隐藏屏幕共享 停止/隐藏屏幕共享的选项
我正在开发一个扩展来启动和停止桌面录制.当用户点击我的分机的"停止"按钮时,我希望此窗口消失.这样做的方法是什么?
我已经尝试将请求ID传递给此API chrome.desktopCapture.cancelChooseDesktopMedia(pending_request_id),但这似乎不起作用.
google-chrome-extension mediarecorder webrtc screen-recording
我正在创建一对一的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) 我花了几天时间寻找连接问题,但没有任何运气。我正在尝试使用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 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,是最新版本。
我真的不知道这是怎么发生的,有人可以帮我吗?
我的代码符号设置是:

一切看起来还好。