我一直在尝试开发一个视频会议应用程序,作为第一步,我试图让用户输入视频在本地工作。只需使用简单的HTML标签和javascript getUserMedia() API。
网络摄像头视频工作得很好,但当我试图获得音频流时,它以刺耳的声音开始,然后继续有回声和噪音。
我尝试了很多方法,有人可以建议一个解决方案与代码。如果可能的话,解释一下为什么会出现这个问题。谢谢你。
这是HTML代码
<html>
<head>
<title>Hi - Here</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="container">
<div>
<video autoplay="true" id="videoElement" ></video>
</div>
</div>
</body>
<script src="webcam.js"></script>
</html>
这是javascript。
var videoConstrains = {
audio: true ,
video:
{
width: {min: 650 , ideal: 1280 , max: 1920},
height: {min: 480 , ideal: 720 , max: 1080},
}
};
let video = document.getElementById('videoElement')
if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia){
navigator.mediaDevices.getUserMedia(videoConstrains)
.then((stream)=>{
video.srcObject = stream
})
}
关闭音频环回:停用麦克风或使用耳机,这不是GUM的问题,而是您的设置问题。
您的麦克风可以听到您的扬声器。有时在礼堂里也会发生同样的事情。麦克风接收扬声器的声音,扬声器发出刺耳的呜呜声。这是一个模拟问题。
把麦克风静音。或者当你"让用户输入的视频在本地工作"时;使用耳机而不是笔记本电脑的扬声器和麦克风。
忽略音轨流提取视频流
const videoTracks = stream?.getVideoTracks() || [];
const selectedVideoTrack = videoTracks[0];
const newStream = new MediaStream();
newStream.addTrack(selectedVideoTrack);
video.srcObject = newStream
其他方式:在上面的代码中,你可以忽略创建新的MediaStream,但是你必须从现有的流中删除音轨,或者创建没有{audio: true}的流。.