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

如何将远端Peer SDP设为本地描述及解决信令状态无法从stable转answer的问题

问题:如何将远端Peer的SDP设置为本地描述,以及如何将信令状态从stable切换为answer?

执行answer_sdp = RTCSessionDescription(sdp, type_value)尝试设置远端Peer的offer后,信令状态始终停留在stable,无法切换到对应状态,调用await pc.setRemoteDescription(answer_sdp)时触发如下错误:

File "/home/pi/Desktop/webrtc04.py", line 237, in <module>
    asyncio.run(main())    
File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
File "/home/pi/Desktop/webrtc04.py", line 217, in main
    await pc.setRemoteDescription(answer_sdp)
File "/home/pi/.local/lib/python3.9/site-packages/aiortc/rtcpeerconnection.py", line 827, in setRemoteDescription
    self.__validate_description(description, is_local=False)
File "/home/pi/.local/lib/python3.9/site-packages/aiortc/rtcpeerconnection.py", line 1253, in __validate_description
    raise InvalidStateError(
aiortc.exceptions.InvalidStateError: Cannot handle answer in signaling state "stable"

添加状态检查后,输出始终显示:

Invalid signaling state: stable

原因分析

核心问题是SDP类型与信令状态不匹配:WebRTC信令状态流转有严格的规则,stable状态表示当前没有未完成的信令交互,此时直接传入answer类型的SDP不符合协议逻辑——你大概率把远端发送的offer错误封装成了answer类型的RTCSessionDescription,导致状态校验失败。

解决方案

1. 修正SDP类型匹配

如果远端发送的是offer,必须创建对应类型的RTCSessionDescription,再调用setRemoteDescription接收:

# 确保type参数为"offer",与远端SDP类型一致
offer_sdp = RTCSessionDescription(sdp, "offer")
await pc.setRemoteDescription(offer_sdp)

接收offer后,本地才能生成并发送自己的answer:

# 生成本地answer
local_answer = await pc.createAnswer()
await pc.setLocalDescription(local_answer)
# 通过信令通道将local_answer发送给远端

2. 遵循信令状态流转逻辑

WebRTC信令状态的正常流转路径:

  • 初始状态:stable
  • 本地发起offer → 状态变为have-local-offer
  • 接收远端answer → 回到stable
  • 接收远端offer → 状态变为have-remote-offer
  • 本地发送answer → 回到stable
    必须严格按顺序操作,不能跳过步骤直接处理answer。

3. 排查代码中的类型错误

检查type_value变量的取值,确认它与远端实际发送的SDP类型完全一致。如果远端发的是offer,type_value绝对不能设为"answer"。


内容的提问来源于stack exchange,提问作者Moaz Azam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:11:02