Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebRTC:是否可以控制麦克风和音量_Javascript_Jquery_Webrtc - Fatal编程技术网

Javascript WebRTC:是否可以控制麦克风和音量

Javascript WebRTC:是否可以控制麦克风和音量,javascript,jquery,webrtc,Javascript,Jquery,Webrtc,我正在一个演示站点上工作,该站点包含一个滑出小部件,允许用户拨打电话 我正在使用SIPml5工具和webrtc2sip后端来处理呼叫。该部分已全部设置并正常工作。因此,现在我想看看是否可以使用小部件中的滑块控制麦克风和音量。这可能吗?我在网上到处找,运气不太好 我确实找到了几个网站,它们向我展示了如何在jQuery滑块代码中控制音频标记的音量。所以我试着按照下面的代码进行设置: $(function() { $( "#slider-spkr" ).slider({

我正在一个演示站点上工作,该站点包含一个滑出小部件,允许用户拨打电话

我正在使用SIPml5工具和webrtc2sip后端来处理呼叫。该部分已全部设置并正常工作。因此,现在我想看看是否可以使用小部件中的滑块控制麦克风和音量。这可能吗?我在网上到处找,运气不太好

我确实找到了几个网站,它们向我展示了如何在jQuery滑块代码中控制音频标记的音量。所以我试着按照下面的代码进行设置:

$(function() {
        $( "#slider-spkr" ).slider({
          orientation: "vertical",
          range: "min",
          min: 0,
          max: 100,
          value: 60,
          slide: function( event, ui ) {
            var value = $("#slider-spkr").slider("value");
            document.getElementById("audio_remote").volume = (value / 100);
          },
          change: function() {
            var value = $("#slider-spkr").slider("value");
            document.getElementById("audio_remote").volume = (value / 100);
          }
        });
    });
不幸的是,这也不起作用。所以我不确定在使用SIPml5时是否允许我这样做,或者我的jQuery代码是否需要调整


其他人是否有幸添加了麦克风/音量控制?谢谢您的帮助。

对不起,无法调整麦克风音量。但您可以使用流api打开/关闭它:

function toggleMic(stream) { // stream is your local WebRTC stream
  var audioTracks = stream.getAudioTracks();
  for (var i = 0, l = audioTracks.length; i < l; i++) {
    audioTracks[i].enabled = !audioTracks[i].enabled;
  }
}
function-toggleMic(stream){//stream是您的本地WebRTC流
var audioTracks=stream.getAudioTracks();
对于(var i=0,l=audioTracks.length;i

此代码用于本机webrtc api,而不是sipML5。看来他们还没有实施。没有那么清楚的收据。

好吧,这是可能的,但目前只有在Chrome中,并且有一些假设。 我不是作者,您可以在这个开源库()中找到这段代码的灵感

技巧是修改流,然后将当前流的音频轨迹替换为修改流的音频轨迹(取自MediaStreamDestination stream)

免责声明:

这在FireFox版本35中不起作用,因为他们只是没有实现MediaStream.addTrack/removeTrack。我现在用这张支票

  this.micVolumeIsSupported = function() {
    var MediaStream = window.webkitMediaStream || window.MediaStream;
    return !!MediaStream.prototype.addTrack && !!MediaStream.prototype.removeTrack;
  };
_gainSupported = this.micVolumeIsSupported();
这在Chrome中有一个限制,因为有一个带有混合轨迹的停止流。您可能希望在关闭连接或连接中断之前恢复这些磁道

this.restoreTracks = function(){
  if(_gainSupported && _tracksSubstituted){
    webRTCStream.addTrack(originalTrack);
    webRTCStream.removeTrack(filteredTrack);
    _tracksSubstituted = false;
  }
};

如果
audio\u remote
元素是
(Chrome,soon FF)的话,这对我来说很有用。你说得对。我做了更多的测试,我发布的jQuery代码现在正在为卷工作。我不知道为什么之前它不起作用。我来看看Web音频API。谢谢。已建议将卷作为约束:,请在此处说明建议:。(我知道这并不能解决你的问题或回答你的问题!)这个项目显然可以做到:但我一直无法让它在chrome 30上工作……再次感谢你的帮助。幸运的是,他们对麦克风静音和取消静音的功能很满意。如果已经启用,这似乎会禁用audioTrack。这可能是一个更好的方法:
如果(!audioTracks[i].enabled){audioTracks[i].enabled=true;}
@jesal:好吧,你说得对——就一致性而言,这种方法糟透了。我宁愿定义一个bool变量并切换它的值,然后将所有audiotracks enabled属性分配给这个变量。您可能希望跟踪FireFox上的问题。欢迎投票支持该功能的实现:)他们似乎对webRtc的这些要点进展不快。。。到今天为止,是否有可能获取用户系统音量的信息,增加或减少系统音量?@SagarPilkhwal,我认为系统音量永远无法通过浏览器进行调整。这是安全漏洞。然而,关于这里讨论的页面的音频级别,据我所知,Mozilla最近在音频API和添加/删除曲目方面有了很大的进步。谢谢,我们也无法通过使用javascript获得系统卷信息?是这样吗?@SagarPilkhwal,你可以读更多
this.restoreTracks = function(){
  if(_gainSupported && _tracksSubstituted){
    webRTCStream.addTrack(originalTrack);
    webRTCStream.removeTrack(filteredTrack);
    _tracksSubstituted = false;
  }
};