Failed to set remote answer sdp: The order of m-lines in answer doesn't match order in offer
在设置 setRemoteDescription时可能会出现 Failed to set remote answer sdp: The order of m-lines in answer doesn’t match order in offer. Rejecting answer.这个问题。
大概说一下sdp:
m-lines:sdp中媒体描述,比如video、audio,可能有多个。
媒体描述(m=)后面可以跟任意数量的 a= 字段,对媒体描述进行扩展。
具体可以自行搜索WebRTC sdp 协议。
出现这问题的原因可能是:
1、offer sdp中m=xxx和answer sdp中m=xxx顺序不对,大概意思就是 offer sdp 中比如第一个顺序是m=video,但是answer sdp 中第一个是m=audio ;
2、offer sdp中m=xxx和answer sdp中m=xxx数量不一样或不一致。
第二种情况不做过多阐述,可以很直接的看出来。
重点看一下第一种情况:
offer sdp | answer sdp |
---|---|
![]() |
![]() |
这里就可以看出来在offer sdp 和 anser sdp 中 m=video 和 m=video 是反的。所以要调换一下answer sdp 中 m=video 和 m=video 的顺序,保证和 answer sdp 一致。 |
调换时,不能单调换 m= 这一行,一段完整的是一个 m= 开始,到另一个 m= 开始(或结束)才是一个完整的。
贴一下示例代码:
/**
* 转换AnswerSdp
* @param offerSdp offerSdp:创建offer时生成的sdp
* @param answerSdp answerSdp:网络请求srs服务器返回的sdp
* @return 转换后的AnswerSdp
*/
private fu