CN117201466A - 一种视频会议场景下的丢包重传系统及其方法 - Google Patents

一种视频会议场景下的丢包重传系统及其方法 Download PDF

Info

Publication number
CN117201466A
CN117201466A CN202310982243.9A CN202310982243A CN117201466A CN 117201466 A CN117201466 A CN 117201466A CN 202310982243 A CN202310982243 A CN 202310982243A CN 117201466 A CN117201466 A CN 117201466A
Authority
CN
China
Prior art keywords
packet
rtp
queue
retransmission
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310982243.9A
Other languages
English (en)
Inventor
张志钦
孙飞
李雪俭
陶理文
张艳鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Institute of Technology of Xidian University
Original Assignee
Guangzhou Institute of Technology of Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Institute of Technology of Xidian University filed Critical Guangzhou Institute of Technology of Xidian University
Publication of CN117201466A publication Critical patent/CN117201466A/zh
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种视频会议场景下的丢包重传系统及其方法,属于视频通信技术领域,包括发送端和接收端,所述发送端包括视频输入模块、FEC冗余模块一、NACK发送模块和平滑传输模块一;所述接收端包括NACK接收模块、平滑传输模块二、FEC冗余模块二和视频输出模块;所述视频输入模块用于图像的采集和编码;所述视频输出模块用于图像的解码和播放。本发明可以复用原始通信终端的通道传输,为便于移植和扩展修改了终端的传输数据格式;通过根据网络状态动态设置重传次数和最大超时时间来综合调整丢包请求报文的发送策略;最终在重传包超时的情况下可以紧急发送关键帧重传请求,迅速在接收端获取关键帧并播放,提高弱网环境中的通信质量。

Description

一种视频会议场景下的丢包重传系统及其方法
技术领域
本发明属于视频通信技术领域,具体涉及一种视频会议场景下的丢包重传系统及其方法。
背景技术
目前,绝大多数实时音视频通信软件的都是基于RTP协议通过互联网进行音视频数据传输。由于通信环境和技术的限制,通信过程会存在丢包、网络抖动、时延及带宽不足等问题,进而造成对端视频卡顿、花屏甚至丢失连接等现象,严重影响通信双方的通话体验。
针对上述问题,主要有两种QOS策略:冗余编码和丢包重传。其中,丢包重传主要解决于网络带宽较低的丢包问题,提高弱网环境下的通信质量。
成都鼎桥通信技术有限公司在其专利“一种丢包重传方法和系统”(公开号:CN110768753A;申请号:CN 201810831740.8)公开了一种丢包重传方法和系统,主要包括:接收端设备向发送端设备发送丢包重传请求;发送端设备根据所述丢包重传请求,将相应的实时传输协议(RTP)重传包,通过RTP控制协议(RTCP)通道发送给所述接收端设备;当所述接收端设备在所述RTCP通道上接收到数据包,并判定该数据包为RTP重传包时,将该数据包放到相应的组帧队列中。采用本发明,可以提高数据传输效率和质量。
中移(杭州)信息技术有限公司在其专利“丢包重传方法、装置、系统与计算机可读存储介质”(公开号:CN 114938439 A;申请号:CN202210496537.6)公开了一种丢包重传方法、装置、系统与计算机可读存储介质,本发明根据待重传视频包的重传码率和待重传视频包对应的第二客户端的最大重传码率,将待重传视频包发送到第一客户端,避免重传码率过高进而降低丢包重传时视频的卡顿和延时,提高了丢包重传的实用性。
青岛海信宽带多媒体技术有限公司在其专利“一种RTP包丢包重传方法、装置及播放终端”(公开号:CN 114584844 A;申请号:CN202011380440.6)提供的RTP包丢包重传方法、装置及播放终端,增加播放终端向服务器发送丢包请求的频次,根据缓存队列的丢包比例动态调整向服务器发送丢包请求的时间,即实现非定时的向服务器发送丢包请求,以促进播放终端丢包请求命中服务器窗口期,进一步促使播放终端发送丢包请求命中服务器窗口期的命中率。
综上,在已有的丢包重传方法中,一般需要设定一个丢包重传的阈值时间,每隔一定的时间向发送端设备发送重传请求报文,防止频繁发送重传请求报文占用过多的带宽资源。同时当丢包时长超过阈值时直接放弃重传,避免长时间等待重传造成的视频延迟和卡顿现象,具体可总结为:
(1)目前使用的NACK重传技术需要对重传包进行单独标识,或使用独立的通道进行单独发送,或者需要对要重传的RTP包进行额外处理,例如在重传前对RTP包添加重传标志等,操作较为繁琐。
(2)通过RTCP协议通道发送丢包重传请求和接收重传包,会导致RTCP通道的数据量增加,在低带宽场景下,若需要重传连续的多个RTP包,可能对正常的RTP通道传输造成额外压力。
(3)当重传请求超时时,一般会清除丢包信息,放弃重传,开始传输后续的RTP包。这种操作带来的问题是:一旦通信过程中有关键帧的RTP包重传超时,会导致关键帧解码失败,进而导致至少一个GOP内所有帧解码失败,造成用户通信过程中视频的长时间卡顿。
发明内容
为解决现有技术中存在的上述问题,本发明提供了一种视频会议场景下的丢包重传系统及其方法,本发明主要解决Arm Cortex处理器的嵌入式平台中基于RTP/RTCP协议的视频通信在低带宽场景下的丢包问题,保证对端视频画面的完整性和连续性。
本发明的目的可以通过以下技术方案实现:
一种视频会议场景下的丢包重传系统,包括发送端和接收端,所述发送端包括视频输入模块、FEC冗余模块一、NACK发送模块和平滑传输模块一;所述接收端包括NACK接收模块、平滑传输模块二、FEC冗余模块二和视频输出模块;
所述视频输入模块,包括摄像头或桌面共享程序以及不同应用或软件的编码器,用于图像的采集和编码;
所述NACK发送模块,用于接收RTP包并添加序列号,发送RTP包并在本地缓存,接收并解析NACK报文,根据反馈报文重发RTP包;
所述NACK接收模块,用于接收网络RTP包并根据序列号排序,判断是否发生丢包并将丢包序号及时间戳加入丢包列表,构建丢包反馈报文并择机发送,将完整一帧的RTP包数据送往上层组帧解码并显示;
所述视频输出模块,用于完成图像的解码和播放工作。
作为本发明的一种优选技术方案,所述FEC冗余模块一,用于给切分后的RTP包按分组添加冗余包,并在一定丢包率范围内,将传输丢失的RTP包恢复出来。
作为本发明的一种优选技术方案,所述平滑传输模块一,用于定时定量从发送队列中取出RTP包并发送给远端,防止瞬时数据量过大造成网络冲击。
作为本发明的一种优选技术方案,所述平滑传输模块二,用于控制视频帧解码速度,防止视频播放时出现慢放快进现象影响用户观看体验。
作为本发明的一种优选技术方案,所述FEC冗余模块二,用于冗余恢复,通过解冗余按组恢复RTP包,随后将RTP包组帧获取到NAL数据。
一种视频会议场景下的丢包重传方法,所述方法包括以下步骤:
S1、图像采集和编码;
S2、RTP包添加冗余包;
S3、RTP包添加包序号并加入发送队列;
S4、定时定量从发送队列中取出RTP包并发送给远端;
S5、接收网络RTP包并根据序列号排序,判断是否发生丢包并将丢包序号及时间戳加入丢包列表,构建丢包反馈报文并择机发送,将完整一帧的RTP包数据送往上层组帧解码并显示;
S6、按照恒定速率从队列中取出一帧视频;
S7、进行冗余恢复;
S8、解码完成视频输出。
进一步地,所述图像采集和编码具体包括以下步骤:
S10、通过摄像头获取图像数据,设置获取视频图像的分辨率、帧率、和编码通道;
S11、判断是否捕获帧图像,若未捕获新一帧图像,则处理流程终止,若捕获到,则继续执行下一步骤;
S12、将视频采集到的视频帧虚拟地址和物理地址映射,转换为编码通道支持的YUV420SP格式图像,初始化编码码率、编码通道和参考帧数,将连续的视频帧图像送入编码器编码为ES流。
进一步地,所述RTP包添加包序号并加入发送队列具体包括以下步骤:
S21、添加包序号并加入发送队列:将上层传递的NALU数据切分RTP包,并在RTP包的拓展头部添加序号标志packet number,同时添加关键帧首包标识key frame,每收到一个新的RTP包packet number加一;
S22、缓存RTP包并定时维护本地缓存:将得到的RTP包和它的packet number成对地保存在该队列中,并按照从小到大排序;开启一个定时线程定期检查该关系队列中的RTP包缓存是否超出队列可容纳的最大数据量,如果超出最大数据量,则将最早缓存的一帧数据从队列中清除;
S23、接收并解析NACK报文、重发RTP包:接收NACK报文后,按照约定的协议格式进行解析,获取需要重传的RTP包的packet number;发送端NACK根据解析得到的packetnumber从本地缓存中寻找对应的RTP包序号,若找到指定的RTP包,将其插入发送队列头部优先发送;若未找到指定包序号,认为请求重传包已过期,返回等待接收新的NACK报文。
进一步地,所述步骤S5具体包括以下步骤:
S31、接收RTP包,排序并判断丢包:接收端每收到一个RTP包,利用其packetnumber和上一个正常收到的RTP包进行比较,若当前RTP包的packet number与上一个RTP包连续,表示未发生丢包,执行步骤S32;若当前RTP包的packet number大于上一个RTP包且二者不连续,表示发生了丢包,执行步骤S33;若当前RTP包的packet number小于上一个收到的RTP包序号,则进行重传包和过期包的判断,执行步骤S35;
S32、正常RTP包接收:若本次收到的RTP包连续,将该RTP包直接插入收包缓存队列末尾,检查该包是否为帧尾包:若是一帧的最后一个RTP包,则检查收包缓存队列中是否由一帧完整的数据,若有则直接送往上层模块组帧解码;否则执行步骤S31等待重传包,检查当前包是否为关键帧首包,若是则将当前包的packet number加入关键帧队列;
S33、更新丢包队列,快速重传:若本次接收包后发现发生了丢包,则将丢失RTP包的packet number和丢包发生时间加入丢包队列末尾,丢包队列记录请求重传次数,初始化为1,同时直接构建NACK报文发送给发送端请求重传;
S34、定期维护丢包队列,定时重传:接收端定时检查丢包队列,若队列不为空,则构建NACK报文请求重传,同时令RTP包的重传次数加一;若检查时间距丢包时间间隔已超过阈值或达到最大重传次数,则将该包的packet number从队列中清除,同时清除收包队列缓存中packet number小于该包的所有RTP包,清除关键帧队列中packet number小于该包的所有RTP包信息,执行步骤S36进行关键帧请求重传;
S35、重传包判断:若接收端当前收到的包的packet number小于上一个收到包的packet number,则检查丢包队列中是否存在相同的序号,若存在,表示当前包是重传包,则将其按packet number插入收包缓存队列,并将丢包队列中的对应序号及相关参数清除;若不存在,表明当前包之前已经收到一份或已经过期被清除,当前包是无效包,则直接将当前包丢弃;
S36、关键帧请求重传:若当前某几个RTP包的请求报文NACK已达到最大重发次数,或已经超时,则认为丢失未达的重传包已失效,清除该packet number和相关的RTP包;检查关键帧列表,寻找大于失效packet number的最小关键帧首包packet number,并从收包队列缓存中找到该关键帧的所有RTP包,若该关键帧数据完整,直接送到上层模块进行解码;否则,请求重传该关键帧中丢失未达的RTP包。
进一步地,所述解码完成视频输出具体包括以下步骤:接收下层NAL数据,还原为ES媒体流,经解码器解码后,将视频帧转换为YUV图像数据,通过图像处理系统的色彩空间转换、裁剪、调整大小,最后通过显示设备进行视频播放。
本发明的有益效果为:
(1)在NAL数据划分RTP包方面,通过在RTP包头部添加额外的扩展信息来为每个RTP包添加唯一标识,同时添加了关键帧标识用于关键帧请求重传的实现。
(2)在发送重传请求报文和接收重传包方面,重传请求报文复用了RTCP协议通道,而重传包直接通过RTP包传输通道进行发送,对原始通信链路压力小。
(3)在重传包超时解决方面,使用了关键帧请求重传技术,可以最大程度地在接收端恢复视频画面,提高用户的通信体验。
附图说明
为了便于本领域技术人员理解,下面结合附图对本发明作进一步的说明。
图1为本发明中实时视频传输系统的架构示意图;
图2为本发明中NACK发送模块的流程图;
图3为本发明中NACK接收模块的流程图。
具体实施方式
为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如后。
实施例1
请参阅图1-3,本发明提供一种视频会议场景下的丢包重传系统,包括发送端和接收端,所述发送端包括视频输入模块、FEC冗余模块一、NACK发送模块和平滑传输模块一;所述接收端包括NACK接收模块、平滑传输模块二、FEC冗余模块二和视频输出模块;
所述视频输入模块,包括摄像头或桌面共享程序以及不同应用或软件的编码器,用于图像的采集和编码,具体包括以下步骤:
S10、通过摄像头获取图像数据,设置获取视频图像的分辨率、帧率、和通道;
S11、判断是否捕获帧图像,若未捕获新一帧图像,则处理流程终止,若捕获到,则继续执行下一步骤;
S12、将视频采集到的视频帧虚拟地址和物理地址映射,转换为编码通道支持的YUV420SP格式图像,初始化编码码率、编码通道和参考帧数,将连续的视频帧图像送入编码器编码为ES流。
所述FEC冗余模块一,用于给切分后的RTP包按分组添加冗余包,并在一定丢包率范围内,将传输丢失的RTP包恢复出来,恢复范围与模块设定的冗余率有关,冗余率越高,丢包恢复能力越强,相应的传输数据量越多,因此该模块在低带宽场景的作用有限,作为可选模块与NACK发送模块配合使用,具体步骤为:初始化FEC冗余编码,设定冗余率,将视频帧切分,按照RTP包固定个数分组,按分组进行冗余编码,添加冗余包。
所述NACK发送模块,用于接收RTP包并添加序列号,发送RTP包并在本地缓存,接收并解析NACK报文,根据反馈报文重发RTP包,具体包括以下步骤:
S21、添加包序号并加入发送队列:将上层传递的NALU数据切分RTP包,并在RTP包的拓展头部添加序号标志packet number,同时添加关键帧首包标识key frame,每收到一个新的RTP包,packet number+1;
S22、缓存RTP包并定时维护本地缓存:将得到的RTP包和它的packet number成对地保存在该队列中,并按照从小到大排序;开启一个定时线程定期检查该关系队列中的RTP包缓存是否超出队列可容纳的最大数据量,如果超出最大数据量,则将最早缓存的一帧数据从队列中清除,特殊地,如果收到了NACK报文,可以提前触发清除缓存的操作;
S23、接收并解析NACK报文、重发RTP包:接收NACK报文后,按照约定的协议格式进行解析,获取需要重传的RTP包的packet number;发送端NACK根据解析得到的packetnumber从本地缓存中寻找对应的RTP包序号,若找到指定的RTP包,将其插入发送队列头部优先发送;若未找到指定包序号,认为请求重传包已过期,返回等待接收新的NACK报文;特殊地,如果发送端接收到多次NACK报文要求重传某一个RTP包,在最后一次发送后,发送端会将packet number小于等于该RTP包序号的RTP包从本地缓存全部清除,出于视频会议场景实时性的考虑,一般重传次数不超过三次。
本实施例中,步骤S21不使用RTP包自带的sequence number的原因是保证重发RTP包时使用相同的序号,完成该操作后,保存一份RTP包的副本并将该包插入发送队列。
所述平滑传输模块一,用于定时定量从发送队列中取出RTP包并发送给远端,防止瞬时数据量过大造成网络冲击,具体步骤为:初始化模块参数,包括RTP包传输间隔和最大传输数据量等,其中最大传输数据量可以通过事先对通信链路进行带宽侦测,根据带宽上限设定,也可以在配置文件中直接指定固定值。
所述平滑传输模块二,用于控制视频帧解码速度,防止视频播放时出现慢放快进现象影响用户观看体验,主要负责接收下层的完整帧的RTP包数据,并控制送往上层解码模块的时间间隔恒定,接收端维护一个中间队列,队列中始终存放2~3个完整视频帧的RTP包数据,并按照恒定速率将一帧视频从队列中取出送往上层模块组帧、解码并播放。
所述NACK接收模块,用于接收网络RTP包并根据序列号排序,判断是否发生丢包并将丢包序号及时间戳加入丢包列表,构建丢包反馈报文并择机发送,将完整一帧的RTP包数据送往上层组帧解码并显示,具体包括以下步骤:
S31、接收RTP包,排序并判断丢包:接收端每收到一个RTP包,利用其packetnumber和上一个正常收到的RTP包进行比较,若当前RTP包的packet number与上一个RTP包连续,表示未发生丢包,执行步骤S32;若当前RTP包的packet number大于上一个RTP包且二者不连续,表示发生了丢包,执行步骤S33;若当前RTP包的packet number小于上一个收到的RTP包序号,则进行重传包和过期包的判断,执行步骤S35;
S32、正常RTP包接收:若本次收到的RTP包连续,将该RTP包直接插入收包缓存队列末尾,检查该包是否为帧尾包:若是一帧的最后一个RTP包,则检查收包缓存队列中是否由一帧完整的数据,若有则直接送往上层模块组帧解码;否则执行步骤S31等待重传包,检查当前包是否为关键帧首包,若是则将当前包的packet number加入关键帧队列;
S33、更新丢包队列,快速重传:若本次接收包后发现发生了丢包,则将丢失RTP包的packet number和丢包发生时间加入丢包队列末尾,丢包队列记录请求重传次数,初始化为1,同时直接构建NACK报文发送给发送端请求重传;
S34、定期维护丢包队列,定时重传:接收端定时检查丢包队列,若队列不为空,则构建NACK报文请求重传,同时令RTP包的重传次数+1;若检查时间距丢包时间间隔已超过阈值或达到最大重传次数,则将该包的packet number从队列中清除,同时清除收包队列缓存中packet number小于该包的所有RTP包,清除关键帧队列中packet number小于该包的所有RTP包信息,执行步骤S36进行关键帧请求重传;
S35、重传包判断:若接收端当前收到的包的packet number小于上一个收到包的packet number,则检查丢包队列中是否存在相同的序号,若存在,表示当前包是重传包,则将其按packet number插入收包缓存队列,并将丢包队列中的对应序号及相关参数清除;若不存在,表明当前包之前已经收到一份或已经过期被清除,当前包是无效包,则直接将当前包丢弃;
S36、关键帧请求重传:若当前某几个RTP包的请求报文NACK已达到最大重发次数,或已经超时,则认为丢失未达的重传包已失效,清除该packet number和相关的RTP包;检查关键帧列表,寻找大于失效packet number的最小关键帧首包packet number,并从收包队列缓存中找到该关键帧的所有RTP包,若该关键帧数据完整,直接送到上层模块进行解码;否则,请求重传该关键帧中丢失未达的RTP包。
所述FEC冗余模块二,用于进行冗余恢复,当开启FEC冗余模块一时,通过解冗余按组恢复RTP包,随后将RTP包组帧获取到NAL数据;若开启FEC冗余模块二,则NACK接收模块只有当丢包数超出FEC冗余度的情况下才会进行重传。
所述视频输出模块,用于完成图像的解码和播放工作,具体步骤为:接收下层NAL数据,还原为ES媒体流,经解码器解码后,将视频帧转换为YUV图像数据,通过图像处理系统的色彩空间转换,裁剪,调整大小等操作,最后通过显示设备进行视频播放。
实施例2
请参阅图1-3,本发明还提供一种视频会议场景下的丢包重传方法,所述方法包括以下步骤:
S1、图像采集和编码;
S2、RTP包添加冗余包;
S3、RTP包添加包序号并加入发送队列;
S4、定时定量从发送队列中取出RTP包并发送给远端;
S5、接收网络RTP包并根据序列号排序,判断是否发生丢包并将丢包序号及时间戳加入丢包列表,构建丢包反馈报文并择机发送,将完整一帧的RTP包数据送往上层组帧解码并显示;
S6、按照恒定速率从队列中取出一帧视频;
S7、进行冗余恢复;
S8、解码完成视频输出。
进一步地,所述图像采集和编码具体包括以下步骤:
S10、通过摄像头获取图像数据,设置获取视频图像的分辨率、帧率、和编码通道;
S11、判断是否捕获帧图像,若未捕获新一帧图像,则处理流程终止,若捕获到,则继续执行下一步骤;
S12、将视频采集到的视频帧虚拟地址和物理地址映射,转换为编码通道支持的YUV420SP格式图像,初始化编码码率、编码通道和参考帧数,将连续的视频帧图像送入编码器编码为ES流。
进一步地,所述RTP包添加包序号并加入发送队列具体包括以下步骤:
S21、添加包序号并加入发送队列:将上层传递的NALU数据切分RTP包,并在RTP包的拓展头部添加序号标志packet number,同时添加关键帧首包标识key frame,每收到一个新的RTP包packet number加一;
S22、缓存RTP包并定时维护本地缓存:将得到的RTP包和它的packet number成对地保存在该队列中,并按照从小到大排序;开启一个定时线程定期检查该关系队列中的RTP包缓存是否超出队列可容纳的最大数据量,如果超出最大数据量,则将最早缓存的一帧数据从队列中清除;
S23、接收并解析NACK报文、重发RTP包:接收NACK报文后,按照约定的协议格式进行解析,获取需要重传的RTP包的packet number;发送端NACK根据解析得到的packetnumber从本地缓存中寻找对应的RTP包序号,若找到指定的RTP包,将其插入发送队列头部优先发送;若未找到指定包序号,认为请求重传包已过期,返回等待接收新的NACK报文。
进一步地,所述步骤S5具体包括以下步骤:
S31、接收RTP包,排序并判断丢包:接收端每收到一个RTP包,利用其packetnumber和上一个正常收到的RTP包进行比较,若当前RTP包的packet number与上一个RTP包连续,表示未发生丢包,执行步骤S32;若当前RTP包的packet number大于上一个RTP包且二者不连续,表示发生了丢包,执行步骤S33;若当前RTP包的packet number小于上一个收到的RTP包序号,则进行重传包和过期包的判断,执行步骤S35;
S32、正常RTP包接收:若本次收到的RTP包连续,将该RTP包直接插入收包缓存队列末尾,检查该包是否为帧尾包:若是一帧的最后一个RTP包,则检查收包缓存队列中是否由一帧完整的数据,若有则直接送往上层模块组帧解码;否则执行步骤S31等待重传包,检查当前包是否为关键帧首包,若是则将当前包的packet number加入关键帧队列;
S33、更新丢包队列,快速重传:若本次接收包后发现发生了丢包,则将丢失RTP包的packet number和丢包发生时间加入丢包队列末尾,丢包队列记录请求重传次数,初始化为1,同时直接构建NACK报文发送给发送端请求重传;
S34、定期维护丢包队列,定时重传:接收端定时检查丢包队列,若队列不为空,则构建NACK报文请求重传,同时令RTP包的重传次数加一;若检查时间距丢包时间间隔已超过阈值或达到最大重传次数,则将该包的packet number从队列中清除,同时清除收包队列缓存中packet number小于该包的所有RTP包,清除关键帧队列中packet number小于该包的所有RTP包信息,执行步骤S36进行关键帧请求重传;
S35、重传包判断:若接收端当前收到的包的packet number小于上一个收到包的packet number,则检查丢包队列中是否存在相同的序号,若存在,表示当前包是重传包,则将其按packet number插入收包缓存队列,并将丢包队列中的对应序号及相关参数清除;若不存在,表明当前包之前已经收到一份或已经过期被清除,当前包是无效包,则直接将当前包丢弃;
S36、关键帧请求重传:若当前某几个RTP包的请求报文NACK已达到最大重发次数,或已经超时,则认为丢失未达的重传包已失效,清除该packet number和相关的RTP包;检查关键帧列表,寻找大于失效packet number的最小关键帧首包packet number,并从收包队列缓存中找到该关键帧的所有RTP包,若该关键帧数据完整,直接送到上层模块进行解码;否则,请求重传该关键帧中丢失未达的RTP包。
进一步地,所述解码完成视频输出具体包括以下步骤:接收下层NAL数据,还原为ES媒体流,经解码器解码后,将视频帧转换为YUV图像数据,通过图像处理系统的色彩空间转换、裁剪、调整大小,最后通过显示设备进行视频播放。
本发明提出的丢包重传方法同时部署在发送端和接收端,发送端通过在RTP包头部添加全局唯一序列号进行标识后发送,同时在本地保存部分已发送的RTP包,此外,还需要接收丢包反馈报文并解析,重传丢失的RTP包;接受端在收到RTP包后按照唯一序列号进行排序,检测丢包,将丢包序号添加到丢包列表中,通过丢包反馈报文回送给发送端,并将未发生丢包的数据送往上层组帧解码播放。
本发明首先对RTP包的头部进行了拓展,除了固定头部外,额外增加了自动增长的序号packet number,不同于RTP包头自带的序号sequence number,该序号在NAL数据切分成RTP包时便完成初始化,可以保证每个RTP包序号唯一,重传时该序号不变。
其次,本发明进行重传时复用了RTP包的传输通道,只需要将待重传包,不需要单独开辟通道,也不需要使用RTCP通道,保证RTCP通道只以相当低的数据量进行网络状态的反馈。
最后,本发明在RTP头部添加了关键帧首包标志位,用于标识收到的关键帧的RTP包,在重传请求失效后,接收端会立即寻找最近的关键帧的RTP包,若关键帧不完整则立即请求重传关键帧,可以快速在显示设备上恢复画面,提高用户的使用体验。
本发明可以复用原始通信终端的通道进行传输,为便于移植和扩展修改了终端的传输数据格式;此外,通过根据网络状态动态设置重传次数和最大超时时间来综合调整丢包请求报文的发送策略;最终在重传包超时的情况下可以紧急发送关键帧重传请求,迅速在接收端获取关键帧并播放,提高弱网环境中的通信质量。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发明,任何本领域技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简介修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (10)

1.一种视频会议场景下的丢包重传系统,其特征在于:包括发送端和接收端,所述发送端包括视频输入模块、FEC冗余模块一、NACK发送模块和平滑传输模块一;所述接收端包括NACK接收模块、平滑传输模块二、FEC冗余模块二和视频输出模块;
所述视频输入模块,包括摄像头或桌面共享程序以及不同应用或软件的编码器,用于图像的采集和编码;
所述NACK发送模块,用于接收RTP包并添加序列号,发送RTP包并在本地缓存,接收并解析NACK报文,根据反馈报文重发RTP包;
所述NACK接收模块,用于接收网络RTP包并根据序列号排序,判断是否发生丢包并将丢包序号及时间戳加入丢包列表,构建丢包反馈报文并择机发送,将完整一帧的RTP包数据送往上层组帧解码并显示;
所述视频输出模块,用于完成图像的解码和播放工作。
2.根据权利要求1所述的一种视频会议场景下的丢包重传系统,其特征在于:所述FEC冗余模块一,用于给切分后的RTP包按分组添加冗余包,并在一定丢包率范围内,将传输丢失的RTP包恢复出来。
3.根据权利要求1所述的一种视频会议场景下的丢包重传系统,其特征在于:所述平滑传输模块一,用于定时定量从发送队列中取出RTP包并发送给远端,防止瞬时数据量过大造成网络冲击。
4.根据权利要求1所述的一种视频会议场景下的丢包重传系统,其特征在于:所述平滑传输模块二,用于控制视频帧解码速度,防止视频播放时出现慢放快进现象影响用户观看体验。
5.根据权利要求1所述的一种视频会议场景下的丢包重传系统,其特征在于:所述FEC冗余模块二,用于冗余恢复,通过解冗余按组恢复RTP包,随后将RTP包组帧获取到NAL数据。
6.一种视频会议场景下的丢包重传方法,其特征在于:所述方法包括以下步骤:
S1、图像采集和编码;
S2、RTP包添加冗余包;
S3、RTP包添加包序号并加入发送队列;
S4、定时定量从发送队列中取出RTP包并发送给远端;
S5、接收网络RTP包并根据序列号排序,判断是否发生丢包并将丢包序号及时间戳加入丢包列表,构建丢包反馈报文并择机发送,将完整一帧的RTP包数据送往上层组帧解码并显示;
S6、按照恒定速率从队列中取出一帧视频;
S7、进行冗余恢复;
S8、解码完成视频输出。
7.根据权利要求6所述的一种视频会议场景下的丢包重传方法,其特征在于:所述图像采集和编码具体包括以下步骤:
S10、通过摄像头获取图像数据,设置获取视频图像的分辨率、帧率、和编码通道;
S11、判断是否捕获帧图像,若未捕获新一帧图像,则处理流程终止,若捕获到,则继续执行下一步骤;
S12、将视频采集到的视频帧虚拟地址和物理地址映射,转换为编码通道支持的YUV420SP格式图像,初始化编码码率、编码通道和参考帧数,将连续的视频帧图像送入编码器编码为ES流。
8.根据权利要求6所述的一种视频会议场景下的丢包重传方法,其特征在于:所述RTP包添加包序号并加入发送队列具体包括以下步骤:
S21、添加包序号并加入发送队列:将上层传递的NALU数据切分RTP包,并在RTP包的拓展头部添加序号标志packet number,同时添加关键帧首包标识key frame,每收到一个新的RTP包packet number加一;
S22、缓存RTP包并定时维护本地缓存:将得到的RTP包和它的packet number成对地保存在该队列中,并按照从小到大排序;开启一个定时线程定期检查该关系队列中的RTP包缓存是否超出队列可容纳的最大数据量,如果超出最大数据量,则将最早缓存的一帧数据从队列中清除;
S23、接收并解析NACK报文、重发RTP包:接收NACK报文后,按照约定的协议格式进行解析,获取需要重传的RTP包的packet number;发送端NACK根据解析得到的packet number从本地缓存中寻找对应的RTP包序号,若找到指定的RTP包,将其插入发送队列头部优先发送;若未找到指定包序号,认为请求重传包已过期,返回等待接收新的NACK报文。
9.根据权利要求6所述的一种视频会议场景下的丢包重传方法,其特征在于:所述步骤S5具体包括以下步骤:
S31、接收RTP包,排序并判断丢包:接收端每收到一个RTP包,利用其packet number和上一个正常收到的RTP包进行比较,若当前RTP包的packet number与上一个RTP包连续,表示未发生丢包,执行步骤S32;若当前RTP包的packet number大于上一个RTP包且二者不连续,表示发生了丢包,执行步骤S33;若当前RTP包的packet number小于上一个收到的RTP包序号,则进行重传包和过期包的判断,执行步骤S35;
S32、正常RTP包接收:若本次收到的RTP包连续,将该RTP包直接插入收包缓存队列末尾,检查该包是否为帧尾包:若是一帧的最后一个RTP包,则检查收包缓存队列中是否由一帧完整的数据,若有则直接送往上层模块组帧解码;否则执行步骤S31等待重传包,检查当前包是否为关键帧首包,若是则将当前包的packet number加入关键帧队列;
S33、更新丢包队列,快速重传:若本次接收包后发现发生了丢包,则将丢失RTP包的packet number和丢包发生时间加入丢包队列末尾,丢包队列记录请求重传次数,初始化为1,同时直接构建NACK报文发送给发送端请求重传;
S34、定期维护丢包队列,定时重传:接收端定时检查丢包队列,若队列不为空,则构建NACK报文请求重传,同时令RTP包的重传次数加一;若检查时间距丢包时间间隔已超过阈值或达到最大重传次数,则将该包的packet number从队列中清除,同时清除收包队列缓存中packet number小于该包的所有RTP包,清除关键帧队列中packet number小于该包的所有RTP包信息,执行步骤S36进行关键帧请求重传;
S35、重传包判断:若接收端当前收到的包的packet number小于上一个收到包的packet number,则检查丢包队列中是否存在相同的序号,若存在,表示当前包是重传包,则将其按packet number插入收包缓存队列,并将丢包队列中的对应序号及相关参数清除;若不存在,表明当前包之前已经收到一份或已经过期被清除,当前包是无效包,则直接将当前包丢弃;
S36、关键帧请求重传:若当前某几个RTP包的请求报文NACK已达到最大重发次数,或已经超时,则认为丢失未达的重传包已失效,清除该packet number和相关的RTP包;检查关键帧列表,寻找大于失效packet number的最小关键帧首包packet number,并从收包队列缓存中找到该关键帧的所有RTP包,若该关键帧数据完整,直接送到上层模块进行解码;否则,请求重传该关键帧中丢失未达的RTP包。
10.根据权利要求6所述的一种视频会议场景下的丢包重传方法,其特征在于:所述解码完成视频输出具体包括以下步骤:接收下层NAL数据,还原为ES媒体流,经解码器解码后,将视频帧转换为YUV图像数据,通过图像处理系统的色彩空间转换、裁剪、调整大小,最后通过显示设备进行视频播放。
CN202310982243.9A 2023-03-07 2023-08-07 一种视频会议场景下的丢包重传系统及其方法 Pending CN117201466A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202310211934.9A CN116405630A (zh) 2023-03-07 2023-03-07 一种视频会议场景下的丢包重传系统及其方法
CN2023102119349 2023-03-07

Publications (1)

Publication Number Publication Date
CN117201466A true CN117201466A (zh) 2023-12-08

Family

ID=87011406

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310211934.9A Withdrawn CN116405630A (zh) 2023-03-07 2023-03-07 一种视频会议场景下的丢包重传系统及其方法
CN202310982243.9A Pending CN117201466A (zh) 2023-03-07 2023-08-07 一种视频会议场景下的丢包重传系统及其方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202310211934.9A Withdrawn CN116405630A (zh) 2023-03-07 2023-03-07 一种视频会议场景下的丢包重传系统及其方法

Country Status (1)

Country Link
CN (2) CN116405630A (zh)

Also Published As

Publication number Publication date
CN116405630A (zh) 2023-07-07

Similar Documents

Publication Publication Date Title
US7164680B2 (en) Scheme for supporting real-time packetization and retransmission in rate-based streaming applications
CN107231328B (zh) 实时视频传输方法、装置、设备及系统
EP2061174B1 (en) Data communication system, data transmitting device and method, using probe packets and having a transmission buffer control
US6587985B1 (en) Data transmission method, data transmission apparatus, data receiving apparatus, and packet data structure
US7133362B2 (en) Intelligent buffering process for network conference video
JP3598110B2 (ja) データ伝送方法および装置
JP3373130B2 (ja) 画像復号化装置
US8867340B2 (en) Discarded packet indicator
JP2007537640A (ja) パケット化データのビットレートの適合化とデータパケットの再送信との間の連携
WO2019062050A1 (zh) 直播管控方法、装置及电子设备
JP2024509728A (ja) データ再送処理方法、装置、コンピュータ機器及びコンピュータプログラム
CN110876091B (zh) 一种利用rtp扩展头部解决视频帧丢包的方法及装置
US20030152080A1 (en) System and method for fault tolerant multimedia communication
JPH10126772A (ja) 動画像データ転送方法
JP2005033556A (ja) データ送信装置、データ送信方法、データ受信装置、データ受信方法
CN117201466A (zh) 一种视频会议场景下的丢包重传系统及其方法
JP3927486B2 (ja) ストリーミング配信装置、ストリーミング配信システム、及びストリーミング配信方法
CN114500672A (zh) 数据传输方法及系统
CN114567799B (zh) 视频流数据的传输方法、装置、存储介质及电子设备
CN113542685B (zh) 一种基于可靠udp的实时超高清视频传输方法
CN114866523A (zh) 一种基于udp的视频快速传输方法及系统
CN112954386A (zh) 一种数据传输方法及系统
CN116634187A (zh) 基于合流发送机制的视频流处理方法、装置、设备和介质
CN116112127A (zh) 一种数据传输方法、相关设备及存储介质
Radha et al. Encoder buffer constraints for video transmission over networks with no quality-of-service guarantees

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination