이영우*_*이영우 3 html javascript webrtc
我想知道如何在 WebRTC 中设置音量。
我正在绘制这样的音频:
audio = document.createElement('audio');
audio.controls = true;
audio.autoplay = true;
audio.src = window.URL.createObjectURL(stream);
div.appendChild(audio);
Run Code Online (Sandbox Code Playgroud)
我想制作我的自定义音频 UI。所以,我将使用 HTML 的滑动条。
<input type="range">
Run Code Online (Sandbox Code Playgroud)
但是,我不知道 WebRTC 流中的设置卷。我该如何设置?
对于输出(扬声器)音频音量,您可以使用音频/视频元素的音量属性进行管理。
var audio = document.getElementById('audioId');
audio.volume = 0.9; // 0.0(Silent) -> 1 (Loudest)
Run Code Online (Sandbox Code Playgroud)
您可以根据滑杆位置更改 audio.volume
要更改输入(麦克风)音量,WebRTC AudioTrack/MediaStream 中没有可用的直接方法。
我们可以使用WebAudio Api在 Stream/Track 级别处理音量,您可以将 WebAudio 输出连接到 PeerConnection,如下所示
var audioContext = new AudioContext()
var gainNode = audioContext.createGain();
navigator.mediaDevices.getUserMedia({audio:true})
.then((stream) => {
console.log('got stream', stream);
window.orginalStream = stream;
return stream;
})
.then((stream) => {
audioSource = audioContext.createMediaStreamSource(stream),
audioDestination = audioContext.createMediaStreamDestination();
audioSource.connect(gainNode);
gainNode.connect(audioDestination);
gainNode.gain.value = 1;
window.localStream = audioDestination.stream;
//audioElement.srcObject = window.localStream; //for playback
//you can add this stream to pc object
// pc.addStream(window.localStream);
})
.catch((err) => {
console.error('Something wrong in capture stream', err);
})
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用以下功能轻松控制麦克风音量
function changeMicrophoneLevel(value) {
if(value && value >= 0 && value <= 2) {
gainNode.gain.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看我的演示
| 归档时间: |
|
| 查看次数: |
8751 次 |
| 最近记录: |