标签: webrtc

从getUserMedia录制音频流

最近几天,我尝试使用javascript录制音频流.我发现没有可用的示例代码.

有没有浏览器支持?

这是我的代码

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
                         navigator.mozGetUserMedia || navigator.msGetUserMedia; 

navigator.getUserMedia({ audio: true }, gotStream, null);
function gotStream(stream) {

        msgStream = stream;        
        msgStreamRecorder = stream.record(); // no method record :(
}
Run Code Online (Sandbox Code Playgroud)

javascript audio html5 webrtc getusermedia

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

Web Audio API Analyzer节点不使用麦克风输入

针对Chrome Canary的http://code.google.com/p/chromium/issues/detail?id=112367阻止获取麦克风输入的错误现已修复.这部分似乎确实有效.我可以将麦克风输入分配给音频元素,并通过扬声器听到结果.

但我想连接分析仪节点以进行FFT.如果我将音频源设置为本地文件,分析器节点可以正常工作.问题是当连接到mic音频流时,分析器节点只返回基值,就好像它根本没有音频流一样.(如果你好奇的话,一遍又一遍-100.)

谁知道怎么了?它还没有实现吗?这是一个铬虫吗?我在Windows 7上运行26.0.1377.0并启用了getUserMedia标志,并通过python的simpleHTTPServer通过localhost服务,因此它可以请求权限.

码:

var aCtx = new webkitAudioContext();
var analyser = aCtx.createAnalyser();
if (navigator.getUserMedia) {
  navigator.getUserMedia({audio: true}, function(stream) {
    // audio.src = "stupid.wav"
    audio.src = window.URL.createObjectURL(stream);
  }, onFailure);
}
$('#audio').on("loadeddata",function(){
    source = aCtx.createMediaElementSource(audio);
    source.connect(analyser);
    analyser.connect(aCtx.destination);
    process();
});
Run Code Online (Sandbox Code Playgroud)

同样,如果我将audio.src设置为注释版本,它可以工作,但是使用麦克风则不行.流程包含:

FFTData = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(FFTData);
console.log(FFTData[0]);
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用createMediaStreamSource并绕过音频元素 - 例4 - https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/webrtc-integration.html.也不成功.:(

    if (navigator.getUserMedia) {
        navigator.getUserMedia({audio: true}, function(stream) {
        var microphone = context.createMediaStreamSource(stream);
        microphone.connect(analyser);
        analyser.connect(aCtx.destination);
        process();
    }
Run Code Online (Sandbox Code Playgroud)

我想有可能将mediasteam写入缓冲区,然后使用dsp.js或其他东西来做fft,但我想在我走这条路之前先检查一下.

javascript google-chrome webrtc web-audio-api

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

在Native App中使用Webrtc

我的问题是:

1 - 是否可以在我的Native App中使用WebView(由Native框架提供)实例,并将其扩展为支持Webrtc,

如果1为是,则可能跟随的是动作项

1 - 在Android上构建一个webrtc,2 - 在Android WebView中扩展Javascript以耦合/绑定Webrtc调用,

请确认..

我想做的是

1 - 我们有基于webrtc的语音/视频聊天应用程序在Chrome和Mozilla桌面浏览器中运行良好,因为它们都带有webrtc ...,即用户需要访问www.xyz.com,它将启动视频/语音会话,

2 - 在移动设备上同样的事情,我们想作为本机应用程序,即我们正在尝试创建一个具有本机WebView实例的应用程序,我们将在其中访问www.xyz.com以进行语音/视频会话

3 - 我尝试了我在2中解释的方式,但似乎在Application框架提供的WebView实例中没有启用webrtc,所以我试图添加它,这就是我的想法,

- WebView实例有一些扩展Javascript的机制,这意味着 http://dev.w3.org/2011/webrtc/editor/webrtc.html 这些API中的一些我需要添加到WebView中,并且它们的实现将会如果我能够在Android和iOS平台上成功集成和构建Webrtc的话

请评论....

android android-webview ios webrtc

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

Linux设备上的WebRTC和gstreamer

我有小型计算机(类似于Arduino或Raspberry pi),上面安装了Linux,摄像头gstreamer.我需要使用WebRTC技术将h264视频从此设备传输到浏览器.此外,我使用NodeJS作为信令服务器.

简单来说,我需要从我的设备上做一个WebRTC客户端.做这个的最好方式是什么?我可以使用WebRTC Native API实现此目标吗?如何在我的小型设备上安装它?或者,也许,我只需要玩我的gstreamer并为它安装一些webrtc插件?

gstreamer h.264 webrtc

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

从MediaStream对象获取媒体详细信息(分辨率和帧速率)

我正在捕捉用户的相机,我想以最佳分辨率捕捉到图片,所以我的代码就像下面的代码片段,

我想从传入流中读取分辨率详细信息,因此我可以将其设置为视频高度和宽度,我将使用它来点击快照,我希望快照具有流提供的最佳质量,这是可能的(对于从stream变量中读取分辨率细节)?

编辑:我正在使用传输视频,webrtc所以我也想找出传输的视频流的帧速率

$(document).ready(function(){

navigator.getUserMedia = ( navigator.getUserMedia ||navigator.mozGetUserMedia ||navigator.webkitGetUserMedia  ||navigator.msGetUserMedia);


if(navigator.getUserMedia){
  navigator.getUserMedia({ video: true, audio:true}, function(stream) {
    var video =  $('#video')[0];
   video.src = window.URL.createObjectURL(stream);
    video.muted=true;
    //$('#video').hide();
  },  function(){
    showMessage('unable to get camera', 'error');
  });
}else{
    showMessage('no camera access mate.', 'error');
}



function showMessage(msg,type) { // type 'success' or 'error'
    $('#msg').text(msg);
}

})
Run Code Online (Sandbox Code Playgroud)

HTML代码:

<div id='msg' class'message'></div>
  <div >
    <video id='video' autoplay></video>
  </div>
Run Code Online (Sandbox Code Playgroud)

javascript html5 webrtc getusermedia

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

使用 WebRTC 的 Android 屏幕共享

我听说过使用 WebRTC 在桌面上共享屏幕。但是对于Android来说,似乎没有太多的信息。

我的问题是:

  1. 是否可以在 Android 上使用 WebRTC 进行屏幕共享?我的意思是我可以将当​​前屏幕投射到另一部手机的屏幕上。
  2. 如果 1 是 Yes,我怎样才能做到这一点?

谢谢。

android webrtc

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

没有浏览器的webrtc

现在我在这里使用这个项目.它是一个python脚本,使用webrtc运行服务器,将客户端/浏览器网络摄像头发送到服务器并执行面部识别.我想做的是使用连接到pi的网络摄像头或pi摄像头做同样的事情,但不使用浏览器.有没有办法用当前的设置做到这一点,还是有更好的方法来实现这一目标?

python webrtc raspberry-pi

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

Swift是否支持WebRTC?

我们的团队正在选择编程语言来开发一个新的iOS应用程序,我们必须编写功能来支持视频对话.

后端是使用WebRTC编写的,现在我们必须决定在iPhone应用程序中使用哪种语言,在这种情况下我们更喜欢Swift.

但是,我不确定Swift是否支持WebRTC.

我最初的研究表明,我们可以使用Objective-C实现这些功能.我找到了一个用Objective-C编写的例子,你可以在这里找到源代码.

但是,我不确定斯威夫特.Swift还支持WebRTC吗?

iphone ios webrtc swift

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

从NodeJS服务器获取实时流式音频到客户端

我需要从1个客户端到服务器到多个侦听器客户端的实时实时音频流.

目前我从客户端进行录音工作,并通过socket.io将音频流传输到服务器.服务器接收此数据,并且必须将音频(也通过socket.io?)传输到想要侦听此流的客户端.它必须尽可能实时(最小化延迟).

我正在使用GetUserMedia来录制麦克风(浏览器兼容性在这里并不重要).我希望客户端使用HTML5音频标签来收听流.在服务器上接收的数据是打包在带有audio/wav类型的blob中的块(当前由700打包).

这是我将代码发送到服务器的代码:

mediaRecorder.ondataavailable = function(e) {
    this.chunks.push(e.data);
    if (this.chunks.length >= 700)
    {
        this.sendData(this.chunks);
        this.chunks = [];
    }
};
mediaRecorder.sendData = function(buffer) {
    blob = new Blob(buffer, { 'type' : 'audio/wav' });
    socket.emit('voice', blob);
}
Run Code Online (Sandbox Code Playgroud)

在服务器上,我能够以相同的方式将块发送到客户端:

socket.on('voice', function(blob) {
    socket.broadcast.emit('voice', blob);
});
Run Code Online (Sandbox Code Playgroud)

在客户端我可以这样玩:

var audio = document.createElement('audio');
socket.on('voice', function(arrayBuffer) {
    var blob = new Blob([arrayBuffer], { 'type' : 'audio/wav' });
    audio.src = window.URL.createObjectURL(blob);
    audio.play();
});
Run Code Online (Sandbox Code Playgroud)

这适用于我发送的第一个块的块,但是你不允许继续更改为audio.src到新的URL源,所以这不是一个有效的解决方案.

我想我必须在服务器上创建某种流,我可以在侦听客户端上放入HTML5的音频标签,但我不知道如何.接收到的带有块的blob应该实时附加到此流.

这样做的最佳方法是什么?我是从客户端麦克风到服务器吗?

html5 node.js html5-audio socket.io webrtc

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

FreePBX Twilio Outbound Ringtone

我有一个连接到FreePbx的Twilio SIP中继,所有用户都使用FreePBX的webrtc模块拨打电话.他们可以通过双向音频拨打和接听电话,但是对于拨出呼叫,呼叫者听不到铃声(振铃),因为B号码正在响铃,这导致与用户的某种程度的混淆.

我已经检查了出站拨号设置中的r标志,这已启用,但除此之外我有点卡住了.

[SIP设置]

   host=hostname
   username=username
   secret=supersecret
   type=peer
Run Code Online (Sandbox Code Playgroud)

在设置 - >星号SIP设置中,我设置了外部和内部网络

要确认,使用带扩展功能的软电话工作正常,只能通过WEBRTC.

我已经打开了wireshark的痕迹,这些都显示了两端的180响

详细的通话记录:https://pastebin.com/s7BfwUMw

asterisk sip twilio webrtc freepbx

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