WebRTC错误[1]Failed to set remote answer sdp: Called in wrong state: stable

WebRTC错误[1]Failed to set remote answer sdp: Called in wrong state: stable

程序之美

WebRTC是近年来发展比较好的开源代码集群。是web长期开源开发的一个新启元,是近年来Web开发的最重要创新。WebRTC允许Web开发者不需要复杂的代码,仅通过调用几个简单的接口就可以实现在web应用中视频聊天或者点对点数据传输。

WebRTC目前支持Chrome、Firefox和Opera,后续会支持更多的浏览器,它有能力达到数十亿的设备。不仅仅在浏览器,在移动平台,比如Android或者IOS,WebRTC也丝毫不逊色,允许本地和web应用间相互协作。

WebRTC虽然使用起来比较简单,但是如果不按照流程接口调用,一样会出现很多意向不到的问题,因为WebRTC的代码架构比较复杂和庞大,出现问题后进行排查难度比较大,故而,根据使用过程中的进行整理,希望收益于自己,帮助于别人。

引入WebRTC

对于Android studio工程引入非常简单,仅需加入依赖包就可以了,在build.gradle中加入:

dependencies {
	implementation 'org.webrtc:google-webrtc:1.0.20723'
}

加入相应的权限:

<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

错误1:

SdpObserver: Failed to set remote answer sdp: Called in wrong state: stable

解决方案:
区分清楚是本地的PeerConnection,还是对方的PeerConnection
本地的和对方的调用流程是不一样的。

Failed to set local answer sdp: Failed to apply the description for m= section with mid=‘audio’: Offerer must use actpass value or current negotiated role for setup attribute.

猜你喜欢

转载自blog.csdn.net/hnjzfwy/article/details/120911706