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

aiortc实现非双工音频广播服务器创建空offer报错求助

问题原因

你直接调用negotiate()发起请求时,客户端RTCPeerConnection没有任何媒体相关配置,生成的SDP里不包含音频媒体行,aiortc在服务端添加音频轨道后,无法匹配到对应的媒体协商上下文,计算媒体流方向时出现了空值,才抛出这个错误。

修复方案

只需要修改客户端telephone_calls.js的start函数逻辑,无需调用getUserMedia,主动添加一个仅接收方向的音频收发器,再发起协商即可:

function start() {
    pc = createPeerConnection();
    
    dc = pc.createDataChannel('radio_metadata', {"ordered": true});
    dc.onclose = function() {
        
    };
    dc.onopen = function() {
        
    };
    dc.onmessage = function(evt) {
        console.log(evt.data);
    };
    
    // 新增:添加仅接收方向的音频收发器,告知服务端需要推送音频流
    pc.addTransceiver('audio', { direction: 'recvonly' });
    // 直接发起协商
    negotiate();
}

修改后生成的Offer SDP里会携带a=recvonly的音频媒体描述,服务端aiortc就能正确匹配协商逻辑,不会再出现空值错误,也不需要申请本地麦克风权限,符合你要去掉本地音频采集的需求。


内容的提问来源于stack exchange,提问作者Chris P

相关产品推荐
方舟 Agent Plan

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

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