CN113365066B - 一种视频数据的传输方法和装置 - Google Patents

一种视频数据的传输方法和装置 Download PDF

Info

Publication number
CN113365066B
CN113365066B CN202110728707.4A CN202110728707A CN113365066B CN 113365066 B CN113365066 B CN 113365066B CN 202110728707 A CN202110728707 A CN 202110728707A CN 113365066 B CN113365066 B CN 113365066B
Authority
CN
China
Prior art keywords
frame
hierarchy
video
data
data packet
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.)
Active
Application number
CN202110728707.4A
Other languages
English (en)
Other versions
CN113365066A (zh
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.)
Beijing 263 Enterprise Communication Co ltd
Original Assignee
Beijing 263 Enterprise Communication Co ltd
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 Beijing 263 Enterprise Communication Co ltd filed Critical Beijing 263 Enterprise Communication Co ltd
Priority to CN202110728707.4A priority Critical patent/CN113365066B/zh
Publication of CN113365066A publication Critical patent/CN113365066A/zh
Application granted granted Critical
Publication of CN113365066B publication Critical patent/CN113365066B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请实施例提供了一种视频数据的传输方法和装置,该方法包括:第一设备获取待发送的多个数据包,该多个数据包是对一个画面组GOP中的多个视频帧编码后打包得到的,每个数据包对应一个层级,多个数据包对应多个层级,多个层级包括一个关键层级和一个或多个非关键层级,在数据缓存区存在拥塞的情况下,将多个数据包中对应于至少一个非关键层级的数据包丢弃,并发送剩下的至少一个层级的数据包,使得接收端接收的视频数据为有效数据,即接收端可以正常解码,从而保证视频的流畅性。

Description

一种视频数据的传输方法和装置
技术领域
本申请涉及数据通信技术领域,并且更具体地,涉及一种视频数据的传输方法和装置。
背景技术
互联网视频会议中,发送端将本地的视频数据编码后封装为实时传输协议(real-time transport protocol,RTP)数据包,发送给视频转发服务器,转发服务器将数据转发至多个接收端。针对部分处于弱网环境下的接收端,常常会出现网络拥塞的问题。
在这种情况下,转发服务器收到网络反馈后,通常会随机地丢弃一部分缓冲区中的RTP数据包,降低整体需要的传输带宽。但这种方法可能导致接收端无法解码,难以保证弱网环境下的接收端播放视频的流畅性。
发明内容
本申请实施例提供了一种视频数据的传输方法和装置,使得在网络环境较差的情况下,接收端接收到的数据为有效数据,避免出现花屏或无法解码的情况,从而保证视频的流畅性。
第一方面,本申请提供了一种视频数据的传输方法,该方法可以由第一设备执行,或者,也可以由部署在第一设备中的部件(如芯片、芯片系统等)执行。本申请实施例对此不作限定。下文仅为示例,以第一设备作为执行主体来描述了第一方面提供的方法。
示例性地,该方法包括:第一设备获取待发送的多个数据包,上述多个数据包是对一个画面组(group of pictures,GOP)中的多个视频帧编码后打包得到,多个数据包中的每个数据包对应一个层级,所述多个数据包对应多个层级,多个层级包括一个关键层级和一个或多个非关键层级,对应于关键层级的数据包包括关键数据包,关键数据包是对GOP中的帧内编码图像(intra-coded picture,I)帧编码后打包得到的,对应于非关键层级的每个数据包是基于一个视频帧及其参考帧编码后打包得到的;第一设备在数据缓存区存在拥塞的情况下,将多个数据包中对应于至少一个非关键层级的数据包丢弃;第一设备发送剩下的至少一个数据包。
基于上述技术方案,第一设备获取到待发送的数据包之后,在数据缓存区存在拥塞的情况下,可以将至少一个非关键层级的数据包丢弃,再将剩下的至少一个层级的数据包发送,在丢弃部分数据包之后,也可保证剩余数据包的有效性,即I帧以及参考帧不会丢失。如此一来,既可以保证系统的正常运行,又可以保证接收设备不会出现花屏或无法解码的情况,保证了视频的流畅性,提高了用户体验。
结合第一方面,在第一方面的某些可能的实现方式中,GOP中的视频帧数量G与层级数量L满足:G=2L-1,G、L均为大于1的整数。
结合第一方面,在第一方面的某些可能的实现方式中,每个视频帧对应的层级高于参考帧对应的层级,关键层级为多个层级中的最低层级,以及第一设备在数据缓存区存在拥塞的情况下,将多个数据包中对应于至少一个非关键层级的数据包丢弃,包括:第一设备在数据缓存区存在拥塞的情况下,按照层级由高到低的顺序,将多个数据包中对应于至少一个非关键层级的数据包丢弃。
可选地,第一设备为视频帧的发送设备,所述方法还包括:第一设备获取画面组GOP,该GOP包括一个I帧和至少一个前向预测编码图像(predictive-coded picture,P)帧,多个视频帧中的每个视频帧对应于一个层级;第一设备根据至少一个P帧中每个P帧对应的层级确定参考帧;第一设备基于I帧进行编码处理,得到I帧的编码帧;第一设备基于每个P帧及其参考帧进行编码处理,得到每个P帧的编码帧。
结合第一方面,在第一方面的某些可能的实现方式中,至少一个P帧中的第一P帧的参考帧是帧序号小于且最接近第一P帧的帧序号的视频帧,第一P帧为至少一个P帧中的任意一个。
结合第一方面,在第一方面的某些可能的实现方式中,第一设备为视频帧的发送设备,第一设备获取待发送的多个数据包,包括:第一设备对多个编码帧中的每个编码帧进行打包,得到多个数据包。
可选地,第一设备为转发服务器,第一设备获取待发送的多个数据包,包括:转发服务器接收来自发送设备的多个数据包,该多个数据包中的每个数据包包括扩展头,扩展头中携带层级的标识。
结合第一方面,在第一方面的某些可能的实现方式中,所述方法还包括:在数据缓存区畅通的情况下,第一设备恢复对至少一个层级的数据包的发送。
第二方面,本申请提供了一种视频数据的编码方法,所述方法包括:编码器获取多个视频帧,所述多个视频帧包括一个I帧和至少一个P帧;所述多个视频帧对应于多个层级,每个视频帧对应于一个层级,所述多个层级包括一个关键层级和至少一个非关键层级,对应于所述关键层级的视频帧包括所述I帧;所述编码器基于每个P帧的层级,确定每个P帧的参考帧,每个P帧对应的层级高于参考帧对应的层级;所述编码器基于所述I帧、所述每个P帧及其参考帧,进行编码处理,得到多个编码帧。
基于上述技术方案,由于将每个视频帧对应于一个层级,在后续传输过程中,如果发生网络拥塞,便可以按照层级的高低顺序依次丢包。一方面,对应于关键层级的编码帧不会被丢弃,另一方面,每个P帧的参考帧可以根据每个P帧对应的层级确定,使得任意一个P帧在未被丢弃的情况下,用于对其进行编解码的参考帧也不会被丢弃,从而有效利用了宽带资源,使得被传输的编码帧都得以成功解码,避免了花屏或无法解码的情况的发生,保证了视频的流畅性,提高了用户体验。
结合第二方面,在第二方面的某些可能的实现方式中,所述至少一个P帧中的第一P帧的参考帧是帧序号小于且最接近所述第一P帧的帧序号的视频帧;所述第一P帧为所述至少一个P帧中的任意一个。
第三方面,本申请提供了一种视频数据的传输方法,所述方法包括:接收设备接收至少一个数据包,所述至少一个数据包中的每个数据包对应一个层级,所述至少一个数据包对应于至少一个层级,所述至少一个层级包括关键层级,对应于所述关键层级的数据包包括关键数据包,所述关键数据包是对一个画面组GOP中的I帧编码后打包得到;所述接收设备基于所述至少一个数据包,进行解码处理。
基于上述技术方案,由于将数据包与层级对应,发送设备在丢包时保留了关键层级的数据包不作丢弃,因此接收设备接收到的至少一个数据包包括关键层级的数据包,也即,I帧并未被丢弃。接收设备仍然可以基于I帧进行解码,避免了在接收设备出现花屏或无法解码的情况,保证了视频的流畅性,提高了用户体验。
结合第三方面,在第三方面的某些可能的实现方式中,所述至少一个数据包还包括由至少一个P帧及其参考帧编码后打包得到的数据包;其中,每个P帧对应的层级高于参考帧对应的层级,且所述至少一个P帧中的第一P帧的参考帧是帧序号小于且最接近所述第一P帧的帧序号的视频帧,所述第一P帧是所述至少一个P帧中的任意一个。因此,每个P帧在未被丢弃的情况下,其所对应的参考帧也不会被丢弃,也就是说,每一个被传输的视频帧都能够被成功解码,从而有效利用了传输资源。
结合第三方面,在第三方面的某些可能的实现方式中,所述接收设备基于所述至少一个数据包,进行解码处理,包括:所述接收设备确定所述至少一个P帧中每个P帧对应的层级;所述接收设备基于每个P帧对应的层级,确定每个P帧的参考帧;所述接收设备基于所述I帧、所述至少一P帧中的每个P帧及其参考帧,进行解码处理。
第四方面,本申请提供了一种视频解码方法,该方法包括:解码器接收多个编码帧,所述多个编码帧包括一个I帧和至少一个P帧,所述多个编码帧对应于多个层级,每个编码帧对应于一个层级;基于所述至少一个P帧中的每个P帧的层级,确定每个P帧对应的参考帧;每个P帧对应的层级高于参考帧对应的层级,且所述至少一个P帧中的第一P帧的参考帧是帧序号小于且最接近所述第一P帧的帧序号的视频帧,所述第一P帧是所述至少一个P帧中的任意一个;所述解码器基于所述I帧,每个P帧及其对应的参考帧,进行解码处理,得到多个视频帧。
基于上述技术方案,解码器接收到的编码帧包括I帧和至少一个P帧,一方面,I帧未被丢弃,另一方面,每个P帧的参考帧可以根据每个P帧对应的层级确定,使得任意一个P帧在未被丢弃的情况下,用于对其进行编解码的参考帧也不会被丢弃,从而有效利用了宽带资源,使得被传输的编码帧都得以成功解码,避免了花屏或无法解码的情况的发生,保证了视频的流畅性,提高了用户体验。
结合第四方面,在第四方面的某些可能的实现方式中,所述至少一个P帧中的第一P帧的参考帧是帧序号小于且最接近所述第一P帧的帧序号的视频帧;所述第一P帧为所述至少一个P帧中的任意一个。
第五方面,本申请提供了一种视频数据的传输装置,包括用于实现第一方面至第四方面以及第一方面至第四方面任一种可能实现方式中的方法的模块或单元。应理解,各个模块或单元可通过执行计算机程序来实现相应的功能。
第六方面,本申请提供了一种视频数据的传输装置,包括处理器,所述处理器用于执行第一方面至第四方面以及第一方面至第四方面任一种可能实现方式中所述的方法。
所述装置还可以包括存储器,用于存储指令和数据。所述存储器与所述处理器耦合,所述处理器执行所述存储器中存储的指令时,可以实现上述各方面中描述的方法。所述装置还可以包括通信接口,所述通信接口用于该装置与其它设备进行通信,示例性地,通信接口可以是收发器、电路、总线、模块或其它类型的通信接口。
第七方面,本申请提供了一种芯片系统,该芯片系统包括至少一个处理器,用于支持实现上述第一方面至第四方面以及第一方面至第四方面任一种可能实现方式中所涉及的功能,例如,例如接收或处理上述方法中所涉及的数据和/或信息。
在一种可能的设计中,所述芯片系统还包括存储器,所述存储器用于保存程序指令和数据,存储器位于处理器之内或处理器之外。
该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第八方面,本申请提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机实现第一方面至第四方面以及第一方面至第四方面任一种可能实现方式中的方法。
第九方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当所述计算机程序被运行时,使得计算机执行第一方面至第四方面以及第一方面至第四方面任一种可能实现方式中的方法。
应当理解的是,本申请的第五至九方面与本申请的第一方面至第四方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1是适用于本申请实施例提供的方法的通信系统的示意图;
图2是本申请实施例提供的视频数据的传输方法的示意性流程图;
图3是本申请实施例提供的通过二叉树确定视频帧所对应的层级的示意图;
图4是本申请实施例提供的通过二叉树确定视频帧所对应的层级的又一示意图;
图5是本申请实施例提供的确定视频帧的参考帧的示意图;
图6是本申请实施例提供的每个视频帧的参考帧的示意图;
图7是本申请实施例提供的每个视频帧的参考帧的又一示意图;
图8是本申请实施例提供的发送设备对视频帧编码的示意性流程图;
图9是本申请实施例提供的丢包算法的示意性流程图;
图10是本申请实施例提供的视频数据的传输方法的示意性流程图;
图11是本申请实施例提供的视频数据的传输方法的另一示意性流程图;
图12是本申请实施例提供的视频数据的传输装置的示意性框图;
图13是本申请实施例提供的视频数据的传输装置的另一示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例的技术方案可以应用于通信系统中,在介绍本申请实施例之前,首先对本申请中涉及到的术语作简单说明。
1、视频编码:处理形成视频或视频序列的图片序列。在视频编码领域,术语“画面(picture)”、“帧(frame)”或“图像(image)”所表达的含义可以是相同的。
2、GOP:一个GOP就是一组连续的画面,GOP影响编码质量,动态图像专家组(movingpicture experts group,MPEG)编码将画面分为I帧、P帧、B帧三种,一个GOP中包含一个I帧和多个P帧,GOP的长度是指两个I帧之间的间隔。
3、I帧:帧内编码图像帧,也可以称为关键帧。是一种自带全部信息的独立帧,无需参考其他图像便可独立进行解码,可以简单理解为一张完整的静态画面,或对一帧画面的完整保留。通常情况下,GOP中的第一个帧是I帧。下文中I帧和关键帧交替出现,二者所表达的含义是相同的。
4、P帧:前向预测编码图像帧,需要参考前一帧才能进行编码。表示的是当前帧画面与前一帧(前一帧可能是I帧也可能是P帧)的差别。解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。与I帧相比,P帧通常占用更少的数据位,但是,P帧对前面的参考帧有着复杂的依耐性,I帧和前面的任何一个P帧丢失,都会引起视频花屏。
应理解,关于I帧、P帧和B帧的相关说明可以参看现有技术。本申请实施例中的每个GOP可以包括一个I帧和至少一个P帧。由于本申请实施例主要涉及I帧和P帧,这里省略对B帧的详述。
5、RTP数据包:RTP是互联网上传递音频和视频的数据包格式的一种,为数据提供了具有实时特征的端对端传送服务。RTP数据包可以由固定包头(header)和载荷(payload)两部分组成,其中,载荷可以是音频数据或视频数据。
在本申请实施例中,一个编码帧可以打包成一个RTP数据包,也可以打包成多个RTP数据包。RTP数据包的具体格式可参看现有技术,此处不作详细描述。
下文实施例中的数据包例如可以是RTP数据包,也可以是其他格式的数据包。本申请实施例包含但不限于此。
本申请实施例中的发送设备具体可以是指对视频帧进行编码并发送的设备。发送设备例如可以包括但不限于,手机、平板电脑、可穿戴设备、车载设备、增强现实(augmentedreality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、个人计算机(personalcomputer,PC)、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、分布式设备、打印机等。本申请实施例对发送设备的具体类型不作任何限定。
下面将结合附图,详细描述本申请实施例的应用场景以及本申请实施例提供的方法。
互联网视频会议中,发送设备将本地的视频数据编码后封装为数据包,发送给视频转发服务器,转发服务器将数据分发至多个接收端。在网络环境较差的情况下,发送设备将数据包发送给转发服务器或转发服务器将数据包分发给多个接收端的过程中,常常会出现网络拥塞的问题。
图1是适用于本申请实施例提供的方法的通信系统的示意图。
如图1所示,该通信系统100包括发送设备110、转发服务器120、以及接收设备131至133。其中,发送设备110可以是笔记本电脑,也可以是其他类型的终端设备,接收设备131至133可以是不同类型的终端设备,例如包括但不限于,手机131、平板电脑132、电视133,以及图中未示出的其他终端设备,如PC、上网本等。发送设备110将视频数据编码后封装为RTP数据包,然后将RTP数据包发送给转发服务器120,转发服务器120将RTP数据包转发给接收设备131至133。下文所述的第一设备为发送设备或转发服务器,在发送过程中,由于网络环境不同,可能存在数据拥塞的情况,第一设备会进行丢包处理,降低整体需要的发送宽带。
应理解,发送设备可以包括编码器,用于对视频帧进行编码处理。编码器可以是以软件的形式实现,也可以是以硬件的形式实现,又可以是以软硬结合的形式实现,本申请实施例对此不作限定。
还应理解,图1仅为示例,示出了一个发送设备、转发服务器以及三个接收设备。本申请对于发送设备、转发服务器以及接收设备的数量并不限定。
现有一种技术,针对部分处于弱网环境下的接收设备,部分视频会议产品转发服务器收到网络反馈后会进行丢包处理,随机的丢弃一部分缓存区中的数据包,降低整体需要的传输带宽,但这种随机丢弃数据包的方法可能会导致I帧或参考帧数据被丢弃,接收设备会出现花屏或无法解码的情况,即接收到的数据为无效数据,难以保证弱网环境下的接收设备的视频流畅性。
本申请提供了一种视频数据的传输方法,不再不加区分地丢弃数据包,而是对数据包进行了层级的划分,将数据包对应于一个关键层级和一个或多个非关键层级。其中,对应于关键层级的数据包包括了由I帧编码和打包得到的数据包,非关键层级的数据包包括了由P帧编码和打包得到的数据包,且每一个P帧和它的参考帧对应不同的层级。因此,在第一设备确定出现网络拥塞的情况下,可以将多个数据包中对应于至少一个非关键层级的数据包丢弃,最后将剩下的至少一个层级的数据包发送。如此一来,即便丢弃了一部分数据包,接收端仍然能够接收到I帧和部分P帧,仍然可以正常解码,接收端仍能保持视频接收的流畅性。同时,可以降低视频数据的传输宽带,从而保证了系统的正常运行。
下面将结合附图,详细说明本申请实施例提供的一种视频数据的传输方法。
应理解,第一设备可以为发送设备或转发服务器,下面将以发送设备的角度来描述该方法,但不应对该方法的执行主体构成任何限定。只要能够通过运行记录有本申请实施例提供的方法的代码的程序,便可执行本申请实施例提供的方法。例如,发送设备也可以替换为配置在发送设备中的部件(如,芯片、芯片系统或其他能够调用程序并执行程序的功能模块等),本申请实施例对此不作限定。
图2是本申请实施例提供的视频数据的传输方法200的示意性流程图。图2所示的方法可以包括S210和S260,下面对图2中的各个步骤做详细说明。
S210、发送设备获取GOP。
如前所述,一个GOP中可以包含多个视频帧,例如,一个GOP中包含一个I帧和多个P帧。
在本申请实施例中,一个GOP中的多个视频帧可以对应于多个层级,且视频帧数量G与层级数量L的关系可满足:G=2L-1,G、L均为大于1的整数。因此可以根据预先定义的L确定从视频流中获取到的一个GOP中包括的视频帧数量。
S220、发送设备确定GOP中每个视频帧对应的层级。
在本申请实施例中,多个视频帧中的每个视频帧可对应于一个层级。该多个视频帧可对应于多个层级。该多个层级可以包括一个关键层级和一个或多个非关键层级。GOP中的I帧可以对应关键层级。GOP中的多个P帧可部分对应于关键层级,部分对应于非关键层级,或者,该多个P帧可全部对应于非关键层级。本申请实施例对此不作限定。
其中,非关键层级中的每个视频帧的编码都需要依赖于其本身和它的参考帧。非关键层级中的每个视频帧与其参考帧所对应的层级是不同的。并且,多个视频帧可以使用同一个参考帧来进行编码。应理解,参考帧是一个相对而言的概念。参考帧本身也可能也并非I帧,参考帧的编码也需要依赖于它的参考帧而实现。
示例性地,该多个视频帧可以分为L(L>1且为整数)个层级,层级编号分别为1至L。该L个层级对应的视频帧中,I帧可以对应于最低层级,即层级1,也即,关键层级为L个层级中的最低层级。每个视频帧所对应的层级可以高于其参考帧所对应的层级。换言之,对应于高层级的视频帧依赖于对应于低层级的视频帧作为参考帧来编码。
或者,I帧可以对应于最高层级,即层级L,也即,关键层级为L个层级中的最高层级。每个视频帧所对应的层级可以低于其参考帧所对应的层级。换言之,对应于低层级的视频帧依赖于对应于高层级的视频帧作为参考帧来编码。
示例性地,发送设备可以通过构建二叉树的方法确定每个视频帧所对应的层级。假设P帧全部对应非关键层级,P帧数量为G-1,I帧的帧序号为1,P帧的帧序号为2至G。即,P帧全部对应非关键层级。I帧可对应层级1,可单独作为一个层级,即,关键层级。二叉树以帧序号G/2+1为根构建,所以层级2的视频帧的帧序号为G/2+1。帧序号为G/2+1的视频帧的左子树的帧序号为G/2+1﹣2L-3,右子树的帧序号为G/2+1+2L-3,即层级3的帧序号分别为G/2+1﹣2L-3,G/2+1+2L-3。层级4的帧序号分别为G/2+1﹣2L-3﹣2L-4,G/2+1﹣2L-3+2L-4,G/2+1+2L-3﹣2L-4,G/2+1+2L-3+2L-4,以此类推,直到层级L,即可构建出完整的二叉树。应理解,层级2至层级L为非关键层级。
一示例,图3是本申请实施例提供的通过二叉树确定视频帧所对应的层级的示意图。如图3所示,该GOP的层级数量L=5,G=16,二叉树的根的帧序号为16/2+1=9,故层级2的视频帧的帧序号为9,层级3的视频帧的帧序号分别为5,13,层级4的帧序号分别为3,7,11,15,层级5的帧序号分别为2,4,6,8,10,12,14,16。
又一示例,图4是本申请实施例提供的通过二叉树确定视频帧所对应的层级的又一示意图。如图4所示,该GOP的层级数量L=4,G=8,二叉树的根的帧序号为8/2+1=5,故层级2的视频帧的帧序号为5,层级3的视频帧的帧序号分别为3,7,层级4的帧序号分别为2,4,6,8。
应理解,图3和图4仅为便于理解,示出了采用二叉树的方法确定各视频帧对应的层级的过程,因此仅示出了非关键层级,而未示出关键层级。但可以理解,在图3和图4所示的各非关键层级的示意图中,可以进一步加入I帧和关键层级,得到L个层级的示意图。
在另一种实现方式中,也可将I帧与部分P帧对应于同一个层级,即,部分P帧对应于关键层级,部分P帧对应于非关键层级。GOP中视频帧的数量G与层级数量L可满足:G=2L。二叉树以帧序号G/2+1为根构建,帧序号为G/2+1的视频帧可以对应于关键层级,如层级1。帧序号为G/2+1的视频帧的左子树的帧序号为G/2+1﹣2L-2,右子树的帧序号为G/2+1+2L-2,即层级2的帧序号分别为G/2+1﹣2L-2,G/2+1+2L-2。层级3的帧序号分别为G/2+1﹣2L-2﹣2L-3,G/2+1﹣2L-2+2L-3,G/2+1+2L-2﹣2L-3,G/2+1+2L-2+2L-3。以此类推,直到层级L,即可构建出完整的二叉树。
例如,图3中的I帧为层级1,帧序号为9的视频帧对应层级1,帧序号为5、13的视频帧对应层级2,帧序号为3、7、11、15的视频帧对应层级3,帧序号为2、4、6、8、10、12、14、16对应层级4。
应理解,上文所述的通过构建二叉树的方法来对视频帧划分层级的过程仅为示例,不应对本申请构成任何限定。对视频帧划分层级的方法包含但不限于此。
下文中为方便理解和说明,仍以GOP中的视频帧数量G与层级数量L满足G=2L-1为例来描述后续步骤。
S230、发送设备对多个视频帧进行编码处理,得到多个编码帧。
如前所述,GOP中包括一个I帧和至少一个P帧。S230可以包括对I帧的编码处理和对P帧的编码处理。
其中,对I帧的编码处理可依赖于其本身,基于I帧进行编码处理,可得到该I帧的编码帧。
对P帧的编码处理可以来与其本身和它的参考帧。可选地,该方法还包括:发送设备可以根据每个P帧的层级,确定每个P帧的参考帧。
如前所述,每个视频帧可对应于一个层级,发送设备可以根据每个视频帧所对应的层级,根据其所在层级,确定出对应的参考帧。
通过上述构建二叉树的过程,可以确定出每个视频帧所在的层级,即每个视频帧对应于一个层级,根据视频帧所对应的层级,可以确定出参考帧。
不失一般性,这里以该多个视频帧中的第一P帧为例来描述确定第一P帧的参考帧的方法。应理解,该第一P帧可以是上述G-1个P帧中的任意一个视频帧。
第一P帧的参考帧所对应的层级低于第一P帧所对应的层级。例如,第一P帧对应的层级为L1,则其参考帧对应的层级为层级1至层级L1﹣1中的一个。发送设备可以从层级低于第一P帧的视频帧中选择帧序号小于且最接近第一P帧的一帧为参考帧。
一种可能的实现方式是,发送设备可以从二叉树的L1-1层开始查找,直到层级1,查找出小于且最接近于第一P帧的帧序号的视频帧,该视频帧即为第一P帧的参考帧。
为便于理解,下面以图5所示的二叉树为例来描述确定视频帧的参考帧的过程。图5所示的二叉树是在图3所示的二叉树的基础上加入了I帧得到。
例如,帧序号为5的视频帧对应层级3,低于层级3的层级的视频帧包括帧序号为9的视频帧和帧序号为1的视频帧,其中帧序号为9的视频帧对应于层级2,帧序号为1的视频帧对应于层级1。其中,小于且最接近于5的帧序号为1,所以帧序号为5的视频帧的参考帧为帧序号1的视频帧。
又例如,帧序号为4的视频帧对应层级5,低于层级5的视频帧包括帧序号为3、7、11、15、5、13、9、1的视频帧。其中,小于且最接近于4的帧序号为3,所以参考帧的帧序号为3。
以此类推,发送设备可以确定每个P帧的参考帧。为了简洁,此处不再赘述其他视频帧确定参考帧的具体过程。
基于上述方法所确定的每个视频帧的参考帧的示意图可以参看图6。图6是基于图5所示的二叉树而确定的每个视频帧与参考帧的关系。如图6所示,每个视频帧的箭头指向了I帧,对应于层级1的I帧没有参考帧,对应于中间层级的视频帧可以作为其他层级的视频帧的参考帧,位于层级5(L=5)的视频帧不作为其他视频帧的参考帧。
图7是本申请实施例提供的每个视频帧的参考帧的又一示意图。图7所示的各视频帧与参考帧的对应关系是基于图4所示的二叉树确定的视频帧的层级确定的。如图7所示,通常情况下,每个视频帧的参考帧为它的前一帧。如图所示,图中的8个视频帧中帧序号为1的帧为I帧,帧序号为2至8的7个视频帧为P帧。可以看到,每一个P帧的编码都依赖于前面的I帧和P帧,一旦前面的P帧丢失,可能会导致花屏或无法解码。而本申请实施例提供的方法确定出的参考帧如图7所示,帧序号为2、3和5的视频帧的参考帧的帧序号为1,帧序号为4的视频帧的参考帧的帧序号为3,帧序号为6和7的视频帧的参考帧的帧序号为5,帧序号为8的视频帧的参考帧的帧序号为7。
应理解,图6和图7所示的视频帧与参考帧的对应关系的具体形式仅为便于理解而示出,不应对确定视频帧的参考帧的具体方法构成任何限定。
发送设备可以在确定出每个P帧的参考帧后,对每个P进行编码处理,得到至少一个P帧的编码帧。
发送设备对多个视频帧进行编码的过程可参看图8所示的流程。
图8是本申请实施例提供的发送设备对视频帧编码的示意性流程图。下面将结合图8对确定参考帧以及编码视频帧的步骤进行详细说明。
如图8所示,设置当前GOP需要的层级数量L,计算出G=2L-1,以帧序号G/2+1为根构建出二叉树,设置帧序号i=0,当接收到一个视频帧时,帧序号i=i+1。进而判断i是否等于1,若i等于1,则编码视频帧为I帧;若i不等于1,则该视频帧为P帧,可以基于该视频帧及其参考帧进行编码。确定视频帧的参考帧的具体步骤可参看上文的描述,此处不再赘述。每完成一个P帧的编码,可判断i是否等于G,若是,则该GOP的编码结束。若否,则继续接收视频帧。由此,可以完成上述G个视频帧的编码。
S240、发送设备将多个编码帧打包为多个数据包。
编码结束后,可以将一个GOP中的多个编码帧打包为多个数据包。其中,由I帧编码并打包得到的数据包可以称为关键数据包。
可以理解,每个数据包可对应一个视频帧,是基于所对应的视频帧编码并打包得到的。由于每个视频帧对应于一个层级,故每个数据包也对应于一个层级。且每个数据包与其对应的视频帧对应相同的层级。
可选地,每个数据包包括扩展头,扩展头中可以携带层级的标识。
示例性地,将一个GOP中的多个视频帧编码之后得到多个编码帧,将上述多个编码帧打包为多个RTP数据包,在每个RTP数据包的扩展头中携带有层级的标识,例如,图3中的帧序号5的视频帧所对应的层级为3,编码之后为P帧,将其打包时扩展头中携带的层级标识为3。经过上述步骤之后,发送设备即可得到RTP数据包。
当然,上述各数据包也可以不携带层级的标识。转发服务器可以基于上文所述的方法,自行计算接收到的每个数据包分别对应的层级。
应理解,RTP数据包是数据包的一示例,本申请实施例对数据包的类型不作限定。
S250、在数据缓存区存在拥塞的情况下,发送设备将多个数据包中对应于至少一个非关键层级的数据包丢弃。
数据缓存区存在拥塞的情况具体可以表现为发送设备每发送一个视频流,均有一个独立的发送队列,线程1(thread1)只将数据包放入队列当中,另有一个独立的发包thread2,根据带宽情况从队列中取出数据包并发送,当thread1的入队速度大于thread2的出队速度时,就会出现数据包积压,即存在拥塞的情况。当thread1的入队速度小于thread2的出队速度时,就会出现队列空闲,即数据缓存区畅通的情况。
数据缓存区存在拥塞的情况下,将多个数据包中对应于至少一个层级的数据包丢弃。每个层级有一个或多个数据包,每个数据包对应于一个层级,数据包的扩展头携带层级标识,可以根据该层级标识丢弃至少一个层级的数据包。
一种可能的实现方式是,按照层级由高到低的顺序,将多个数据包中对应于至少一个非关键层级的数据包丢弃,例如,可以先丢弃最高层级的数据包,再丢弃次高层级的数据包,如此下去,直至剩下最低层级(也就是关键层级)的数据包。例如,在图3所示的示例中,可以先丢弃层级5的数据包,再丢弃层级4的数据包,直至最后剩下的是层级1的数据包。
如前所述,由于关键层级也可以是最高层级,上述将多个数据包中对应于至少一个非关键层级的数据包丢弃,也可以是先丢弃层级1的数据包,再丢弃层级2的数据包,如此下去,直至剩下关键层级的数据包。
应理解,上述对至少一个非关键层级的数据包的丢弃仅为示例,发送设备可以根据当前的网络拥塞情况做出判断,决定需要丢弃几个层级的数据包,而并不一定需要将所有的非关键层级的数据包全部丢弃。
图9是本申请实施例提供的丢包算法的示意性流程图,下面将结合图9对丢包算法进行详细描述。应理解,下述丢包算法仅为实现丢包步骤的一示例,不应对本申请实施例构成任何限定。
如图9所示,第一设备设置GOP的编码层级数量L,缓存I帧数目kfc=0,缓存帧数fc=0,当前清包层数n=0,上次清包时间c=0,层恢复间隔r=5秒。第一设备接收数据包,记录接收时间t,判断该数据包的帧类型是否为I帧,若不是I帧,则提取数据包扩展头中的层级l,判断l是否大于L-n,若是,则丢弃该数据包,若不是,则将该数据包放入数据缓存区,并记录fc=fc+1。若是I帧,则放入数据缓存区,记录kfc=kfc+1,fc=fc+1,进一步判断kfc是否大于或等于2且n<L-1,若是,则记录n=L-1,清理数据缓存区层级大于L-n的数据包,更新fc和kfc,进入下一帧的处理。应理解,当连续两次清包的时间间隔小于5秒时,可以将层恢复间隔r设置为2r,并更新上次清包的时间c。还应理解,r最大取值可以设为160,当r大于160时,设置r=160。若否,则进一步判断fc的持续时长是否大于或等于0.5s且n<L,若是,则记录n=n+1,并清理清理数据缓存区层级大于L-n的数据包,更新fc和kfc,进入下一帧的处理,若否,则降低层恢复间隔,即更新层恢复间隔r=r-5,进入下一帧的处理。
数据缓存区畅通的情况下,发送设备可以恢复对至少一个层级的数据包的发送。例如,当thread1的入队速度小于thread2的出队速度时,发送设备可以按照层级由低到高的顺序恢复至少一个层级的数据包的发送。
S260、发送设备发送剩下的至少一个层级的数据包。
发送设备将剩下的至少一个层级的数据包发送给转发服务器,相应地,转发服务器接收到数据包。
应理解,发送设备发送的至少一个层级的数据包包括关键层级的数据包,也即包括关键数据包。
基于上述技术方案,发送设备获取到GOP中的多个视频帧后,确定出每个视频帧对应的层级,以及每个视频帧的参考帧,再基于视频帧及其参考帧得到编码帧,将编码帧打包成多个数据包,在网络拥塞的情况下,将对应于至少一个非关键层级的数据包丢弃,发送剩下的至少一个层级的数据包,使得宽带降低,且不会丢失I帧,从而接收端可以正常解码,保证视频的流畅性。
应理解,第一设备也可以为转发服务器,下面将以转发服务器的角度来描述该方法,但不应对该方法的执行主体构成任何限定。只要能够通过运行记录有本申请实施例提供的方法的代码的程序,便可执行本申请实施例提供的方法。例如,转发服务器也可以替换为配置在转发服务器中的部件(如,芯片、芯片系统或其他能够调用程序并执行程序的功能模块等),本申请实施例对此不作限定。
图10是本申请实施例提供的视频数据的传输方法1000的示意性流程图。图10所示的方法可以包括S1010和S1030,下面对图10中的各个步骤做详细说明。
S1010、转发服务器接收来自于发送设备的多个数据包。
上述多个数据包中的每个数据包是基于一个编码帧打包得到,每个编码帧是基于一个视频帧编码得到,每个数据包对应一个层级,且多个数据包对应多个层级。
示例性地,以RTP数据包为例,转发服务器接收来自于发送设备的多个RTP数据包,也即获取到了待发送的多个RTP数据包,转发服务器进一步判断数据缓存区是否存在拥塞的情况。具体的判断数据缓存区是否存在拥塞的方法与发送设备的判断方法相同,此处不再赘述。
S1020、数据缓存区存在拥塞的情况下,转发服务器将至少一个非关键层级的数据包丢弃。
应理解,转发服务器将数据包发送给接收设备时,也可能存在数据缓存区拥塞的情况,当转发服务器判断出数据缓存区存在拥塞时,将至少一个层级的数据包丢弃。
一种可能的实现方式是,转发服务器按照层级由高到低的顺序,将多个数据包中至少一个层级的数据包丢弃,前已述及,多个数据包中每个数据包的扩展头中均携带有层级的标识,可用于每个数据包中视频帧所在层级的识别。具体的丢弃数据包的算法可参看图9的相关描述。
S1030、转发服务器发送剩下的至少一个层级的数据包。
转发服务器将剩下的至少一个层级数据包发送给接收设备的接收设备,相应地,接收设备获取到数据包,应理解,接收设备接收到的数据包为有效数据,也就是说,I帧以及参考帧不会丢失,接收设备可以正常解码且不会出现花屏的现象。
基于上述技术方案,在数据缓存区存在拥塞的情况下,第一设备获取待发送的多个数据包,每个数据包对应一个层级,且多个数据包对应多个层级,然后将多个数据包中对应于至少一个层级的数据包丢弃,再发送剩下的至少一个数据包,如此一来,在保证了系统正常运行的情况下,避免了接收端接收的视频数据出现花屏或无法解码的情况,保障了视频的流畅性。
应理解,上文描述的发送设备执行的方法200和转发服务器所执行的方法1000可以单独使用,也可以结合使用,本申请实施例对此不作限定。当二者结合使用时,发送设备向转发服务器发送的数据包为多个数据包,例如可以是多个层级的数据包。
还应理解,接收设备接收到来自转发服务器的数据包后,需要对编码帧进行解码处理,生成图像。下面将结合图11对接收设备的处理过程进行详细描述。
图11是本申请实施例提供的视频数据的传输方法1100的另一示意性流程图。如图11所示,该方法1100可以包括S1110和S1120。
S1110、接收设备接收至少一个数据包。
接收设备接收的至少一个数据包中的每个数据包对应于一个层级,至少一个数据包对应于至少一个层级,该至少一个层级包括关键层级,对应于关键层级的数据包包括关键数据包,上述关键数据包是对一个GOP中的I帧编码后打包得到,所以,接收设备接收的数据包至少包含I帧编码打包得到的关键数据包。
可选地,上述至少一个数据包还可以包括由至少一个P帧及其参考帧编码后打包得到的数据包。其中,至少一个P帧中每个P帧对应的层级高于参考帧对应的层级,且至少一个P帧中的第一P帧的参考帧是帧序号小于且最接近第一P帧的帧序号的视频帧,第一P帧是至少一个P帧中的任意一个。
一示例,接收设备接收一个数据包,即接收设备只接收到一个关键数据包,该关键数据包对应于一个层级,该层级为关键层级。
又一示例,接收设备接收多个数据包,多个数据包包括关键数据包,还包括由至少一个P帧及其参考帧编码后打包得到的数据包。
S1120、接收设备基于至少一个数据包,进行解码处理。
应理解,至少一个数据包是I帧编码后打包得到,和P帧及其参考帧编码后打包得到,所以,接收设备需要进一步对编码帧进行解码处理。
一种可能的实现方式是,接收设备接收的至少一个数据包包括关键数据包和由至少一个P帧及其参考帧编码后打包得到的数据包。则接收设备先确定至少一个P帧中每个P帧对应的层级,然后基于每个P帧对应的层级,确定出每个P帧的参考帧,再根据每个P帧及其参考帧进行解码处理,并根据I帧进行解码。应理解,上述过程中,可以根据数据包中携带的层级信息确定每个P帧对应的层级。还应理解,基于每个P帧对应的层级,确定出每个P帧的参考帧的具体步骤可以参考图2的相关描述,此处不再详细说明。
基于上述技术方案,由于将数据包与层级对应,发送设备在丢包时保留了关键层级的数据包不作丢弃,因此接收设备接收到的至少一个数据包包括关键层级的数据包,也即,I帧并未被丢弃。接收设备仍然可以基于I帧进行解码,避免了在接收设备出现花屏或无法解码的情况,保证了视频的流畅性,提高了用户体验。
应理解,S1120中的解码处理可以由解码器来实现。接收设备可以包括解码器,用于对编码帧进行解码处理。解码器可以是以软件的形式实现,也可以是以硬件的形式实现,又可以是以软硬结合的形式实现,本申请实施例对此不作限定。
下文将结合图12和图13详细说明本申请实施例提供的视频数据的传输装置。
图12是本申请实施例提供的视频数据的传输装置1200的示意性框图。如图12所示,该装置1200可以包括:收发单元1210和处理单元1220。
可选地,该装置1200可对应于上文方法实施例中的发送设备,例如可以为发送设备,或者,配置在发送设备中的部件,如芯片、芯片系统等。并且,该装置1200中的各单元可用于实现图2所示的方法200中发送设备执行的相应流程。例如,收发单元1210可用于执行方法200中的S260,处理单元1220可用于方法200中的S210至S250。
可选地,该装置可对应于上文方法实施例中的转发服务器,例如可以为转发服务器,或者,配置在转发服务器中的部件,如芯片、芯片系统等。并且,该装置1200中的各单元可用于实现图10所示的方法1000中转发服务器执行的相应流程。例如,处理单元1220可用于执行方法1000中的S1020,收发单元1210可用于执行方法1000中的S1010、S1030。
应理解,各单元执行上述相应步骤的具体过程在上述方法实施例中已经详细说明,为了简洁,在此不再赘述。
还应理解,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
图13是本申请实施例提供的视频数据的传输装置1300的另一示意性框图。该装置1300可以为芯片系统,或者,也可以为配置了芯片系统,以用于实现上述方法实施例中视频数据的传输功能的装置。在本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
如图13所示,该装置1300可以包括处理器1310和通信接口1320。其中,通信接口1320可用于通过传输介质和其它设备进行通信,从而用于装置1300中的装置可以和其它设备进行通信。所述通信接口1320例如可以是收发器、接口、总线、电路或者能够实现收发功能的装置。处理器1310可利用通信接口1320输入输出数据,并用于实现图2或图10对应的实施例中所述的视频数据的传输方法。
可选地,该装置1300还包括至少一个存储器1330,用于存储程序指令和/或数据。存储器1330和处理器1310耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器1310可能和存储器1330协同操作。处理器1310可能执行存储器1330中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
本申请实施例中不限定上述处理器1310、通信接口1320以及存储器1330之间的具体连接介质。本申请实施例在图13中以处理器1310、通信接口1320以及存储器1330之间通过总线1340连接。总线1340在图13中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请还提供一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当所述计算机程序被运行时,使得计算机执行图2或图10所示实施例中发送设备执行的方法或转发服务器执行的方法。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)。当所述计算机程序被运行时,使得计算机执行图2或图10所示实施例中发送设备执行的方法或转发服务器执行的方法。
应理解,本申请实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本说明书中使用的术语“单元”、“模块”等,可用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各种说明性逻辑块(illustrative logical block)和步骤(step),能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,各功能单元的功能可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令(程序)。在计算机上加载和执行所述计算机程序指令(程序)时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种视频数据的传输方法,其特征在于,包括:
第一设备获取待发送的多个数据包,所述多个数据包是对一个画面组GOP中的多个视频帧编码后打包得到,所述多个数据包中的每个数据包对应一个层级,所述多个数据包对应多个层级,所述多个层级包括一个关键层级和一个或多个非关键层级,对应于所述关键层级的数据包包括关键数据包,所述关键数据包是对所述GOP中的帧内编码图像I帧编码后打包得到的,对应于所述非关键层级的每个数据包是基于一个视频帧及其参考帧编码后打包得到的;
所述第一设备在数据缓存区存在拥塞的情况下,将所述多个数据包中对应于至少一个非关键层级的数据包丢弃;
所述第一设备发送剩下的至少一个层级的数据包,所述剩下的至少一个层级的数据包包括所述关键数据包;
在所述第一设备为所述视频帧的发送设备时,所述方法还包括:
所述第一设备获取所述GOP,所述GOP包括一个I帧和至少一个前向预测编码图像P帧;
所述第一设备确定GOP中每个视频帧对应的层级,所述I帧对应所述关键层级;
对于所述至少一个P帧中的任意一个第一P帧:
在关键层级为最低层级时,所述第一设备从层级低于所述第一P帧所在的层级中,确定帧序号小于且最接近所述第一P帧的帧序号的视频帧为所述第一P帧的参考帧;或者,
在关键层级为最高层级时,所述第一设备从层级高于所述第一P帧所在的层级中,确定帧序号小于且最接近所述第一P帧的帧序号的视频帧为所述第一P帧的参考帧;
所述第一设备基于所述I帧进行编码处理,得到所述I帧的编码帧;
所述第一设备基于每个P帧及其参考帧进行编码处理,得到每个P帧的编码帧。
2.如权利要求1所述的方法,其特征在于,
所述GOP中的视频帧数量G与层级数量L满足:G=2L-1,G、L均为大于1的整数。
3.如权利要求1或2所述的方法,其特征在于,每个视频帧对应的层级高于参考帧对应的层级,所述关键层级为所述多个层级中的最低层级;以及
所述第一设备在数据缓存区存在拥塞的情况下,将所述多个数据包中对应于至少一个非关键层级的数据包丢弃,包括:
所述第一设备在所述数据缓存区存在拥塞的情况下,按照层级由高到低的顺序,将所述多个数据包中对应于至少一个非关键层级的数据包丢弃。
4.如权利要求1所述的方法,其特征在于,所述第一设备获取待发送的多个数据包,包括:
所述第一设备对多个编码帧中的每个编码帧进行打包,得到所述多个数据包。
5.如权利要求1所述的方法,其特征在于,所述第一设备为转发服务器,所述第一设备获取待发送的多个数据包,包括:
所述转发服务器接收来自发送设备的所述多个数据包,所述多个数据包中的每个数据包包括扩展头,所述扩展头中携带层级的标识。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
在数据缓存区畅通的情况下,所述第一设备恢复对至少一个层级的数据包的发送。
7.一种视频数据的传输方法,其特征在于,包括:
接收设备接收至少一个数据包,所述至少一个数据包中的每个数据包对应一个层级,所述至少一个数据包对应于至少一个层级,所述至少一个层级包括关键层级,对应于所述关键层级的数据包包括关键数据包,所述关键数据包是对一个画面组GOP中的帧内编码图像I帧编码后打包得到;
所述接收设备基于所述至少一个数据包,进行解码处理;
所述至少一个数据包还包括由至少一个前向预测编码图像P帧及其参考帧编码后打包得到的数据包;其中,所述至少一个P帧中的任意一个第一P帧的参考帧是在发送设备确定GOP中每个视频帧对应的层级后确定的;在关键层级为最低层级时,至少一个P帧中每个P帧对应的层级高于参考帧对应的层级,在关键层级为最高层级时,至少一个P帧中每个P帧对应的层级低于参考帧对应的层级;且所述至少一个P帧中的第一P帧的参考帧是帧序号小于且最接近所述第一P帧的帧序号的视频帧,所述第一P帧是所述至少一个P帧中的任意一个。
8.如权利要求7所述的方法,其特征在于,所述接收设备基于所述至少一个数据包,进行解码处理,包括:
所述接收设备确定所述至少一个P帧中每个P帧对应的层级;
所述接收设备基于每个P帧对应的层级,确定每个P帧的参考帧;
所述接收设备基于所述I帧、所述至少一P帧中的每个P帧及其参考帧,进行解码处理。
9.一种视频数据的传输装置,其特征在于,包括处理器,所述处理器用于执行存储器中存储的计算机指令,以使得所述装置执行如权利要求1至8中任一项所述的方法。
CN202110728707.4A 2021-06-29 2021-06-29 一种视频数据的传输方法和装置 Active CN113365066B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110728707.4A CN113365066B (zh) 2021-06-29 2021-06-29 一种视频数据的传输方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110728707.4A CN113365066B (zh) 2021-06-29 2021-06-29 一种视频数据的传输方法和装置

Publications (2)

Publication Number Publication Date
CN113365066A CN113365066A (zh) 2021-09-07
CN113365066B true CN113365066B (zh) 2022-12-02

Family

ID=77537064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110728707.4A Active CN113365066B (zh) 2021-06-29 2021-06-29 一种视频数据的传输方法和装置

Country Status (1)

Country Link
CN (1) CN113365066B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220368622A1 (en) * 2021-05-11 2022-11-17 Jpmorgan Chase Bank, N.A. Systems and methods for network optimization using end user telemetry
WO2023130453A1 (en) * 2022-01-10 2023-07-13 Mediatek Singapore Pte. Ltd. Methods and apparatus of packet classification for xr traffic
CN114466224B (zh) * 2022-01-26 2024-04-16 广州繁星互娱信息科技有限公司 视频数据的编解码方法和装置、存储介质及电子设备
CN114430469A (zh) * 2022-04-01 2022-05-03 浙江大华技术股份有限公司 视频数据存储方法、读取方法、电子设备和可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101646077A (zh) * 2009-09-09 2010-02-10 南京工业大学 一种传感器网络中自适应的多媒体流控制方法
CN102130821A (zh) * 2010-08-11 2011-07-20 华为技术有限公司 一种iptv系统中丢包处理的方法、服务器及系统
CN103023688A (zh) * 2011-09-23 2013-04-03 赛格纳斯广播公司 用于优先化数据以在通信网络中智能丢弃的系统和方法
CN109151612A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 一种视频传输方法、设备及系统
CN113038128A (zh) * 2021-01-25 2021-06-25 腾讯科技(深圳)有限公司 数据传输方法、装置、电子设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8363548B1 (en) * 2008-12-12 2013-01-29 Rockstar Consortium Us Lp Method and system for packet discard precedence for video transport
WO2018072675A1 (en) * 2016-10-18 2018-04-26 Zhejiang Dahua Technology Co., Ltd. Methods and systems for video processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101646077A (zh) * 2009-09-09 2010-02-10 南京工业大学 一种传感器网络中自适应的多媒体流控制方法
CN102130821A (zh) * 2010-08-11 2011-07-20 华为技术有限公司 一种iptv系统中丢包处理的方法、服务器及系统
CN103023688A (zh) * 2011-09-23 2013-04-03 赛格纳斯广播公司 用于优先化数据以在通信网络中智能丢弃的系统和方法
CN109151612A (zh) * 2017-06-27 2019-01-04 华为技术有限公司 一种视频传输方法、设备及系统
CN113038128A (zh) * 2021-01-25 2021-06-25 腾讯科技(深圳)有限公司 数据传输方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN113365066A (zh) 2021-09-07

Similar Documents

Publication Publication Date Title
CN113365066B (zh) 一种视频数据的传输方法和装置
CN111740808B (zh) 一种数据传输方法及装置
US7958532B2 (en) Method of transmitting layered video-coded information
US8233539B2 (en) Method and apparatus for transmitting packet-based image frame
CN111800218B (zh) 一种数据流的传输方法和设备
US20060291475A1 (en) Selective forward error correction
US11350142B2 (en) Intelligent video frame dropping for improved digital video flow control over a crowded wireless network
JP2014014107A (ja) データストリームに対するブロックパーティショニング
WO2019062050A1 (zh) 直播管控方法、装置及电子设备
CN111147606A (zh) 数据传输的方法、装置、终端及存储介质
EP1371225B1 (en) Video encoding and transporting method for concealing the effects of packet loss in multi-channel packet switched networks
JP4041137B2 (ja) 映像符号化・送信装置,映像符号化・送信方法,映像符号化・送信プログラムおよびその記録媒体
KR102383892B1 (ko) 미디어 콘텐츠 기반의 자가 적응 시스템 코드 fec의 코딩 및 디코딩 방법, 장치, 시스템 및 매체
KR101286419B1 (ko) 데이터 패킷 처리 방법 및 장치
US20130089107A1 (en) Method and Apparatus for Multimedia Queue Management
CN106330713B (zh) 一种报文传输方法及装置
JP6291064B2 (ja) ビデオデータを符号化及び復号化する方法と装置
KR100713152B1 (ko) 홈네트워크 및 그의 채널할당방법
US10536708B2 (en) Efficient frame loss recovery and reconstruction in dyadic hierarchy based coding
KR101240808B1 (ko) 결정론적 패킷 누락에 대한 방법 및 시스템
Kozen et al. Efficient algorithms for optimal video transmission
US20090135818A1 (en) Method and device for forming, transferring and receiving transport packets encapsulating data representative of an image sequence
CN115834975B (zh) 一种视频传输方法、装置、设备及介质
JP2014011636A (ja) 送信装置、送信方法、及びプログラム
CN115802074B (zh) 一种多路视频传输方法、装置、设备及介质

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
GR01 Patent grant
GR01 Patent grant