一种WebRTCSimulcast的自适应调节方法和装置与流程

专利检索2022-05-10  273


本发明涉及计算机通信技术领域,具体涉及一种WebRTC Simulcast的自适应调节方法和一种WebRTC Simulcast的自适应调节装置。

背景技术

在一个或多个WebRTC(Web Real-Time Communication,网页即时通信)用户参与的视频直播系统中,往往存在少部分用户网络质量较差的情况。通常,为保证该部分用户仍能播放观看,一般会降低发布方的视频码流,由此,无论用户网络的好坏都可以流畅观看视频,但是该方案会导致大部分网络好的用户观看到的视频质量被少数网络差的用户给拖累。

针对这种情况,目前一般采用如下三种方案:其一,使用服务端降码,针对这个网络较差的用户在服务端进行降码处理,但该方案会增加复杂度,增加时延;其二,采用SVC(Scalable Video CODEC,可伸缩视频编解码)技术,该技术在服务器上根据客户端网络情况进行分层转发,但该技术较为复杂,很难做到各终端统一使用;其三,采用Simulcast(联播)技术,所谓Simulcast技术就是发布方同时发布几路不同码流的视频到服务器,服务器根据接收方的网络状态转发相应的码流给接收用户,但该方案存在明显的缺陷,具体为播放端会受到上行客户端的影响,对于上行客户端来说,因为某种原因,Simulcast层数减少为一层时,如果没有相应处理,此时播放端就接收不到视频流,需要用户手工切换,或者在播放端进行对码流监控,当码流丢失的时候,重新去服务器请求码流,但这样会明显感觉到码流的卡顿,影响用户体验。



技术实现要素:

本发明旨在至少在一定程度上解决上述技术中的技术问题之一。为此,本发明的一个目的在于提出一种WebRTC Simulcast的自适应调节方法,能够兼顾上行推流用户和下行播放用户,能够在网络波动的情况下保证播放用户无感知的切换码流,从而提高播放用户的观看体验。

本发明的第二个目的在于提出一种WebRTC Simulcast的自适应调节装置。

为达到上述目的,本发明第一方面实施例提出了一种WebRTC Simulcast的自适应调节方法,包括以下步骤:获取WebRtc客户端发布方的SDP(Session Description Protocol,会话描述协议)信息和RTP(Real-time Transport Protocol,实时传输协议)数据包;根据所述SDP信息得到所述WebRtc客户端发布方的Simulcast层数,并对应每层所述Simulcast建立Session(时域);根据所述RTP数据包对所述Session进行排序;获取所述WebRtc客户端接收方的请求码流信息;根据所述请求码流信息和排序后的所述Session向所述WebRtc客户端接收方发送对应码流。

根据本发明实施例提出的WebRTC Simulcast的自适应调节方法,通过获取获取WebRtc客户端发布方的SDP信息,得到WebRtc客户端发布方的Simulcast层数,并对应每层Simulcast建立Session,并可根据RTP数据包对Session进行排序,最后可获取WebRtc客户端接收方的请求码流信息,以结合排序后的Session向WebRtc客户端接收方发送对应码流,由此,能够兼顾上行推流用户和下行播放用户,能够在网络波动的情况下保证播放用户无感知的切换码流,从而提高播放用户的观看体验。

另外,根据本发明上述实施例提出的WebRTC Simulcast的自适应调节方法还可以具有如下附加的技术特征:

根据本发明的一个实施例,所述SDP信息包括音视频信息和Simulcast层数。

根据本发明的一个实施例,还根据所述SDP信息得到每层所述Simulcast的SSRC(同步信源)。

根据本发明的一个实施例,所述Session包括每层所述Simulcast的SSRC,以及所述RTP数据包的数量和包信息。

根据本发明的一个实施例,根据所述RTP数据包对所述Session进行排序,包括以下步骤:根据所述RTP数据包的SSRC确定其所在的Simulcast层,并对所在Simulcast层的Session进行更新;判断每层所述Simulcast的RTP数据包的传输时间是否超过阈值;若超过所述阈值,则根据更新后的所述Session对每层所述Simulcast进行排序。

根据本发明的一个实施例,根据所述请求码流信息和排序后的所述Session向所述WebRtc客户端接收方发送对应码流,包括以下步骤:若所述Simulcast的排序发生变化,则向所述WebRtc客户端接收方发送信息帧请求;在所述信息帧请求到达所述WebRtc客户端接收方发时,根据更新后的所述Session对每层所述Simulcast中的RTP数据包的时间戳进行更新,以自动切换发送至所述WebRtc客户端接收方的码流。

为达到上述目的,本发明第二方面实施例提出了一种WebRTC Simulcast的自适应调节装置,包括:第一获取模块,所述第一获取模块用于获取WebRtc客户端发布方的SDP信息和RTP数据包;第一处理模块,所述第一处理模块用于根据所述SDP信息得到所述WebRtc客户端发布方的Simulcast层数,并对应每层所述Simulcast建立Session;第二处理模块,所述第二处理模块用于根据所述RTP数据包对所述Session进行排序;第二获取模块,所述第二获取模块用于获取所述WebRtc客户端接收方的请求码流信息;第三处理模块,所述第三处理模块用于根据所述请求码流信息和排序后的所述Session向所述WebRtc客户端接收方发送对应码流。

根据本发明实施例提出的WebRTC Simulcast的自适应调节装置,通过第一获取模块获取获取WebRtc客户端发布方的SDP信息,并通过第一处理模块得到WebRtc客户端发布方的Simulcast层数,并通过第二处理模块对应每层Simulcast建立Session,并可根据RTP数据包对Session进行排序,最后可通过第二获取模块获取WebRtc客户端接收方的请求码流信息,以通过第三处理模块结合排序后的Session向WebRtc客户端接收方发送对应码流,由此,能够兼顾上行推流用户和下行播放用户,能够在网络波动的情况下保证播放用户无感知的切换码流,从而提高播放用户的观看体验。

为达到上述目的,本发明第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现根据第一方面实施例中任一项所述的WebRTC Simulcast的自适应调节方法。

根据本发明实施例提出的计算机设备,通过处理器执行计算机程序时,实现第一方面实施例中任一项的WebRTC Simulcast的自适应调节方法,由此,能够兼顾上行推流用户和下行播放用户,能够在网络波动的情况下保证播放用户无感知的切换码流,从而提高播放用户的观看体验。

为达到上述目的,本发明第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据第一方面实施例中任一项所述的WebRTC Simulcast的自适应调节方法。

根据本发明实施例提出的非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,实现第一方面实施例中任一项的WebRTC Simulcast的自适应调节方法,由此,能够兼顾上行推流用户和下行播放用户,能够在网络波动的情况下保证播放用户无感知的切换码流,从而提高播放用户的观看体验。

附图说明

图1为本发明实施例的WebRTC Simulcast的自适应调节方法的流程图;

图2为本发明一个实施例的Simulcast的自适应调节场景示意图;

图3为本发明实施例的WebRTC Simulcast的自适应调节装置的方框示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例的WebRTC Simulcast的自适应调节方法的流程图。

如图1所示,本发明实施例的WebRTC Simulcast的自适应调节方法,包括以下步骤:

S1,获取WebRtc客户端发布方的SDP信息和RTP数据包。

具体地,可与WebRtc客户端发布方建立peerConnection,以与WebRtc客户端发布方交换SDP信息。其中,SDP信息包括音视频信息和Simulcast层数,具体地,音视频信息包括声道、格式、采样率、视频格式等信息。

S2,根据SDP信息得到WebRtc客户端发布方的Simulcast层数,并对应每层Simulcast建立Session。

具体地,可先根据SDP信息判断WebRtc客户端发布方是否具有Simulcast功能,若有,则根据SDP信息提取WebRtc客户端发布方的Simulcast层数,并可根据SDP信息得到每层Simulcast的SSRC,最后可对应每层Simulcast建立Session。其中,Session可包括每层Simulcast的SSRC,以及接收到的RTP数据包的数量和包信息,具体地,RTP数据包的包信息包括RTP数据包的Seq(序号)、Timesteamp(时间戳)。

S3,根据RTP数据包对Session进行排序。

具体地,可根据RTP数据包的SSRC确定其所在的Simulcast层,并对所在Simulcast层的Session进行更新,并可判断每层Simulcast的RTP数据包的传输时间是否超过阈值,若超过阈值,则根据更新后的Session对每层Simulcast进行排序。

更具体地,可对所在Simulcast层Session中接收到的RTP数据包的数量,以及RTP数据包的包信息,即RTP数据包的Seq(序号)、Timestamp(时间戳)进行更新;进一步地,可判断每层Simulcast的RTP数据包的传输时间是否超过阈值,若超过阈值,则可根据每层Simulcast接收到的RTP数据包的数量对Simulcast进行排序,例如可按照每层Simulcast接收到的RTP数据包的数量从大到小依次排序,其中,接收到的RTP数据包的数量最大的Simulcast可作为主码流,其次可为辅码流,再次可为第三码流,依次类推。

S4,获取WebRtc客户端接收方的请求码流信息。

具体地,WebRtc客户端接收方发送请求码流信息,包括请求码流的ID(Identity Document,身份标识),以及请求码流的类别,即主码流、辅码流或第三码流等。

S5,根据请求码流信息和排序后的Session向WebRtc客户端接收方发送对应码流。

具体地,若Simulcast的排序发生变化,则向WebRtc客户端接收方发送信息帧请求,并在信息帧请求到达WebRtc客户端接收方发时,根据更新后的Session对每层Simulcast中的RTP数据包的Timestamp(时间戳)和Seq(序号)进行更新,以自动切换发送至WebRtc客户端接收方的码流。

更具体地,当WebRtc客户端发布方因网络或自身编码处理能力等方面导致发布码流层数,即Simulcast层数发生变化的时候,可根据步骤S3判断Simulcast的排序是否发生变化,并可在Simulcast的排序发生变化时,向WebRtc客户端接收方发送信息帧请求,即I帧请求,并可在信息帧请求,即I帧请求到达WebRtc客户端接收方发时,可根据更新后的Session对每层Simulcast中的RTP数据包的Timestamp(时间戳)和Seq(序号)进行更新,以自动切换发送至WebRtc客户端接收方的码流,并保证发送至WebRtc客户端接收方的码流的Timestamp(时间戳)和Seq(序号)的连续性。

其中,需要说明的是,WebRtc客户端发布方和WebRtc客户端接收方是可以相互转换的,下面将结合图2对其进行阐述。

如图2所示,可设定四个WebRtc客户端,即Webrtc Client A、Webrtc Client B、Webrtc Client C、Webrtc Client D,其中,当Webrtc Client A和Webrtc Client B按照Webrtc协议使用Simulcast方式向服务器,即Webrtc Server发送视频流时,Webrtc Client A和Webrtc Client B可作为WebRtc客户端发布方,并且每个推送的视频流可根据网络变化,Simulcast层数进行动态变化,Webrtc Client C和Webrtc Client D可订阅接收Webrtc Client A和Webrtc Client B发送的视频流,Webrtc Client C和Webrtc Client D可作为WebRtc客户端接收方;反之,当Webrtc Client C和Webrtc Client D发送视频流时,Webrtc Client C和Webrtc Client D可作为WebRtc客户端发布方,当Webrtc Client A和Webrtc Client B订阅接收视频流时,Webrtc Client A和Webrtc Client B可作为WebRtc客户端接收方。其中,服务器,即Webrtc Server可采用SFU进行码流动态调节。

根据本发明实施例提出的WebRTC Simulcast的自适应调节方法,通过获取获取WebRtc客户端发布方的SDP信息,得到WebRtc客户端发布方的Simulcast层数,并对应每层Simulcast建立Session,并可根据RTP数据包对Session进行排序,最后可获取WebRtc客户端接收方的请求码流信息,以结合排序后的Session向WebRtc客户端接收方发送对应码流,由此,能够兼顾上行推流用户和下行播放用户,能够在网络波动的情况下保证播放用户无感知的切换码流,从而提高播放用户的观看体验。

对应上述实施例,本发明还提出了一种WebRTC Simulcast的自适应调节装置。

如图3所示,本发明实施例的WebRTC Simulcast的自适应调节装置,包括第一获取模块10、第一处理模块20、第二处理模块30、第二获取模块40和第三处理模块50。其中,第一获取模块10用于获取WebRtc客户端发布方的SDP信息和RTP数据包;第一处理模块20用于根据SDP信息得到WebRtc客户端发布方的Simulcast层数,并对应每层Simulcast建立Session;第二处理模块30用于根据RTP数据包对Session进行排序;第二获取模块40用于获取WebRtc客户端接收方的请求码流信息;第三处理模块50用于根据请求码流信息和排序后的Session向WebRtc客户端接收方发送对应码流。

在本发明的一个实施例中,第一获取模块10可与WebRtc客户端发布方建立peerConnection,以与WebRtc客户端发布方交换SDP信息。其中,SDP信息包括音视频信息和Simulcast层数,具体地,音视频信息包括声道、格式、采样率、视频格式等信息。

在本发明的一个实施例中,第一处理模块20可先根据SDP信息判断WebRtc客户端发布方是否具有Simulcast功能,若有,则根据SDP信息提取WebRtc客户端发布方的Simulcast层数,并可根据SDP信息得到每层Simulcast的SSRC,最后可对应每层Simulcast建立Session。其中,Session可包括每层Simulcast的SSRC,以及接收到的RTP数据包的数量和包信息,具体地,RTP数据包的包信息包括RTP数据包的Seq(序号)、Timesteamp(时间戳)。

在本发明的一个实施例中,第二处理模块30可根据RTP数据包的SSRC确定其所在的Simulcast层,并对所在Simulcast层的Session进行更新,并可判断每层Simulcast的RTP数据包的传输时间是否超过阈值,若超过阈值,则根据更新后的Session对每层Simulcast进行排序。

更具体地,第二处理模块30可对所在Simulcast层Session中接收到的RTP数据包的数量,以及RTP数据包的包信息,即RTP数据包的Seq(序号)、Timesteamp(时间戳)进行更新;进一步地,可判断每层Simulcast的RTP数据包的传输时间是否超过阈值,若超过阈值,则可根据每层Simulcast接收到的RTP数据包的数量对Simulcast进行排序,例如可按照每层Simulcast接收到的RTP数据包的数量从大到小依次排序,其中,接收到的RTP数据包的数量最大的Simulcast可作为主码流,其次可为辅码流,再次可为第三码流,依次类推。

在本发明的一个实施例中,第二获取模块40可接收WebRtc客户端接收方发送请求码流信息,包括请求码流的ID,以及请求码流的类别,即主码流、辅码流或第三码流等。

在本发明的一个实施例中,第三处理模块50可用于,若Simulcast的排序发生变化,则向WebRtc客户端接收方发送信息帧请求,并在信息帧请求到达WebRtc客户端接收方发时,根据更新后的Session对每层Simulcast中的RTP数据包的Timestamp(时间戳)和Seq(序号)进行更新,以自动切换发送至WebRtc客户端接收方的码流。

更具体地,第三处理模块50可用于,当WebRtc客户端发布方因网络或自身编码处理能力等方面导致发布码流层数,即Simulcast层数发生变化的时候,可根据步骤S3判断Simulcast的排序是否发生变化,并可在Simulcast的排序发生变化时,向WebRtc客户端接收方发送信息帧请求,即I帧请求,并可在信息帧请求,即I帧请求到达WebRtc客户端接收方发时,可根据更新后的Session对每层Simulcast中的RTP数据包的Timestamp(时间戳)和Seq(序号)进行更新,以自动切换发送至WebRtc客户端接收方的码流,并保证发送至WebRtc客户端接收方的码流的Timestamp(时间戳)和Seq(序号)的连续性。

其中,需要说明的是,WebRtc客户端发布方和WebRtc客户端接收方是可以相互转换的,下面将结合图2对其进行阐述。

如图2所示,可设定四个WebRtc客户端,即Webrtc Client A、Webrtc Client B、Webrtc Client C、Webrtc Client D,其中,当Webrtc Client A和Webrtc Client B按照Webrtc协议使用Simulcast方式向服务器,即Webrtc Server发送视频流时,Webrtc Client A和Webrtc Client B可作为WebRtc客户端发布方,并且每个推送的视频流可根据网络变化,Simulcast层数进行动态变化,Webrtc Client C和Webrtc Client D可订阅接收Webrtc Client A和Webrtc Client B发送的视频流,Webrtc Client C和Webrtc Client D可作为WebRtc客户端接收方;反之,当Webrtc Client C和Webrtc Client D发送视频流时,Webrtc Client C和Webrtc Client D可作为WebRtc客户端发布方,当Webrtc Client A和Webrtc Client B订阅接收视频流时,Webrtc Client A和Webrtc Client B可作为WebRtc客户端接收方。其中,服务器,即Webrtc Server可采用SFU进行码流动态调节。

根据本发明实施例提出的WebRTC Simulcast的自适应调节装置,通过第一获取模块获取获取WebRtc客户端发布方的SDP信息,并通过第一处理模块得到WebRtc客户端发布方的Simulcast层数,并通过第二处理模块对应每层Simulcast建立Session,并可根据RTP数据包对Session进行排序,最后可通过第二获取模块获取WebRtc客户端接收方的请求码流信息,以通过第三处理模块结合排序后的Session向WebRtc客户端接收方发送对应码流,由此,能够兼顾上行推流用户和下行播放用户,能够在网络波动的情况下保证播放用户无感知的切换码流,从而提高播放用户的观看体验。

对应上述实施例,本发明还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现上述实施例的WebRTC Simulcast的自适应调节方法。

根据本发明实施例提出的计算机设备,通过处理器执行计算机程序时,实现上述实施例的WebRTC Simulcast的自适应调节方法,由此,能够兼顾上行推流用户和下行播放用户,能够在网络波动的情况下保证播放用户无感知的切换码流,从而提高播放用户的观看体验。

为达到上述目的,本发明还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例的WebRTC Simulcast的自适应调节方法。

根据本发明实施例提出的非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,实现上述实施例的WebRTC Simulcast的自适应调节方法,由此,能够兼顾上行推流用户和下行播放用户,能够在网络波动的情况下保证播放用户无感知的切换码流,从而提高播放用户的观看体验。

在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

转载请注明原文地址:https://win.8miu.com/read-55.html

最新回复(0)