一种视频帧分片传输方法、系统、设备及存储介质与流程
本技术涉及视频数据传输及通信处理,尤其涉及一种视频帧分片发送方法、视频帧分片接收方法、视频帧分片传输系统、视频帧分片发送设备、视频帧分片接收设备及计算机可读存储介质。
背景技术:
1、在投屏、视频会议、远程桌面、云游戏以及其他视频数据传输场景中,发送设备可以将编码后的视频帧通过通信网络发送至接收设备,接收设备接收到视频帧后,可以将视频帧提供给视频解码器进行解码。
2、当视频分辨率较高、视频编码码率较高或者待传输视频帧为关键帧时,单个视频帧的数据长度可能较大。当视频帧的数据长度超过传输协议、通信接口或者接收设备允许的单个数据单元有效载荷大小时,可以由发送设备将视频帧拆分为多个分片,并由接收设备对属于同一视频帧的多个分片进行重组。
3、然而,在现有的视频帧分片传输方案中,发送设备可能在未确认接收设备是否支持相应分片协议的情况下直接发送分片。接收设备在不支持该分片协议时,可能无法正确识别分片的封装格式、字段含义或者重组规则,进而造成报文解析失败、缓冲区分配异常或者解码输入错误。
4、部分分片封装仅携带分片序号等少量信息,接收设备难以准确确定分片所属的视频帧、对应视频帧的预期分片总数、原始视频帧长度以及当前分片的有效载荷长度。在发生分片乱序、重复、丢失或者不同分片的元数据不一致时,接收设备可能无法准确判断视频帧是否重组完成,或者可能将不完整的视频帧提供给视频解码器。
5、此外,在弱网、丢包或者分片持续迟到的情况下,未完成重组的视频帧可能长时间占用接收设备的重组缓冲区。若接收设备未设置重组超时处理机制和缓冲区资源控制机制,多个未完成视频帧对应的重组数据可能持续积累,从而影响接收设备的存储资源和视频处理稳定性。
6、因此,有必要提供一种能够根据发送设备与接收设备的分片能力确定是否启用分片传输,并能够对分片执行完整性检测、异常处理和缓冲区资源管理的视频帧分片传输方案。
技术实现思路
1、本技术提供提供一种视频帧分片传输方法、系统、设备及存储介质,可以解决发送设备在接收设备不支持相应分片协议时仍向接收设备发送分片数据;接收设备难以准确识别分片所属的视频帧、分片顺序及视频帧完整性,重复分片、元数据不一致分片或者非法封装分片被写入重组缓冲区;未完成重组的视频帧持续占用接收设备的缓冲区资源;不完整的视频帧被提供给视频解码器而引起解码异常等技术问题。
2、为达到上述目的,本技术采用如下技术方案:
3、第一方面,提供一种视频帧分片发送方法,应用于发送设备。
4、在与接收设备建立传输会话的过程中,发送设备获取本地分片开关状态。
5、在本地分片开关处于开启状态时,发送设备向接收设备发送第一协商消息。第一协商消息携带发送设备的分片能力信息。发送设备接收接收设备返回的第二协商消息,第二协商消息携带接收设备的分片能力信息。
6、发送设备根据本地分片开关状态、发送设备的分片能力信息和接收设备的分片能力信息,确定发送设备与接收设备是否支持相互兼容的分片传输模式。
7、在确定发送设备与接收设备支持相互兼容的分片传输模式时,发送设备将传输会话设置为分片传输状态。
8、在传输会话处于分片传输状态时,发送设备按照预设有效载荷大小将待传输视频帧拆分为多个分片,并为每个分片生成结构化分片头。
9、结构化分片头至少包括帧标识字段、分片序号字段、总片数字段、有效载荷长度字段和原始帧长度字段。
10、发送设备通过通信接口向接收设备发送携带结构化分片头的多个分片。
11、结合上述第一方面,在一种可能的实现方式中,发送设备的分片能力信息和接收设备的分片能力信息分别包括分片协议版本、允许的最大有效载荷大小和允许的最大分片数量中的至少一项。
12、结合上述第一方面,在一种可能的实现方式中,发送设备通过判断发送设备支持的分片协议版本与接收设备支持的分片协议版本是否匹配,确定双方是否支持相互兼容的分片传输模式。
13、结合上述第一方面,在一种可能的实现方式中,第一协商消息和第二协商消息中的至少一个可以是会话建立阶段的options消息、announce消息或者包含扩展协商字段的会话协商消息。
14、结合上述第一方面,在一种可能的实现方式中,结构化分片头还可以包括魔数字段、版本字段、标志字段和时间戳字段。标志字段可以包括用于指示待传输视频帧是否为关键帧的关键帧标志位。
15、结合上述第一方面,在一种可能的实现方式中,发送设备根据待传输视频帧的原始帧长度和预设分片数量上限确定目标有效载荷大小。
16、当目标有效载荷大小不大于允许的最大有效载荷大小时,发送设备按照目标有效载荷大小将待传输视频帧拆分为数量不超过预设分片数量上限的多个分片。
17、当目标有效载荷大小大于允许的最大有效载荷大小时,发送设备停止对待传输视频帧执行分片传输。
18、结合上述第一方面,在一种可能的实现方式中,在本地分片开关处于关闭状态、第二协商消息未携带接收设备支持分片传输的声明信息或者双方支持的分片协议版本不匹配时,发送设备将传输会话设置为非分片传输状态,并采用与接收设备的能力相匹配的非分片数据格式传输待传输视频帧。
19、第二方面,提供一种视频帧分片接收方法,应用于接收设备。
20、在与发送设备建立传输会话的过程中,接收设备接收发送设备发送的第一协商消息。第一协商消息携带发送设备的分片能力信息。
21、在接收设备支持与发送设备相互兼容的分片传输模式时,接收设备向发送设备发送第二协商消息。第二协商消息携带接收设备的分片能力信息。
22、在传输会话被设置为分片传输状态后,接收设备通过通信接口接收分片,并解析分片携带的结构化分片头。
23、接收设备根据帧标识字段查询对应的待重组状态记录,并在不存在对应的待重组状态记录时,建立与帧标识字段对应的待重组状态记录。
24、接收设备根据分片序号字段和待重组状态记录,对分片执行重复检测和元数据一致性检测。
25、在分片通过重复检测和元数据一致性检测时,接收设备将分片的有效载荷写入重组缓冲区,并更新待重组状态记录中的已接收分片信息和已接收字节数。
26、在已接收分片信息表明对应视频帧的全部分片均已接收,并且已接收字节数等于原始帧长度字段指示的原始帧长度时,接收设备根据分片序号字段重组得到完整视频帧。
27、接收设备通过解码接口将完整视频帧提供给视频解码器,并释放待重组状态记录所占用的存储资源。
28、结合上述第二方面,在一种可能的实现方式中,待重组状态记录包括预期总片数、预期原始帧长度、已接收分片序号集合、已接收分片数量、已接收字节数和首个分片的接收时间。
29、结合上述第二方面,在一种可能的实现方式中,接收设备可以通过位图、集合、数组、哈希表或者其他能够记录分片序号的数据结构保存已接收分片序号集合。
30、当分片序号字段指示的分片序号已经记录于已接收分片序号集合时,接收设备确定该分片为重复分片,并丢弃该分片。
31、当结构化分片头中的总片数、原始帧长度、时间戳或者版本信息中的至少一项与待重组状态记录中的对应信息不一致时,接收设备确定该分片为元数据不一致分片,并丢弃该分片。
32、结合上述第二方面,在一种可能的实现方式中,接收设备根据首个分片的接收时间,为待重组状态记录设置重组超时检测任务。
33、当重组超时检测任务确定当前时刻与首个分片的接收时间之间的时间差超过预设重组超时阈值时,接收设备清除对应的待重组状态记录,释放待重组状态记录占用的重组缓冲区,并记录对应帧标识处于过期状态。
34、当处于过期状态的帧标识对应的后续分片到达时,接收设备丢弃后续分片。
35、结合上述第二方面,在一种可能的实现方式中,接收设备维护多个待重组状态记录占用的缓冲区总字节数。
36、在将新接收的分片写入重组缓冲区之前,接收设备根据新接收分片的有效载荷长度,计算写入新接收分片后的预计缓冲区总字节数。
37、当预计缓冲区总字节数超过预设内存上限时,接收设备按照多个待重组状态记录的创建时间由早至晚依次清除待重组状态记录,并释放被清除的待重组状态记录占用的重组缓冲区。
38、在清除至少一个待重组状态记录后,接收设备重新计算预计缓冲区总字节数。当重新计算的预计缓冲区总字节数仍超过预设内存上限时,接收设备丢弃新接收的分片。
39、结合上述第二方面,在一种可能的实现方式中,结构化分片头还包括魔数字段和版本字段。
40、接收设备在建立待重组状态记录之前,根据魔数字段确定分片是否符合预设分片封装格式,并根据版本字段确定用于解析结构化分片头的分片协议版本。
41、在魔数字段不符合预设分片封装格式,或者版本字段指示的分片协议版本不被接收设备支持时,接收设备丢弃该分片。
42、第三方面,本技术提供一种视频帧分片传输系统,包括发送设备和接收设备。
43、发送设备用于执行第一方面所述的视频帧分片发送方法。
44、接收设备用于执行第二方面所述的视频帧分片接收方法。
45、第四方面,本技术一种视频帧分片发送设备,包括第一处理器、第一存储器和第一通信接口。
46、第一存储器中存储有第一计算机程序。第一计算机程序被第一处理器执行时,使视频帧分片发送设备执行第一方面所述的视频帧分片发送方法。
47、第五方面,本技术提供一种视频帧分片接收设备,包括第二处理器、第二存储器、第二通信接口、重组缓冲区和解码接口。
48、第二存储器中存储有第二计算机程序。第二计算机程序被第二处理器执行时,使视频帧分片接收设备执行第二方面所述的视频帧分片接收方法。
49、第六方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序。
50、计算机程序被处理器执行时,使包括处理器的发送设备执行第一方面所述的视频帧分片发送方法,或者使包括处理器的接收设备执行第二方面所述的视频帧分片接收方法。
51、有益效果:
52、1、通过在结构化分片头中设置帧标识字段、分片序号字段、总片数字段、有效载荷长度字段和原始帧长度字段,接收设备能够确定分片所属的视频帧、分片在视频帧中的顺序、预期分片数量、当前分片的有效载荷长度以及原始视频帧长度,从而为重复检测、元数据一致性检测和完整性检测提供数据基础。
53、2、通过对分片协议版本、魔数字段以及分片元数据进行检测,可以减少采用不受支持的解析规则解析分片或者将异常分片写入重组缓冲区的情况。
54、通过为待重组视频帧建立待重组状态记录,并设置重组超时检测任务,接收设备可以在视频帧未能在预定时间内完成重组时释放相应的存储资源,减少未完成重组的视频帧持续占用重组缓冲区的情况。
55、3、通过记录超时视频帧的帧标识处于过期状态,并丢弃该帧标识对应的后续分片,可以避免迟到分片重新触发待重组状态记录的建立。
56、4、通过在写入新分片之前计算预计缓冲区总字节数,并在预计缓冲区总字节数超过预设内存上限时清除已有待重组状态记录或者丢弃新分片,可以限制接收设备用于分片重组的缓冲区资源。
57、5、通过在全部分片均已接收,并且已接收字节数等于原始帧长度后才将完整视频帧提供给视频解码器,可以减少不完整视频帧进入解码流程的情况。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com