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

使用自有SIP服务器通话已接通但无声音问题求助

SIP通话无声音问题排查与解决方案

使用Linphone免费服务(sip.linphone.org)时,通话可正常接通,双方能正常听见彼此并交流;但使用自有SIP服务器及凭证时,通话虽能发起并接通,却出现无声音的情况,无法听见对方,推测是媒体数据包发送问题,寻求解决方案。

测试场景:Android向iOS发起通话,使用Linphone服务器及凭证时通话功能正常,使用自有SIP服务器及凭证则无法正常发声。


相关代码

SIP初始化代码

InitData iniData = InitData();
iniData.license = "...license-credentials...";
iniData.logLevelFile = LogLevel.stack;
iniData.logLevelIde = LogLevel.stack;
iniData.enableCallKit = true;
iniData.enablePushKit = false;
iniData.unregOnDestroy = false;

账号连接服务器代码

AccountModel account = AccountModel(
  expireTime: 36000,
  sipExtension: ext,
  sipPassword: decryptPassword(sipPassword!),
  sipServer: sipServer, 
); 
account.ringTonePath = await writeAssetAndGetFilePath("ringtone.mp3");
account.transport = SipTransport.tls;
account.secureMedia = SecureMedia.DtlsSrtp;
account.tlsUseSipScheme = true;
account.aCodecs = [ 
  // SiprixVoipSdk.kAudioCodecOpus,
  SiprixVoipSdk.kAudioCodecPCMU,
  SiprixVoipSdk.kAudioCodecPCMA, 
  // SiprixVoipSdk.kAudioCodecDTMF, 
];

发起通话代码

serviceLocator<AppCallsModel>().invite(destination)

排查与解决方案

  • 核对媒体安全协议配置
    当前代码设置了SecureMedia.DtlsSrtp,需确认自有SIP服务器是否启用并支持DTLS-SRTP加密。若服务器未配置该协议,将secureMedia改为SecureMedia.None再测试,或调整为服务器兼容的安全策略。

  • 调整音频编解码器
    现有代码仅启用PCMU、PCMA,部分服务器默认优先支持Opus编解码器。尝试取消SiprixVoipSdk.kAudioCodecOpus的注释,注释PCMU/PCMA后测试,同时确认自有服务器支持所选编解码器。

  • 检查网络与防火墙设置
    媒体RTP数据包通常通过UDP传输,需确认自有服务器及客户端网络未阻塞UDP端口(常规范围10000-20000)。若使用TLS传输,检查服务器SSL证书是否有效,客户端是否信任该证书。

  • 分析调试日志
    从调试日志中重点查看SDP协商结果、DTLS握手过程、RTP数据包收发状态,确认是否存在协商失败、端口映射错误或加密握手异常的情况。

  • 验证账号传输协议匹配
    确认account.transport = SipTransport.tls与自有服务器的SIP传输协议一致,若服务器使用UDP或TCP,需修改为对应枚举值;同时检查sipServer地址是否包含正确端口(如TLS默认5061)。

内容的提问来源于stack exchange,提问作者Sreerag km

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 13:25:04