标签: webrtc

webrtc一边流式传输视频另一边接收?HTML5

我想知道是否有可能从客户端捕获视频输入,如下面的https://apprtc.appspot.com/?r=91737737,并将其显示在另一个上,以便任何查看者都可以看到它,我的问题是我我的第二台计算机上没有网络摄像头,我想使用webrtc接收视频.是否有可能从一端捕获并将其捕获到另一端?也许如果这不可能是websockets最好的方法吗?

javascript html5 html5-video webrtc

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

Websocket连接因星号11而失败

我正在尝试配置websocket以使用星号11.但是有一些问题.我遵循的步骤是:在http.conf中启用以下内容

enabled=yes
bindaddr=0.0.0.0  
bindport=8088   
Run Code Online (Sandbox Code Playgroud)

我还配置了支持DTLS的星号.但是当我尝试连接到websocket的新WebSocket时("ws:// mySeverIp:8088/ws"); .它抛出一个错误

WebSocket connection failed: Error during WebSocket handshake: Unexpected response code: 400  
Run Code Online (Sandbox Code Playgroud)

有人请帮忙.

谢谢

asterisk rtp websocket dtls webrtc

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

是否可以替换或自定义getUserMedia提示?

我想的WebRTC视频添加到一个基于浏览器的聊天应用程序,我想知道是否有可能在调用getUserMedia当自定义消息框() -看到这个演示的一个例子。我看过html5rocksMozilla docs对此一无所获。因此,是否可以将浏览器的提示替换为jQuery UI对话框小部件?

javascript webrtc

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

WebRTC DataChannel:在Firefox中工作但不在Chrome中工作

我在WebRTC中相当新.我正试图在两个对等体之间建立一个简单的数据通道,没有音频和视频; 只是文字数据.最后,它将是一个游戏,2-7个同伴将连接到将成为游戏大师的同伴.

经过几个小时的谷歌搜索和阅读html5rocks,MDN和其他堆栈帖子,我尝试了很多东西,但我仍然无法使其工作.

当我在两个不同的Firefox选项卡上打开页面时,一切正常.我可以看到其中一个标签发送"Hello,world!" 另一个发送"它有效!".DataChannel已经建立,两个选项卡都会获得各自的对等方消息.

但是,在Chrome上运行时,它无效.在我的一个测试中,DataChannel在我能够发送任何内容之前神秘地关闭,而在另一个测试中,似乎根本没有调用RTCPeerConnection.ondatachannel事件(更多详细信息).如果我试图让Firefox使用Chrome的顺序沟通,无论我获得关于setRemoteDescription的失败不同的神秘的错误.

当然,在这些情况下,我都没有在Web/JavaScript控制台中收到任何错误消息; 这本来太容易了.

我的问题不在于信令过程,至少我不这么认为.普通的WebSocket用于与非常简单的Node.js服务器通信.我宁愿避免使用像PeerJS这样的库.首先,因为我们通过手动更好地学习它,其次是因为我想使用信令Node.js服务器来做除信令之外的其他事情.这在Node端本身并不是问题,但它在浏览器端(因为我不会在100 + KB缩小/混淆的源代码的海洋中找到一点雨滴)

基本方案非常简单:页面上每15秒自动刷新一个当前连接的用户列表.通过单击用户名,您可以与他联系,发送"Hello,world!" 而他回答"它有效!" 同时; 那是吃的.一旦我能够建立基本通信,简单的聊天文本框当然是下一个逻辑步骤.

更具体地说,如果我是用户A并单击用户B,则应该发生以下情况:

  1. 通过信令WebSocket,A向B发送消息,表明他想要给他打电话
  2. B以WebRTC报价回复A.
  3. A获得要约并回复WebRTC答案.
  4. DataChannel已建立
  5. 当B侧的DataChannel打开时,他发送"Hello,world!" 到A
  6. 当A侧的DataChannel打开时,他发送"It works!" 到B; 这可能以相反的顺序发生

    • 无论使用何种浏览器,我应该修改哪些内容才能使其正常工作?(当然我知道它目前仅适用于Firefox和Chrome)
    • 奖金可选问题,为什么我会获得多个ICE候选人,尤其是在连接成功建立之后?

我想我应该有最新的Firefox和Crhome:resp.45和49,在Windows 7 64位上.

以下是我的JavaScript代码; 然后输出对应于几个场景,最后一些我通过阅读其他帖子和教程到目前为止.

function log (s) {
$('#log')[0].insertAdjacentHTML('beforeEnd', s+'<br />');
}

function callUser (e) {
var uname = this.href.substring(1+this.href.indexOf('#'));
ws.send({ type: 'RTCCall', to: uname });
log('Calling ' + uname + '...');
e.preventDefault();
return false;
}

function updateUserList (o) {
var div = $('#userlist')[0];
div.innerHTML='';
div.append('p', o.userlist.length + ' connected users'); …
Run Code Online (Sandbox Code Playgroud)

javascript webrtc rtcdatachannel

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

使用getUserMedia()API时出现404错误

我有index.html和app.js-index.html

<!DOCTYPE html>
<html>
<head>
  <title>Realtime communication with WebRTC</title>
  <link rel="stylesheet" href="css/main.css" />
</head>
<body>
  <h1>Realtime communication with WebRTC</h1>
  <video autoplay></video>
  <script src="js/main.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

app.js =>

'use strict';
navigator.getUserMedia = navigator.getUserMedia ||
    navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
var constraints = {
  audio: false,
  video: true
};
var video = document.querySelector('video');

function successCallback(stream) {
  window.stream = stream; // stream available to console
  if (window.URL) {
    video.src = window.URL.createObjectURL(stream);
  } else {
    video.src = stream;
  }
}
function errorCallback(error) {
  console.log('navigator.getUserMedia error: ', …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome webrtc

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

如何在Firefox中获取具有不同设备约束的多个流?

我正在尝试获取不同的MediaStream,同时deviceId在每种情况下指定不同的.

例如:我有3个麦克风(audioinputs)可用,并希望获得每个麦克风的音频流.

  1. streamC1:with deviceId4hYbpq3YGKqNN6RbbLz5HrLfolsmjFDMl8sY
  2. streamC2:with deviceIdMZ0gdxcs1Q0NW0sobM8ri3kfDhmOs1K74e2p
  3. streamC3:with deviceIdiUWqFDfruPGcT6nl9gUxeN6dCM8VfFH5ZmR8

    const c1 = { audio: { deviceId: { exact: audioInputs[0].deviceId } } };
    const c2 = { audio: { deviceId: { exact: audioInputs[1].deviceId } } };
    const c3 = { audio: { deviceId: { exact: audioInputs[2].deviceId } } };
    
    getMedia(c1)
     .then(() => getMedia(c2))
     .then(() => getMedia(c3));
    
    Run Code Online (Sandbox Code Playgroud)

这是一个完整的JSFiddle.

这在Chrome(版本55.0.2883.87)中运行良好,我得到3个不同的流(C1,C2,C3),所有audioTracks都有预期的标签.

铬输出

但是getUserMedia在Firefox(50.0.2)中第二次和第三次调用(C2,C3)时出现以下错误:

firefox输出

根据该文件NotReadableErrors:

虽然用户已授予使用匹配设备的权限,但操作系统,浏览器或网页级别发生硬件错误,导致无法访问设备.

(但是我可以使用相同的约束获取多个流,而不会遇到这个问题.)

Firefox是否符合预期?既然文档提到了"硬件错误"?是否有不同的方法来获取多个流(具有不同的设备约束)?或者我是否必须停止流,释放设备然后获取新流?

谢谢你的时间.

firefox webrtc getusermedia

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

为什么WebRTC远程视频源由URL.createObjectURL生成

本文档中,它用于URL.createObjectURL设置视频源.(这是接听电话的代码).

var offer = getOfferFromFriend();
navigator.getUserMedia({video: true}, function(stream) {
  pc.onaddstream = e => video.src = URL.createObjectURL(e.stream);
  pc.addStream(stream);

  pc.setRemoteDescription(new RTCSessionDescription(offer), function() {
    pc.createAnswer(function(answer) {
      pc.setLocalDescription(answer, function() {
        // send the answer to a server to be forwarded back to the caller (you)
      }, error);
    }, error);
  }, error);
});
Run Code Online (Sandbox Code Playgroud)

我希望video.src成为检索远程视频的地址.所以它应该由连接的另一端(无论是谁发起呼叫)修复和给出.但价值URL.createObjectURL回答者的一边产生,它的事件取决于函数被调用的时间.如何使用它来获取远程视频流?

编辑:URL.createObjectURL看起来像blob 的结果:http://some.site.com/xxxx-the-token-xxxx.使用此字符串,视频组件如何知道加载远程流的位置?是否存在{url:stream}的哈希映射?如果是这样,视频组件如何访问hashmap?

流对象确实存储了一个令牌字符串,您可以使用该字符串stream.toURL.但它与结果不同URL.createObjectURL.价值URL.createObjectURL取决于时间.如果连续两次调用它,则会得到不同的值.

webrtc

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

WebRTC视频流无法通过http工作

我正在尝试使用WebRTC(Peer.js)创建游戏。而且我无法通过“ http”进行视频通话...也许只能通过https进行?PS媒体呼叫的所有工作示例(我看到)都使用https!

1) http://cdn.peerjs.com/demo/videochat/ (doesn't work)
2) https://simplewebrtc.com/demo.html (works)
Run Code Online (Sandbox Code Playgroud)

javascript webrtc peerjs

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

是否可以在不使用麦克风的情况下录制&lt;audio&gt;的输出?

我有一个<audio>元素,并且要更改速度,开始/结束范围和音高。我想看看是否可以在浏览器中录制我听到的音频。但是由于质量较低,我不想只用麦克风录音。

我可以在服务器端执行相同的效果,但我宁愿不这样做,因为我基本上会使用两种不同的技术来复制相同的功能。


由于“我不清楚我要问的是什么”,因此对国旗表决作出回应,我将重新表述。

<audio>在页面上播放一个元素。我有一些Javascript操作播放率,音量等。然后,我希望浏览器听到声音时记录下来。这不是麦克风。我想创建一个新的音频文件,该文件与正在播放的音频文件尽可能接近。如果为75%,则新文件的音量为75%。

html javascript audio html5-audio webrtc

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

为何像推车这样的解决方案声称是"实时"?

我一直在使用Pusher一段时间了.我总是认为"实时"意味着"瞬间".最近我进入了这篇文章:https://en.wikipedia.org/wiki/Real-time_computing,一句话引起了我的注意:

"实时程序必须保证在指定的时间限制内响应"

他们举了一个基于音频处理的例子:

"考虑一个音频DSP示例;如果一个过程需要2.01秒来分析,合成或处理2.00秒的声音,那么它不是实时的.但是,如果它需要1.99秒,它是或者可以变为真实的时间DSP过程."

我的问题:1.此定义仅适用于硬件/电子设备或也可应用于软件?2.如果适用于软件,它是否适用于像Pusher这样的远程服务?3.推动者被视为"实时"的时间限制是什么?4. WebRTC,Firebase等其他服务的时间限制是什么?

real-time pusher webrtc

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