You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AudioContext调用createMediaStreamDestination生成流无音频输出问题

问题原因

你代码的核心问题是没有将原始音频源连接到用于生成新流的MediaStreamDestination节点。createMediaStreamDestination()生成的流本身不会主动产生音频数据,只有上游有音频节点输出内容到这个目标节点时,它对应的stream才会携带可播放的音频。你当前逻辑里直接从空的MediaStreamDestination取流创建新源,自然没有声音输出。

正确实现代码

const [stream] = await Promise.all([
  navigator.mediaDevices.getUserMedia({
    audio: {
        deviceId: { exact: input.value },
        channelCount: { ideal: 1 },
        noiseSuppression: { ideal: false },
        echoCancellation: { ideal: true },
        autoGainControl: { ideal: false },
        sampleRate: { ideal: 48000 },
    },
  }),
]);
const source = context.createMediaStreamSource(stream);
// 创建MediaStreamDestination节点,保留节点引用而非只取stream
const streamDest = context.createMediaStreamDestination();
// 将原始源连接到该目标节点(后续你要加滤波器的话,就源连滤波器,滤波器连streamDest即可)
source.connect(streamDest);
// 此时streamDest里的stream才有音频数据
const newStream = streamDest.stream;
const source2 = context.createMediaStreamSource(newStream);
source2.connect(context.destination); // 此时就可以正常听到声音了

扩展说明

后续你要加滤波器处理逻辑的话,只需要调整连接链路即可:source → 滤波器1 → 滤波器2 → streamDest,后续从streamDest取到的流就已经是处理后的音频流,不管是输出到扬声器还是做其他传输都可以正常使用。

内容的提问来源于stack exchange,提问作者KEMANTH RAJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:21:01