问题描述
下午好!在这个实现中,我在 webRTC 中使用了电子和 javascript。
为了详细说明这个问题,我了解在从 StreamHandler 获取流并调用 mediaDevices.getUserMedia 之前我在做什么。一旦我有了那个流,我就成功地添加了 AudioContext 来创建过滤器、调整增益等。我听说这些更改也在 audioDestination 设备上发生。所以到目前为止一切都很好。所以我现在的问题是如何将编辑过的音频流放回到它可能去的地方?一个具体的例子是,假设我捕获了我的主麦克风的流,我想在之前调整增益,比如说,音频使它不和谐、抽搐等。
如果我正在想象我认为的过程
麦克风输入 ---> 抓取流 ---> 编辑流 ---> 继续输出到 3rd 方应用。
但似乎发生的是该流创建了一个单独的频道,并且只能在我自己的输出设备上播放,因为我没有目的地可以从指向我的音频已经前往的设备中进行选择。请理解我仍在弄清楚所有这些是如何工作的。我也很乐意更改或编辑问题以更好地满足标准,请告诉我。
更新:我正在添加代码的构造函数和 updateStream 函数。构造函数是我从本地机器获取媒体流的地方,并在单击按钮以激活音频更改并将它们播放到输出时调用更新流。我遇到的问题是,当我通过耳机或扬声器播放更新时会发出声音,但我不知道如何让流返回并通过上面提到的应用程序播放。
constructor(navigator,deskCap,constraints) {
this._navigator = navigator;
this._constraints = constraints;
this._desktopCapturer = deskCap;
this._mainStream = new MediaStream();
// Call our object setup functions
this.getAudioSources();
navigator.mediaDevices.getUserMedia(constraints).then((media) => {
this._mainStream = media;
});
});
}
updateStream = () => {
let stream = this._mainStream;
const audContext = new AudioContext(); // Electron AudioContext
const source = audContext.createmediastreamsource(stream);
const audDest = audContext.createMediaStreamDestination();
const audSource = audContext.createmediastreamsource(stream);
const gainNode = audContext.createGain();
let x = parseFloat(this._outputVolume);
if(!isNaN(x)) {
gainNode.gain.value = x;
} else {
gainNode.gain.volume = 0.33;
}
gainNode.connect(audDest);
this._mainStream = audDest.stream;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)