当前位置: 首页 > 知识库问答 >
问题:

如何使用JavaScript禁用webrtc麦克风?

翟奇逸
2023-03-14

大家好,我正在使用Peer Js创建一个WebRtc,就像一个视频通话一样,我只想创建一个按钮,当用户点击它时,关掉麦克风,这段代码在script.Js中:

const PRE = "DELTA";
const SUF = "MEET";
var room_id;
var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
var local_stream;

function createRoom(){
    console.log("Creating Room")
    let room = document.getElementById("room-input").value;
    if(room == " " || room == "")   {
        alert("Please enter room number")
        return;
    }
    room_id = PRE+room+SUF;
    let peer = new Peer(room_id)
    peer.on('open', (id)=>{
        console.log("Peer Connected with ID: ", id)
        hideModal()
        getUserMedia({video: true, audio: true}, (stream)=>{
            local_stream = stream;
            setLocalStream(local_stream)
        },(err)=>{
            console.log(err)
        })
        notify("Waiting for peer to join.")
    })
    peer.on('call',(call)=>{
        call.answer(local_stream);
        call.on('stream',(stream)=>{
            setRemoteStream(stream)
        })
    })
}

function setLocalStream(stream){
    let video = document.getElementById("local-video");
    video.srcObject = stream;
    video.muted = true;
    video.play();
}
function setRemoteStream(stream){
   
    let video = document.getElementById("remote-video");
    video.srcObject = stream;
    video.play();
}

function hideModal(){
    document.getElementById("entry-modal").hidden = true
}

function notify(msg){
    let notification = document.getElementById("notification")
    notification.innerHTML = msg
    notification.hidden = false
    setTimeout(()=>{
        notification.hidden = true;
    }, 3000)
}

function joinRoom(){
    console.log("Joining Room")
    let room = document.getElementById("room-input").value;
    if(room == " " || room == "")   {
        alert("Please enter room number")
        return;
    }
    room_id = PRE+room+SUF;
    hideModal()
    let peer = new Peer()
    peer.on('open', (id)=>{
        console.log("Connected with Id: "+id)
        getUserMedia({video: true, audio: true}, (stream)=>{
            local_stream = stream;
            setLocalStream(local_stream)
            notify("Joining peer")
            let call = peer.call(room_id, stream)
            call.on('stream', (stream)=>{
                setRemoteStream(stream);
            })
        }, (err)=>{
            console.log(err)
        })

    })
}

这是Html代码:

<div class="entry-modal" id="entry-modal">
        <p>Create or Join Meeting</p>
        <input id="room-input" class="room-input" placeholder="Enter Room ID">
        <div style="display:inline-block;"><br>
            <button onclick="createRoom()" class="create_room">Create room</button><br><br>
            <button onclick="joinRoom()" class="join_room">Join Room</button><br>
        </div>
</div>
<br><br><br>
<div class="meet-area">
    <!-- Remote Video Element-->
    <video id="remote-video"></video>

    <!-- Local Video Element-->
    <video id="local-video"></video>
</div>

所以我创建了这个按钮:

<button onclick="off()">Off Microphone</button>

那么我如何制作一个能够禁用麦克风的脚本呢?

共有1个答案

温峻熙
2023-03-14

我没有测试过这个,但是你可以像这样静音音频

const off=function(){//toggle state
    local_stream.getAudioTracks()[0].enabled = !local_stream.getAudioTracks()[0].enabled;
};

const off=function(){
    local_stream.getAudioTracks()[0].enabled = false;
};
const on=function(){
    local_stream.getAudioTracks()[0].enabled = true;
};
 类似资料:
  • 问题内容: 我正在研究android voip应用程序。我想确定是否还有其他应用程序正在使用麦克风。因此,我想防止在使用时从其他应用程序访问麦克风。 请任何人有想法,这将对我非常有帮助。 谢谢, 问题答案: 终于知道我们可以按以下方式检查麦克风的可用性:

  • 使用光环板制作一个音量检测计,通过光环板的麦克风检测音量大小,并通过可视化的形式呈现出来,音量越大,LED灯环亮起的灯就越多。 1. 从事件类积木拖取一个 当按钮被按下时 积木。 2. 从控制类积木拖取一个 重复执行 积木。 3. 从灯光类积木拖取一个 显示LED环形图()% 积木,再添加一个传感器类积木 麦克风 响度。 4. 试着拍下桌子,看光环板LED环形图的变化吧! 下载代码

  • 问题内容: 我想知道在使用selenium时如何禁用javascript,以便可以测试服务器端验证。 我找到了这篇文章,但我不知道该怎么做。就像我制作此javascript文件,然后呢? http://thom.org.uk/2006/03/12/disabling-javascript-from- selenium/ 问题答案: 编辑 在此期间,确实出现了更好的替代方法,请参见其他答案,例如 如

  • 问题内容: 我了解到,您可以仅通过将HTML按钮附加到其标签来禁用(使其实际上不可点击),但不能将其作为属性,如下所示: 由于此设置不是属性,因此如何通过JavaScript动态添加此设置以禁用以前启用的按钮? 问题答案: 由于此设置不是属性 这是一个属性。 一些属性定义为布尔值,这意味着您可以指定它们的值,而忽略其他所有内容。即,您只包括粗体部分,而不是disabled =“ disabled

  • 问题内容: 我一直在尝试使用android模拟器上的语音识别来做某事。 最终安装了市场和Google语音搜索应用程序后,我已经非常接近使仿真器能够执行我想要的操作了- 可以识别我的语音。首先,我需要使仿真器能够记录音频,或者至少认为存在麦克风。 我相信adb曾经有-mic选项-但是我认为它不再存在。 有没有人做过,还是有人可以阐明它。 问题答案: 您看过本教程吗?看到评论: 你们还不能在模拟器中录

  • 当我启动音频/屏幕录像机并打开我的录音机应用程序并启动用于录制音频的服务时,我遇到错误该应用程序崩溃。 我不知道为什么我会面临这个问题。 来自logcat的错误跟踪 录制服务.java 录音活动 这就是我尝试在应用程序中开始录制时发生的情况 链接如下。 显示我的应用程序崩溃