Mic*_*l S 1 javascript google-chrome webrtc web-audio-api
我正在从 WebRTC 获取媒体流并进行一些音频处理和监控。它可以在 FireFox 上运行,但在 Chrome 上保持沉默。
这是一个简化版本,以单个增益节点为例。
const AudioContext = window.AudioContext || window.webkitAudioContext;
let myAudioCtx = new AudioContext();
let mySource = myAudioCtx.createMediaStreamSource(stream);
let gainNode = myAudioCtx.createGain();
gainNode.gain.value = 2;
mySource.connect(gainNode);
gainNode.connect(myAudioCtx.destination);
Run Code Online (Sandbox Code Playgroud)
而如果我直接将流分配给 srcObject,我就会听到声音。
看来 createMediaStreamSource() 没有返回任何音频,因为我的监控显示静音。但是,如果我将来自 WebRTC 的流分配给 srcObect 并通过我的监控运行,那么监控会检测到声音。
myAudioCtx.state 说“正在运行”
想不出还有什么地方可以检查。任何帮助,将不胜感激
经过一晚良好的睡眠并再次查看 MDN 文档后找到了解决方案。
您必须将流分配给音频元素
audio.srcObject = stream;
Run Code Online (Sandbox Code Playgroud)
但你必须将输出静音,这样它就不会直接进入扬声器
audio.muted = true;
Run Code Online (Sandbox Code Playgroud)
这不会阻止您的网络音频工作
const AudioContext = window.AudioContext || window.webkitAudioContext;
let myAudioCtx = new AudioContext();
let mySource = myAudioCtx.createMediaStreamSource(stream);
let gainNode = myAudioCtx.createGain();
gainNode.gain.value = 2;
mySource.connect(gainNode);
gainNode.connect(myAudioCtx.destination);
Run Code Online (Sandbox Code Playgroud)
这适用于 Chrome、Safari 和 Firefox。
| 归档时间: |
|
| 查看次数: |
2454 次 |
| 最近记录: |