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
相关产品推荐
相关产品推荐

