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

Google Nest电池版门铃Flutter API集成:双向音频问题咨询

Flutter集成Google电池版门铃API:音频发送失败问题解决

核心问题:a=recvonly的影响

SDP Offer里的a=recvonly字段明确指定当前端的媒体流方向为仅接收,这就是你无法向门铃发送音频流的直接原因——这个约束会阻止设备向对端推送任何媒体流,包括麦克风音频。

你的代码问题

你启用本地音频轨道并添加到PeerConnection的操作本身没有语法错误,但在a=recvonly的约束下,这些操作无法生效,因为SDP的媒体方向优先级高于轨道启用状态。

可行的解决步骤

  • 确认设备/API支持双向音频:先查阅Google电池版门铃的官方文档,确认该型号是否支持接收音频(部分入门款仅支持单向通话),以及API是否允许发起双向媒体会话。
  • 修改SDP的媒体方向:如果API允许自定义SDP,在创建Offer后手动修改SDP内容,把音频部分的a=recvonly替换为a=sendrecv(双向收发),再设置为本地描述:
var offer = await _peerConnection!.createOffer();
// 替换音频流的方向约束
var modifiedSdp = offer.sdp?.replaceAll('a=recvonly', 'a=sendrecv');
if (modifiedSdp != null) {
  await _peerConnection!.setLocalDescription(
    RTCSessionDescription(modifiedSdp, offer.type)
  );
}
  • 检查权限与配置:确保Flutter应用已获取麦克风权限,Android端在AndroidManifest.xml添加<uses-permission android:name="android.permission.RECORD_AUDIO"/>,iOS端在Info.plist添加NSMicrophoneUsageDescription;同时确认PeerConnection初始化时的媒体约束允许发送音频。
  • 排查API会话初始化参数:如果是通过Google的API初始化媒体会话,检查是否有参数可以指定媒体方向为双向,比如在请求视频流的接口中加入双向音频的标识。

内容的提问来源于stack exchange,提问作者Amila Ranatunga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:45:59