本发明专利技术公开了一种解决webrtc网络切换导致断流的方法,包括以下步骤:S1PeerConnection对象的创建:通过CreatePeerConnection方法创建对象;S2CreatePeerConnection方法的实现;S3创建RtcEventLog对象:RtcEventLog对象的创建直接依赖于工厂对象RtcEventLogFactory;S4创建Call对象;Call对象的创建直接依赖于工厂对象CallFactory;S5PeerConnection构造和初始化,通过该方案,有效解决了客户端网络变更带来的拉流丢失问题,同时在复杂网络场景下,能够更即时快速地感知网络变动,快速响应,提高了用户体验。户体验。户体验。
【技术实现步骤摘要】
一种解决webrtc网络切换导致断流的方法
[0001]
[0002]本专利技术涉及电子信息
,具体为一种解决webrtc网络切换导致断流的方法。
[0003]
技术介绍
[0004]在即时通信视频聊天架构中,客户端使用谷歌开源的webrtc sdk,服务端使用开源的webrtc sfu服务端kurento中。当两个客户端进行视频聊天时,当一个客户端切换网络,从wifi切到移动网络时会涉及到ip地址切换,此时该客户端无法拉到对方的流,导致显示黑屏,但本机能继续推流,对方也能拉到流。
[0005]
技术实现思路
[0006]为了解决上述问题,本专利技术的目的在于提供一种解决webrtc网络切换导致断流的方法。
[0007]为实现上述目的,本专利技术提供如下技术方案:一种解决webrtc网络切换导致断流的方法,包括以下步骤:(S1)PeerConnection对象的创建:通过CreatePeerConnection方法创建对象;(S2)CreatePeerConnection方法的实现:CreatePeerConnection方法最终返回给应用层的是PeerConnectionProxy对象,而非PeerConnection对象;(S3)创建RtcEventLog对象:RtcEventLog对象的创建直接依赖于工厂对象RtcEventLogFactory;(S4)创建Call对象;Call对象的创建直接依赖于工厂对象CallFactory;(S5)PeerConnection构造和初始化:PeerConnection的构造无非就是给成员赋值。
[0008]2.根据权利要求1所述的一种解决webrtc网络切换导致断流的方法,其特征在于:所述步骤(1)中PeerConnection对象的创建方法包括以下步骤;(1)RTCConfiguration参数表征PeerConnection的全局配置项,全局配置项是提供给WebRTC内部使用的参数信息,可以通过参数来控制WebRTC的内部逻辑、行为方式;(2)PeerConnectionDependencies参数表征PeerConnection的依赖项,依赖定义了由用户提供的可执行代码,用于执行用户定义的逻辑,其中最重要的就是PeerConnectionObserver,是PeerConnection的事件回调,应用层通过实现这些回调方法来作出自己想要实现的逻辑;进一步地,所述步骤(2)中CreatePeerConnection实现方法包括以下步骤:(1)创建证书生成器RTCCertificateGenerator;
(2)创建端口分配器PortAllocator,PortAllocator需要在网络线程中创建;(3)创建ICE传输工厂;(4)在网络线程上执行PortAllocator.SetNetworkIgnoreMask方法,使得端口分配器在进行操作时忽略特定类型的网络,默认情况network_ignore_mask为ADAPTER_TYPE_LOOPBACK,也即默认情况下忽略回环地址,其中网络类型有如下几类: ADAPTER_TYPE_ETHERNET:以太网,DAPTER_TYPE_WIFI:无线WIFI网络,ADAPTER_TYPE_CELLULAR:蜂窝网络(2g,3g,4g,5g),ADAPTER_TYPE_VPN:VPN,ADAPTER_TYPE_LOOPBACK:回环地址;(5)在工作线程上调用PeerConnectionFactory.CreateRtcEventLog_w来创建RtcEventLog对象;(6)在工作线程上调用PeerConnectionFactory.CreateCall_w创建Call对象;(7)构造PeerConnection对象,传入之前创建的RtcEventLog和Call对象;(8)在构造PeerConnection对象与初始化PeerConnection对象之间塞入测试代码;(9)初始化PeerConnection对象,外部传入的全局配置参数和依赖参数用来初始化PeerConnection;(10)创建并返回PeerConnectionProxy对象;进一步地,所述步骤S3中创建RtcEventLog对象方法包括以下步骤:(1)RtcEventLogFactory在创建PeerConnectionFactory时被创建出来,并被PeerConnectionFactory持有;(2)RtcEventLog对象在创建PeerConnection时被创建出来,并被PeerConnection持有;(3)PeerConnection持有RtcEventLog类,通过RtcEventLog实现并对外暴露运行事件日志系统、记录事件日志、停止事件日志系统的几个接;进一步地,所述步骤4中创建Call对象方法包括以下步骤:(1)CallFactory在创建PeerConnectionFactory时被创建出来,并被PeerConnectionFactory持有;(2)Call对象在创建PeerConnection时被创建出来,并被PeerConnection持有;(3)PeerConnection持有Call,并利用Call对应用层提供了发送码率设置(包含最大码率、最小码率、初始码率,初始码率作为编码器的初始参数以及带宽估计的先验值);提供获取传输统计数据途径(包含估算的可用发送带宽、估算的可用接收带宽、平滑发送引入的延迟、RTT估计值、累计的最大填充bit);提供获取所有发送的数据包回调;另外其还持有PacketReceiver对象,因此,所有接收到RTP/RTCP数据包,也将经过Call;(4)Call对象可以包含多个发送/接收流,且这些流对应同一个远端端点,并共享码率估计等。其对内部还提供了其他重要的功能,最重要的莫过于创建AudioReceiveStream、AudioSendStream、VideoSendStream、VideoReceiveStream的功能;进一步地,所述步骤5中PeerConnection构造和初始化方法包括以下步骤:(1)确保初始化是在信令线程中,检查全局参数配置的有效性,依赖参数PortAllocator和PeerConnectionObserver不可为空;(2)处理STUN server和TURN server,解析并获取stun_servers和turn_servers;
(3)给所有的turn_server配置日志id,给stun_servers和turn_servers进行端口分配器的初始化;(4)通知STUN_SERVER和TURN_SERVER被使用;(5)发送IPV4/IPv6状态;(6)创建64位有符号整型会话id;(7)填充JSEP传输控制的参数,并创建JsepTransportController,关联JsepTransportController的信号与PeerConnection的槽方法;(8)创建JSEP的参数结构体JsepTransportController::Confi本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种解决webrtc网络切换导致断流的方法,其特征在于。包括以下步骤:(S1)PeerConnection对象的创建:通过CreatePeerConnection方法创建对象;(S2)CreatePeerConnection方法的实现:CreatePeerConnection方法最终返回给应用层的是PeerConnectionProxy对象,而非PeerConnection对象;(S3)创建RtcEventLog对象:RtcEventLog对象的创建直接依赖于工厂对象RtcEventLogFactory;(S4)创建Call对象;Call对象的创建直接依赖于工厂对象CallFactory;(S5)PeerConnection构造和初始化:PeerConnection的构造无非就是给成员赋值。2.根据权利要求1所述的一种解决webrtc网络切换导致断流的方法,其特征在于,所述步骤(S1)中PeerConnection对象的创建方法包括以下步骤;(1)RTCConfiguration参数表征PeerConnection的全局配置项,全局配置项是提供给WebRTC内部使用的参数信息,可以通过参数来控制WebRTC的内部逻辑、行为方式;(2)PeerConnectionDependencies参数表征PeerConnection的依赖项,依赖定义了由用户提供的可执行代码,用于执行用户定义的逻辑,其中最重要的就是PeerConnectionObserver,是PeerConnection的事件回调,应用层通过实现这些回调方法来作出自己想要实现的逻辑。3.根据权利要求1所述的一种解决webrtc网络切换导致断流的方法,其特征在于,所述步骤(S2)中CreatePeerConnection实现方法包括以下步骤:(1)创建证书生成器RTCCertificateGenerator;(2)创建端口分配器PortAllocator,PortAllocator需要在网络线程中创建;(3)创建ICE传输工厂;(4)在网络线程上执行PortAllocator.SetNetworkIgnoreMask方法,使得端口分配器在进行操作时忽略特定类型的网络,默认情况network_ignore_mask为ADAPTER_TYPE_LOOPBACK,也即默认情况下忽略回环地址,其中网络类型有如下几类: ADAPTER_TYPE_ETHERNET:以太网,DAPTER_TYPE_WIFI:无线WIFI网络,ADA...
【专利技术属性】
技术研发人员:吴海霖,
申请(专利权)人:泉州砾鹰石科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。