CN110392284A - 视频编码、视频数据处理方法、装置、计算机设备和存储介质 - Google Patents

视频编码、视频数据处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN110392284A
CN110392284A CN201910689679.2A CN201910689679A CN110392284A CN 110392284 A CN110392284 A CN 110392284A CN 201910689679 A CN201910689679 A CN 201910689679A CN 110392284 A CN110392284 A CN 110392284A
Authority
CN
China
Prior art keywords
video
video frame
frame
image group
coding
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.)
Granted
Application number
CN201910689679.2A
Other languages
English (en)
Other versions
CN110392284B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910689679.2A priority Critical patent/CN110392284B/zh
Publication of CN110392284A publication Critical patent/CN110392284A/zh
Application granted granted Critical
Publication of CN110392284B publication Critical patent/CN110392284B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64784Data processing by the network
    • H04N21/64792Controlling the complexity of the content stream, e.g. by dropping packets

Landscapes

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

Abstract

本申请涉及一种视频编码、视频数据处理方法、装置、计算机设备和存储介质,所述视频编码方法包括:获取第一图像组中待编码的视频帧,对待编码的视频帧进行视频编码,所述第一图像组为视频中的图像组;当确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据,所述第二图像组包括所述当前编码视频帧的后向显示视频帧或者后向编码视频帧中的至少一个。上述视频编码方法可以减少无效的数据传输,节省传输资源。

Description

视频编码、视频数据处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及视频数据处理领域,特别是涉及视频编码、视频数据处理方法、装置、计算机设备和存储介质。
背景技术
随着多媒体技术和网络技术的飞速发展和广泛应用,人们在日常生活和生产活动大量使用视频信息。为了减少视频的传输数据量,需要对视频进行编码后再进行传输。然而,在对编码得到的编码数据进行传输时,经常出现编码得到的数据传输到解码端,无法解码成功,导致传输资源浪费的问题。
发明内容
基于此,有必要针对上述经常出现编码得到的数据传输到解码端,无法解码成功,导致传输资源浪费的问题,提供一种视频编码、视频数据处理方法、装置、计算机设备和存储介质。
一种视频编码方法,所述方法包括:获取第一图像组中待编码的视频帧,对待编码的视频帧进行视频编码,所述第一图像组为视频中的图像组;当确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据,所述第二图像组包括所述当前编码视频帧的后向显示视频帧或者后向编码视频帧中的至少一个。
一种视频编码装置,所述装置包括:待编码的视频帧编码模块,用于获取第一图像组中待编码的视频帧,对待编码的视频帧进行视频编码,所述第一图像组为视频中的图像组;第二图像组编码模块,用于当确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据,所述第二图像组包括所述当前编码视频帧的后向显示视频帧或者后向编码视频帧中的至少一个。
在一些实施例中,所述第二图像组编码模块包括:视频帧获取单元,用于将所述第一图像组中,所述当前编码视频帧对应的后向编码视频帧或者后向显示视频帧中的至少一个作为所述第二图像组中的视频帧;第二视频帧编码单元,用于对所述第二图像组中的第二视频帧进行编码,得到第二编码数据。
在一些实施例中,所述第二视频帧编码单元用于:获取所述第二视频帧对应的参考帧,根据所述参考帧对所述第二视频帧进行编码,得到所述第二编码数据,所述第二视频帧的参考帧包括对所述当前编码视频帧、所述后向编码视频帧或者所述后向显示视频帧中的至少一个,进行编码后再解码得到的视频帧。
在一些实施例中,所述装置还包括:起始编码视频帧确定模块,用于确定所述第二图像组的起始编码视频帧;参考帧集合清空模块,用于对所述起始编码视频帧对应的帧内编码数据进行解码,得到解码视频帧,清空参考帧集合,将所述解码视频帧作为新的参考帧加入到清空后的参考帧集合。
在一些实施例中,所述起始编码视频帧为所述当前编码视频帧,或者所述当前编码视频帧之后,下一个显示或者待编码的视频帧。
在一些实施例中,所述装置还包括:传输状态指示信息获取模块,用于获取所述解码端发送的传输状态指示信息;第二图像组编码模块用于:当根据所述传输状态指示信息确定所述视频中,所述当前编码视频帧的前向编码视频帧对应的编码数据丢失时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
在一些实施例中,所述第二图像组编码模块用于:当确定所述视频在传输过程中或者解码端发生丢帧时,确定丢失的视频帧所在的图像组;当丢失的视频帧所在的图像组为所述第一图像组时,放弃根据所述第一图像组中的视频帧参考关系对所述当前编码视频帧进行编码;否则,继续根据所述第一图像组中的视频帧参考关系对所述当前编码视频帧进行编码。
在一些实施例中,所述装置还包括:长度获取模块,用于获取所述第一图像组的长度;所述第二图像组编码模块用于:当所述第一图像组的长度大于预设长度,且确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对所述当前编码视频帧进行编码;否则,继续根据所述第一图像组中的视频帧参考关系对所述当前编码视频帧进行编码。
在一些实施例中,所述装置还包括:网络传输质量获取模块,用于获取网络传输质量;图像组长度确定模块,用于根据所述网络质量确定图像组的长度,所述网络传输质量与图像组的长度数量负相关。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述视频编码方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述视频编码方法的步骤。
上述视频编码方法、装置、计算机设备和存储介质,在确定视频在传输过程中或者解码端发生丢帧的情况下,放弃根据第一图像组中的视频帧参考关系进行视频帧的编码,进入对第二图像组的视频帧进行编码的步骤,因此可以减少由于第一图像组中在前编码的视频帧的编码数据丢失,根据第一图像组的参考关系进行编码得到的编码数据即使传输到解码端,也无法参考在前编码的视频帧进行解码的情况发生,因此可以减少无效的数据传输,节省传输资源。
一种视频数据处理方法,所述方法包括:接收编码端发送的编码数据,所述编码数据为对视频帧进行编码得到的;当根据所述编码数据确定第一图像组发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系进行解码,直至接收到第二图像组对应的编码数据,所述第二图像组包括所述第一图像组中的视频帧中的至少一个。
一种视频数据处理装置,所述装置包括:编码数据接收模块,用于接收编码端发送的编码数据,所述编码数据为对视频帧进行编码得到的;放弃解码模块,用于当根据所述编码数据确定第一图像组发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系进行解码,直至接收到第二图像组对应的编码数据。
在一些实施例中,所述装置还包括:传输状态指示信息发送模块,用于当根据所述编码数据确定所述第一图像组发生丢帧时,向所述编码端发送传输状态指示信息,所述传输状态指示信息用于指示所述编码端在确定在传输过程中或者解码端发生丢帧时存在丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对所述第二图像组的视频帧进行编码的步骤,得到第二编码数据。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述视频数据处理方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述视频数据处理的步骤。
上述视频数据处理方法、装置、计算机设备和存储介质,当确定第一图像组发生丢帧时,放弃根据第一图像组中的视频帧参考关系进行解码,直至接收到第二图像组对应的编码数据,因此可以减少即使获取得到编码数据,也无法参考在前编码的视频帧进行解码的情况发生,可以减少无效的解码,节省解码端的资源。
附图说明
图1为一些实施例中提供的视频编码方法的应用环境图;
图2为一些实施例中视频编码框架的示意图图;
图3为一些实施例中视频编码方法的流程图;
图4为一些实施例中图像组的参考关系的示意图;
图5为一些实施例中进入对第二图像组的视频帧进行编码的流程图;
图6为一些实施例中视频编码方法的流程图;
图7为一些实施例中视频数据处理方法的流程图;
图8为一些实施例中视频流网络传输模型的示意图;
图9为一些实施例中编码端与解码端的交互流程图;
图10为一些实施例中视频编码装置的结构框图;
图11为一些实施例中视频数据处理装置的结构框图;
图12为一些实施例中计算机设备的内部结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但除非特别说明,这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一图像组称为第二图像组,且类似地,可将第二图像组称为第一图像组。
图1为一些实施例中提供的视频编码方法的应用环境图,如图1所示,在该应用环境中,包括终端110以及服务器120。
终端110或服务器120可以通过编码器进行视频编码,或者通过解码器进行视频解码。终端110或服务器120也可以通过处理器运行视频编码程序进行视频编码,或者通过处理器运行视频解码程序进行视频解码。服务器120通过输入接口接收到终端110发送的编码数据后,可直接传递至处理器进行解码,也可存储至数据库中等待后续解码。服务器120在通过处理器对视频帧编码得到编码数据后,可通过输出接口发送至终端110。当然,服务器120也可以在获取终端110发送的编码数据后,发送到对应的接收终端中,由接收终端进行解码。
例如,在通过社交软件例如微信进行视频通话时,编码端对视频进行编码,将编码数据发送给社交软件对应的服务器,由该服务器将编码数据发送给解码端。
本申请实施例中,把进行编码的一端称为编码端,把进行解码的一端称为解码端。编码端可以是终端也可以是服务器,解码端可以是终端也可以是服务器。可以理解,虽然本申请实施例中,将进行视频编码的一端称为编码端,进行视频编码的一端称为解码端,但是编码端并不是就只能编码,解码端也不一定是只能解码。举个实际的例子,在进行实时视频传输例如视频通话时。假设通话的双方一个为用户y1,另一个为用户y2,则y1对应的终端可以录制视频,将进行编码后得到的编码数据发送给y2对应的终端,对于y1对应的终端录制的视频而言,y1对应的终端为编码端,y2对应的终端为解码端。Y2对应的终端可以录制视频,将进行编码后得到的编码数据发送给y1对应的终端,对于y2对应的终端录制的视频而言,y2对应的终端为编码端,y1对应的终端为解码端。
服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群,可以是提供云服务器、云数据库、云存储和CDN等基础云计算服务的云服务器。终端110可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱等,但并不局限于此。终端110以及服务器120可以通过网络等通讯连接方式进行连接,本申请在此不做限制。
图2为一些实施例中提供的视频编码方法对应的编码框架图,如图2所示,当编码端要进行视频编码时,获取待编码的视频帧,将一个视频帧分成多个待编码的图像块(以下称为编码块),编码控制模块可以选择视频帧的预测模式,预测模式可以为帧内预测或帧间预测。对帧内预测编码的编码块进行帧内空域预测,对帧间预测编码的编码块进行运动估计后进行运动补偿预测,得到预测值后将编码块的实际值与预测值相减得到预测残差,再通过变换和量化处理形成残差系数,最后通过熵编码器生成最终的编码数据。其中,在进行预测时,需要参考其他图像块得到编码块的预测值,由于编码时会存在损失,解码端接收到的数据是已经编码后得到的数据,故进行解码后得到的图像,与未编码的原始图像并不是完全相同。因此,为了保持编码以及解码中参考帧的一致性,需要重建视频帧,故可以将已编码的视频帧的编码数据进行反量化和反变换、滤波器控制、去块滤波等步骤,重建得到参考帧,存储在参考帧缓存区域中。
如图3所示,在一些实施例中,提出了一种视频编码方法,本实施例主要以该方法应用于上述图1中的终端110来举例说明。具体可以包括以下步骤:
步骤S302,获取第一图像组中待编码的视频帧,对待编码的视频帧进行视频编码,第一图像组为视频中的图像组。
具体地,图像组(Group Of Picture,GOP)是指一组图像,包括多个视频帧,多个是指两个以上。图像组中的视频帧是参考同一图像组的视频帧进行编码的,即对于帧间预测的视频帧,其参考帧是位于同一图像组的图像帧。一个图像组中,第一帧是IDR(Instantaneous Decoding Refresh,即时解码刷新)帧,从IDR帧开始,到下一个IDR帧之前的视频帧为一个图像组。IDR帧是帧内预测帧,在进行编码时,无需参考其他图像帧,利用本帧的信息进行视频帧的编码。当接收到新的IDR帧后,可以清空参考帧缓存中的参考帧,将新的IDR帧作为新的参考帧,因此,新的IDR帧之后的视频帧不再参考该IDR帧之前的帧进行解码。
视频是由视频帧序列组成的,可以包括多个视频帧。视频中一张图像为一个视频帧。一个视频可以分为多个图像组,例如可以包括第一图像组。可以将视频帧序列中连续的几张视频帧组成一个图像组。一个图像组中的视频帧的个数具体可以根据实际需要进行设置,例如可以为8。图像组中可以包括I帧、P帧和B帧三种类型的帧。也可以包括I帧以及P帧,没有B帧。其中I帧为帧内预测帧,不用参考其他视频帧进行预测。P帧为单向预测帧,可以采用帧间预测方式进行预测,P帧可以参考I帧或者P帧进行预测。B帧为双向预测帧,可以参考视频中,显示顺序在该视频帧前面的视频帧以及后面的视频帧进行预测,例如可以参考I帧或者P帧中的一个或者两个进行预测。图像组中规定了帧内编码帧以及帧间编码帧的编码顺序以及参考关系,即图像组中的视频帧的参考关系可以是预先设置好的。图像组中的视频帧的参考关系可以根据需要设置。
例如,可以设置图像组中,视频帧是按照显示顺序依次编码的,第一个视频帧为帧内预测帧,其他视频帧为帧间预测帧,帧间预测帧的参考帧为视频中,显示顺序在该视频帧之前的视频帧。又例如,假设图像组的视频帧有4个,设置第1个视频帧为帧内预测帧,第2个视频帧以及第3个视频帧为B帧,第4个视频帧为帧,因此该图像组中,编码的顺序依次为第1个视频帧、第4个视频帧、第2个视频帧、第3个视频帧。第4个视频帧的参考帧为第1个视频帧,第2个视频帧的参考帧为第4个视频帧以及第1个视频帧。第3个视频帧的参考帧为第4个视频帧以及第1个视频帧。
第一图像组是指当前正在编码的图像组,第一图像组中待编码的视频帧可以是第一图像组中任意的视频帧,待编码的视频帧可以随着时间在不断动态变化。例如,假设第一图像组是视频中的第9个视频帧到第15个视频帧组成的图像组,则待编码的视频帧可以是第10帧,当第10帧编码完毕后,则待编码的视频帧是第11帧。
步骤S304,当确定视频在传输过程中或者解码端发生丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据,第二图像组包括当前编码视频帧的后向显示视频帧或者后向编码视频帧中的至少一个。
具体地,丢帧是指对视频帧进行编码得到的编码数据丢失,可以是丢失一个视频帧对应的编码数据,也可以是丢失多个视频帧对应的编码数据。丢帧可以是在传输过程中发生的,也可以是在解码端丢失的。例如,由于网络质量的问题,传输过程中丢失了编码数据。又例如,编码数据需要经过服务器传输到解码端,则在服务器中也可能会丢失编码数据,即传输过程中丢失了编码数据。又例如,当解码端接收到编码数据后,可能由于设备的暂时性故障,丢失了部分编码数据。
当前编码视频帧是指当前正在编码的视频帧。后向编码视频帧为编码顺序在当前编码视频帧之后的视频帧,后向显示视频帧是指在视频中,显示顺序在在当前编码视频帧之后的视频帧。第二图像组是第一图像组之后的图像组。因此第二图像组可以包括当前编码视频帧的后向编码视频帧或者后向显示视频帧中的至少一个。一个视频帧的后向编码视频帧与后向显示视频帧可以是相同的,也可以不相同。当编码顺序与显示顺序不一致时,则后向编码视频帧与后向显示视频帧可以不同。当编码顺序与显示顺序一致时,则后向编码视频帧与后向显示视频帧相同。例如,图4中,当当前编码视频帧为第4个视频帧时,则后向显示视频帧为视频帧5、6以及7,后向编码视频帧为2、3、5、6以及7。
视频帧参考关系指示了视频帧在进行编码时,所需要参考的参考帧。例如参考关系可以包括图像组的第3个视频帧将第2个视频帧作为参考帧进行编码。第二图像组是与第一图像组不同的图像组,第二图像组与第一图像组不同是指第一图像组与第二图像组中的视频帧并不是完全相同的,但可以存在相同的视频帧。当确定丢帧时,则由于前向编码视频帧的编码数据已经丢失,即使编码端继续根据第一图像组中的视频帧参考关系进行视频帧的编码,将编码数据发送到解码端中,解码端也可能因为参考帧已经丢失,导致无法解码,故可以放弃根据一图像组中的视频帧参考关系对当前编码视频帧进行编码,而采用第二图像组中新的参考关系进行编码。这样,可以减少无效的传输。
第二编码数据是对第二图像组的视频帧进行编码得到的数据。第二图像组中的编码数据也可以是边编码边进行传输的,例如,当第二图像组中第1个视频帧编码完毕后,则发送对应的编码数据,并继续对第二图像组中第2个视频帧进行编码。
在一些实施例中,编码端可以根据解码端或者服务器发送的信息确定是否发生了丢帧,例如,解码端可以向编码端反馈接收成功或者接收失败的信息。当解码端发送的是接收成功的信息时,则编码端可以判断是否存在未接收到接收成功信息的视频帧,如果有,则确定视频在传输过程中或者解码端发生丢帧。当解码端发送的是接收失败的信息时,则编码端可以判断是否接收到接收失败的信息,如果有,则确定视频在传输过程中或者解码端发生丢帧。
上述视频编码方法,在确定视频在传输过程中或者解码端发生丢帧的情况下,放弃根据第一图像组中的视频帧参考关系进行视频帧的编码,进入对第二图像组的视频帧进行编码的步骤,因此可以减少由于第一图像组中在前编码的视频帧的编码数据丢失,根据第一图像组的参考关系进行编码得到的编码数据即使传输到解码端,也无法参考在前编码的视频帧进行解码的情况发生,因此减少无效的数据传输,节省传输资源。
在一些实施例中,编码端可以获取传输状态指示信息;确定视频在传输过程中或者解码端发生丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码包括:当根据传输状态指示信息确定视频中,当前编码视频帧的前向编码视频帧对应的编码数据丢失时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
具体地,传输状态指示信息用于指示编码数据是否传输成功,传输状态指示信息可以为传输成功或者传输失败,可以是当传输成功时,发送传输状态指示信息,也可以是当传输失败时,发送传输状态指示信息。编码端获取的可以是第一编码数据的传输状态指示信息,第一编码数据是对当前编码视频帧的前向编码视频帧进行编码得到的编码数据。当前编码视频帧是指当前正在编码的视频帧,当前编码视频帧是第一图像组中的视频帧。前向编码视频帧是编码顺序在当前编码视频帧之前的视频帧。在进行视频编码时,可以是按照视频帧在视频中的显示顺序依次进行编码的,也可以是不按照视频帧在视频中的显示顺序进行编码的,即显示顺序与编码顺序可以相同也可以不同。前向编码视频帧可以是第一图像组中的视频帧,也可以不是第一图像组中的视频帧。
编码端在进行视频编码时,是边编码边传输编码数据的。编码数据可以是直接发送给解码端,也可以是通过其他设备例如服务器转发到解码端的。故第一编码数据对应的传输状态信息可以是解码端发送的,也可以是转发编码数据的服务器发送的。例如,假设当编码端将第6个视频帧的编码数据发送给服务器时,由于网络质量差,在传输给服务器的过程中就已经丢失编码数据,则服务器在接收到第7个视频帧的编码数据时,判断第6个视频帧的编码数据丢失了,则可以向编码端发送传输状态指示信息,指示有编码数据传输失败。
在一些实施例中,传输状态指示信息中可以携带视频帧对应的视频帧标识,也可以不携带视频帧对应的视频帧标识。例如,假设丢失的是第6个视频帧,则传输状态指示信息可以携带视频帧的序号6,也可以不携带视频帧的序号6。
举个实际的例子,假设图像组中有7个视频帧,序号1到7表示视频帧在视频中的显示顺序。第1个视频帧是IDR帧,则视频帧的类型以及参考关系可以如图4所示。图4中,1根柱子表示1个视频帧,假设箭头起点是a视频帧,终点是b视频帧,则表示b视频帧的参考帧为a。第1个视频帧是IDR帧。因此由图4可以看出,在该图像组中,视频帧的编码顺序可以为:1、4、2、3、7、5、6。
在根据传输状态指示信息确定编码数据是否传输失败时,如果是当传输成功时,发送传输状态指示信息,则可以确定是否接收到已发送的编码数据的传输成功信息,如果没有,则确定编码数据传输失败。如果是当传输失败时,发送传输状态指示信息,则可以是当接收到传输失败指示信息时,确定编码数据传输失败。
在一些实施例中,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码后,可以跳过第一图像组的视频帧,将视频帧中第一图像组的视频帧之后的视频帧作为第二图像组的视频帧,对第二图像组的视频帧进行编码。例如,假设视频是已经预先录制好的,已经预先分好了图像组,第1个图像组为1至10帧,第2个图像组为11至20帧,假设当前编码视频帧是第6个视频帧,在编码第6个视频帧时,接收到了前向编码视频帧传输失败的消息,则可以跳过对第1个图像组的视频帧进行编码的步骤,即放弃对第7、8、9、10个视频帧进行编码,进入到对第11个视频帧进行编码的步骤。可以理解,在对第2个图像组的视频帧进行编码时,如果再次接收到传输失败的消息,则可以放弃对第2个图像组的视频帧进行编码,进入对第3个图像组进行编码的步骤。
在一些实施例中,可以将第一图像组中编码顺序在当前视频编码帧之后的视频帧作为第二图像组的视频帧。
在一些实施例中,编码端可以将第二编码数据发送给解码端。
具体地,得到第二编码数据后,编码端可以将第二编码数据直接发给解码端,也可以通过服务器将第二编码数据发送给解码端。
在一些实施例中,当确定视频在传输过程中或者解码端发生丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码包括:当确定视频在传输过程中或者解码端发生丢帧时,确定丢失的视频帧所在的图像组;当丢失的视频帧所在的图像组为第一图像组时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码;否则,继续根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
具体地,当确定视频在传输过程中或者解码端发生丢帧时,例如根据传输状态指示信息确定编码数据传输失败时,确定丢失的视频帧所在的图像组。例如传输状态指示信息中可以携带用于确定传输失败的编码数据所在的图像组的相关信息。例如可以携带图像组标识,编码端可以根据该图像组标识确定传输失败的编码数据所在的图像组。传输状态指示信息中也可以携带传输失败的编码数据的视频帧标识,编码端根据视频帧标识确定所在的图像组。例如,可以携带编码数据对应的视频帧在视频中的序号。编码端可以记录视频帧序号与图像组的对应关系,根据视频帧序号与图像组的对应关系得到编码数据所在的图像组。
当丢失的视频帧所在的图像组为第一图像组,即丢失的编码数据对应的视频帧是第一图像组的视频帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤。如果丢失的编码数据不是对第一图像组的视频帧进行编码得到的编码数据,说明是第一图像组之前的图像组中的视频帧的编码数据传输失败,并不会影响第一图像组中的视频帧的解码,故可以不放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
因此,本申请实施例提供的视频编码方法,当确定视频在传输过程中或者解码端发生丢帧时时,可以实施两种实施方案中的任一个,一种是在不判断丢失的视频帧所在的图像组的情况下,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,这样可以节省判断步骤。传输状态指示信息也无需携带用于确定传输失败的编码数据所在的图像组的相关信息,响应速度快,可以快速进入对第二图像组的视频帧进行编码的步骤。另一种是确定丢失的视频帧所在的图像组,当丢失的编码数据所在的图像组为第一图像组时,再放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,这样,减少放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码的情况发生,可以减少对当前编码的视频帧的影响。
在一些实施例中,视频编码方法还可以包括:获取第一图像组的长度;当当确定视频在传输过程中或者解码端发生丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码包括:当第一图像组的长度大于预设长度,且确定视频在传输过程中或者解码端发生丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码;否则,继续根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
具体地,图像组的长度可以用图像组中视频帧的数量也可以用图像组的时间长度表示,可以根据需要设置。例如,一个视频帧的长度,可以为12个视频帧,也可以为长12秒。预设长度可以根据需要设置,例如可以是15个视频帧,也可以是16秒。当第一图像组长度大于预设长度,且视频在传输过程中或者解码端发生丢帧时,再放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码。由于当第一图像组的长度比较小时,即使其中的一个视频帧的编码数据丢失,造成第一图像组中后续编码的视频帧在解码端解码失败,视频卡顿的时间也是比较小的,不会导致解码端播放视频时,存在长时间卡顿,因此在第一图像组中视频帧的长度小于预设长度,可以继续根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
在一些实施例中,编码端在传输第一图像组的视频帧对应的编码数据时,可以携带第一图像组的长度,例如视频帧的个数,因此,当解码端或者服务器接收到编码数据时,可以判断第一图像组中的长度例如视频帧的个数,当确定第一图像组的长度大于预设长度时,且确定存在丢失的编码数据时,再向编码端发送传输状态指示信息。当确定第一图像组的长度小于预设长度时,则可以不向编码端发送传输状态指示信息。
在一些实施例中,如图5所示,进入对第二图像组的视频帧进行编码的步骤包括:
步骤S502,将第一图像组中,当前编码视频帧对应的后向编码视频帧或者后向显示视频帧中的至少一个作为第二图像组中的视频帧。
具体地,可以将第一图像组中,当前编码视频帧的所有后向编码视频帧作为第二图像组中的视频帧。也可以将第一图像组中,当前编码视频帧的所有后向显示视频帧作为第二图像组中的视频帧。例如,假设根据显示顺序,第一图像组依次包括a1、a2、a3、a4以及a5视频帧,当前编码视频帧为a3,则可以将a4以及a5作为第二图像组中的视频帧。
在一些实施例中,也可以将当前编码视频帧作为第二图像组中的视频帧。例如,可以将当前编码视频帧作为第二图像组中的第一个视频帧,即起始视频帧。当然,也可以是将当前编码视频帧中之后的第一个后向编码视频帧或者后向显示视频帧作为第二图像组中的第一个视频帧。
步骤S504,对第二图像组中的第二视频帧进行编码,得到第二编码数据。
具体地,第二视频帧是指第二图像组的视频帧。对第二视频帧进行编码,得到第二编码数据。
在一些实施例中,对第二图像组中的第二视频帧进行编码,得到第二编码数据包括:获取第二视频帧对应的参考帧,根据参考帧对第二视频帧进行编码,得到第二编码数据,第二视频帧的参考帧包括对当前编码视频帧、后向编码视频帧或者后向显示视频帧中的至少一个,进行编码后再解码得到的视频帧。
具体地,参考帧是在进行编码时所需要参考的视频帧。为了保持编码端以及解码端中参考帧的一致性,因此需要将视频帧进行编码,再经过重建即解码得到参考帧。对于第二图像组中的帧间预测帧,其参考帧为第二图像组中进行编码并重建得到的视频帧。帧间预测帧可以是P帧,也可以是B帧,因此其参考帧可以有1个或者2个。可以理解,这里的进行编码后,再解码得到参考帧时,可以并不是经历完整的编码过程,能够达到编码与解码对应的参考帧是一致的即可。例如,如图2所示,进行重建时,可以不必经过熵编码的步骤。
在一些实施例中,如图6所示,视频编码方法还可以包括以下步骤:
步骤S602,确定第二图像组的起始编码视频帧。
具体地,在进入对第二图像组进行编码时,起始编码视频帧是第二图像组中第一个编码的视频帧,起始视频帧是第二图像组中,显示顺序为第一个的视频帧。起始视频帧可以是起始编码视频帧,也可以不是。第二图像组可以是从起始视频帧开始,连续的N个视频帧组成的图像组,N为大于1的正整数,
在一些实施例中,起始编码视频帧为当前编码视频帧或者当前编码视频帧之后,下一个显示或者待编码的视频帧。再参考图4,假设当前编码视频帧为第4个视频帧,则起始编码视频帧可以为第4个视频帧,或者起始编码视频帧可以为第4个视频帧之后,下一个待编码的视频帧即视频帧2,或者起始编码视频帧可以为第4个视频帧之后,下一个显示的视频帧即视频帧5。
步骤S604,对起始编码视频帧对应的帧内编码数据进行解码,得到解码视频帧,清空参考帧集合,将解码视频帧作为新的参考帧加入到清空后的参考帧集合。
具体地,帧内编码数据是进行帧内编码得到的数据。参考帧集合中可以包括一个或多个参考帧。参考帧集合可以存储在参考帧缓存中。由于帧间编码时,需要参考其他视频帧进行编码,因此可以将参考帧放到缓存中,缓存中存储了一个或多个参考帧,即参考帧集合。确定第二图像组的起始编码视频帧之后,对起始编码视频帧进行帧内编码,得到起始编码视频帧对应的帧内编码数据,这里的编码数据可以是经历了完整的编码过程得到的数据,也可以并不是经历完整的编码过程得到的数据,例如可以是进行了变换和反量化得到的数据,能够达到编码与解码对应的参考帧是一致的即可。得到解码视频帧后,可以清空缓存中的参考帧,将对第二图像组中的起始编码视频帧进行重建得到的重建视频帧作为新的参考帧,这样,后续编码的视频帧,参考的并不是在第二图像组之前的视频帧,而是对第二图像组的起始编码视频帧或者之后的视频帧,进行编码并重建得到的视频帧,故即使第一图像组中,有些编码数据在传输过程中丢失了,也不会导致第二图像组以及之后的视频帧的编码数据在解码端解码失败,因此提高了解码的效率,也避免了无效的传输。
可以理解,虽然步骤S602以及S604在图6中是在进入对第二图像组进行编码,得到第二编码数据之后执行的,但实际上,步骤S602以及S604是在进入对第二图像组进行编码,得到第二编码数据的过程中执行的。在进入对第二图像组进行编码时,执行确定第二图像组的起始编码视频帧的步骤即步骤S602,然后对起始编码视频帧进行编码,得到帧内编码数据,将帧内编码数据发送给解码端,并执行步骤S604,即对起始编码视频帧对应的帧内编码数据进行解码,得到解码视频帧,清空参考帧集合,将解码视频帧作为新的参考帧加入到清空后的参考帧集合。解码视频帧加入到清空后的参考帧集合后,可以根据参考帧集合中的参考帧对第二图像组中起始编码视频帧的下一个视频帧进行编码。
在一些实施例中,图像组中视频帧的数量可以是固定的也可以是动态变化的,例如,图像组中的视频帧的数量可以是8。在一些实施例中,也可以获取网络传输质量;根据网络质量确定图像组的长度,网络传输质量与图像组的长度数量负相关。
具体地,网络传输质量可以用数据包丢失率、数据包丢包数量或者网络传输速度中的至少一种表示。当然还可以用其他描述网络传输质量的参数表示。网络传输质量与图像组长度负相关是指:当网络传输质量越好时,则图像组的长度越短,即视频帧的数量越小,当网络传输质量越差时,则图像组中视频帧的数量越大。例如,当传输速度越大时,则图像组中视频帧的数量越小。可以设置当传输速度为0至100bps(bits per second,秒传送的比特数)时,图像组中视频帧的数量为20,当传输速度为101至300bps时,图像组中视频帧的数量为10。因为对于一个GOP而言,是必须包括IDR帧的,IDR帧为帧内编码帧,编码后的数据量相对于P帧以及B帧而言,数据量会大很多。故如果GOP中视频帧数量小时,单位时间内IDR帧更多,所以需要的视频流量更大,会给数据的传输带来更大的负担,故可以在网络传输质量差时,增大GOP中视频帧的数量,减少单位时间内的IDR帧数量,以减少编码数据的数据量,而且,在增大中视频帧的数量时,即使存在传输过程中视频帧对应的编码数据丢失的情况,编码端也可以接收到第一编码数据对应的传输状态指示信息,当传输状态指示信息指示前向编码视频帧的编码数据传输失败时,可以放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,也可以减少解码端缺失的视频帧的数量过大,导致视频卡顿时间长的情况发生。
举个实际的例子,在对第一图像组进行编码时,第一图像组中的视频帧数量为20,当接收到传输状态指示信息,指示存在丢失的数据包时,则在进入对第二图像组的视频帧进行编码时,可以根据网络传输质量确定图像组中视频帧的数量,根据图像组中视频帧的数量确定对应的数量的视频,组成第二图像组。
如图7所示,在一些实施例中,提出了一种视频数据处理方法,本实施例主要以该方法应用于上述图1中解码端来举例说明。具体可以包括以下步骤:
步骤S702,接收编码端发送的编码数据,编码数据为对视频帧进行编码得到的。
具体地,解码的终端接收编码端发送的编码数据。编码数据为对视频帧进行编码得到的。
步骤S704,当根据编码数据确定第一图像发生丢帧时,放弃根据第一图像组中的视频帧参考关系进行解码,直至接收到第二图像组对应的编码数据。
具体地,当确定编码数据确定存在缺失的编码数据时,例如当接收到的编码数据中,对应的视频帧序号存在缺失时,即不连续时,则说明有编码数据在传输过程中丢失了,可以确定存在丢帧。将丢帧的图像组作为第一图像组,放弃根据第一图像组中的视频帧参考关系进行解码,直至接收到第二图像组对应的编码数据。
例如,当确定丢帧时,解码端接收新的编码数据,新的编码数据是在确定存在丢失的编码数据之后接收到的编码数据。当接收到新的编码数据所在的图像组与丢失的编码数据所在的图像组相同时,即为第一图像组的数据时,则说明新的编码数据可能会因为需要参考根据丢失的编码数据进行解码得到的视频帧进行解码,而导致解码失败,故可以丢弃新的编码数据。直至接收到第二图像组对应的编码数据,即直至接收到新的图像组对应的编码数据时,不再丢弃编码数据。例如,当解码端接收到新的IDR帧对应的编码数据时,则可确定是第二图像组的编码数据,放弃丢弃编码数据。
上述视频数据处理方法,当确定第一图像组发生丢帧时,放弃根据第一图像组中的视频帧参考关系进行解码,直至接收到第二图像组对应的编码数据,因此可以减少即使获取得到编码数据,也无法参考在前编码的视频帧进行解码的情况发生,可以减少无效的解码,节省解码端的资源。
在一些实施例中,视频数据处理方法还包括:当根据编码数据确定第一图像组发生丢帧时,向编码端发送传输状态指示信息,传输状态指示信息用于指示编码端在确定在传输过程中或者解码端发生丢帧时存在丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据。
具体地,在一些实施例中,本申请实施例提供的方法可以包括以下步骤:
1、编码端获取待编码的视频。
具体地,待编码的视频可以是已经提前采集得到的,也可以是边编码边录制的,即实时采集的。例如在进行直播时,直播设备可以在进行视频的采集的同时,对采集得到的视频帧进行编码并传输。
2、编码端获取第一图像组中待编码的视频帧,对待编码的视频帧进行视频编码。
具体地,假设图像组的长度为20帧,则可以将视频的第1至第20帧作为第1个图像组,编码时,可以依次获取图像组中的视频帧进行编码,例如,首先对第1个视频帧进行帧内编码,将帧内编码得到的数据发送给解码端,并对第1个视频帧的帧内编码数据进行解码,将解码得到的视频帧作为参考帧,根据参考帧对第2个视频帧进行帧间编码。
3、解码端接收编码数据,确定是否存在缺失的编码数据,当根据编码数据确定存在缺失的编码数据时,向编码端发送传输状态指示信息。
具体地,假设解码端接收到第1个视频帧对应的编码数据后,接收到的下一个编码数据为第3个视频帧对应的编码数据,视频帧的序号不连续,说明第2个视频帧对应的编码数据在传输过程中丢失。则可以向编码端发送传输状态指示信息,指示有编码数据丢失。同时,解码端可以丢失第2个视频帧之后的编码数据,直至接收到新的IDR帧,再根据新的IDR帧对后续接收到的编码数据进行解码。
4、编码端获取传输状态指示信息。
具体地,例如当根据参考帧对第4个进行帧间编码时,即第4个视频帧为当前编码视频帧时,接收到编码数据传输失败的指示信息,说明前面编码的视频帧的数据有丢失。
5、当确定有编码数据传输失败时,编码端放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤。
具体地,当确定有编码数据传输失败时,如果第4个视频帧为当前编码视频帧,则放弃根据第1至第20帧组成的图像组的参考关系进行编码的步骤,将第4个视频帧作为第2个图像组的第1个视频帧,开始对第4个视频帧进行帧内编码,将第4个视频帧作为第2个图像组的IDR帧。第4个至第23个视频帧为第2个图像组的视频帧。
6、编码端继续将编码得到的第二编码数据发送给解码端。
可以理解,如果在对第2个图像组的视频帧进行编码时,此时第2个图像组为当前正在编码的图像组,为新的第一图像组,如果还接收到传输状态指示信息,确定有编码数据丢失,则放弃根据第2个图像组的参考关系进行视频编码,并进入到对第3个图像组进行编码的步骤。
本申请实施例提供的方法可以应用在H.264视频编码中,H.264是一种视频编码压缩格式。例如,如图8所示,当编码端获取到视频流之后,编码端中的编码器对视频流进行编码,得到编码数据流(也称为H264流)通过网络模块传输到解码端,这样可以压缩视频数据量,节省网络带宽。解码端的解码器对编码数据流进行解码,得到视频流。解码端可以边解码边播放视频。
由于GOP中视频帧的数量小,则意味着单位时间内IDR帧更多,需要的视频流量更大。在实际应用中,网络带宽往往就是视频应用最大的瓶颈。特别在分辨率非常大的应用场景上,需要的视频流量就要求更多。而在保证画质的情况下,GOP中视频帧的数量越大,则编码码率越小。例如一般在相同的分辨率、帧率的编码状态下,GOP长度为10秒,相对于GOP长度为1秒的编码方式,能节省约6倍左右带宽。因此本申请实施例提供的视频编码方法可以应用于视频通话以及视频直播等实时视频传输中,也可以应用于分辨率要求高的场景中例如屏幕截图分享应用场景中,以进行远程教学,也可以用于图像内容变化少的应用场景中。可以设置当应用场景为实时视频传输或者分辨率大于预设分辨率时中的一个或多个条件满足时,则采用本申请实施例提供的视频编码方法。
在应用本申请实施例提供的视频编码方法时,可以增加GOP中视频帧的数量,并采用当有传输失败的编码数据,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的方法,来解决由于编码数据例如IDR帧的编码数据缺失,且GOP中视频帧的数量大,导致视频播放时卡顿时间长的问题。这样,既可以节省网络带宽,又可以使得视频播放时卡顿时间小。本申请实施例提供的视频编解码方法,可以采用双向的信令通信的交互方式,当解码端的解码器发现出现丢帧时,可以立即发送信令,指示编码器有编码数据传输失败,以通知编码端放弃当前的GOP编码,触发一个新的GOP编码。这样能大大缩减GOP长度长时,因丢帧引发视频长时间卡顿的时间。
如图9所示,为一些实施例中的编码端与解码端的交互流程图。本申请实施例以视频直播应用场景为例进行说明。当编码端对应的用户即需要进行直播的用户,对直播设备上进入视频直播房间的操作控件进行操作时,直播设备会按顺序逐步启动视频采集模块、视频编码模块、视频传输网络模块以及第一信令网络模块。此时的编码器是长GOP的编码模式,即GOP的长度超过预设长度的编码模式,预设长度可以用时间长度标识,预设长度可以根据具体业务进行设置,例如可以是10秒、20秒或者30秒等。编码端成功启动所有模块后,编码后的每一帧都带上递增的序列号,并推送H264码流数据到服务器,即网络上。当解码端的用户,即收看直播的用户,选择进入直播房间时,解码端会启动视频接收网络模块、启动视频解码模块、启动视频渲染模块、启动第二信令网络模块。解码端成功启动所有模块后,正常接收H264码流数据,并进行解码成一帧一帧的视频图像,送入视频渲染模块进行视频图像显示。当视频解码模块发现视频网络传输模块传输过来的待解码视频帧序列不连续时,预测出现视频帧的编码数据在网络传输过程中出现丢失的情况,可以调用第二信令网络模块发送丢帧信令,以通知编码端。并丢弃当前GOP后续的编码数据直到下一个IDR帧传输到解码端。当编码端收到解码端出现丢帧的信令,会放弃根据当前GOP的参考关系对后续的视频帧进行编码,让当前GOP提前结束,并触发将当前编码视频帧作为新的GOP中的IDR帧,进入到对新的GOP进行编码,以根据新的参考关系进行编码的步骤。
如图10所示,在一些实施例中,提供了一种视频编码装置,该视频编码装置可以集成于上述的终端110或者服务器120中,具体可以包括待编码的视频帧编码模块1002以及第二图像组编码模块1004。
待编码的视频帧编码模块1002,用于获取第一图像组中待编码的视频帧,对待编码的视频帧进行视频编码,第一图像组为视频中的图像组。
第二图像组编码模块1004,用于当确定视频在传输过程中或者解码端发生丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据,第二图像组包括当前编码视频帧的后向显示视频帧或者后向编码视频帧中的至少一个。
在一些实施例中,第二图像组编码模块1004包括:
视频帧获取单元,用于将第一图像组中,当前编码视频帧对应的后向编码视频帧或者后向显示视频帧中的至少一个作为第二图像组中的视频帧。
第二视频帧编码单元,用于对第二图像组中的第二视频帧进行编码,得到第二编码数据。
在一些实施例中,第二视频帧编码单元用于:获取第二视频帧对应的参考帧,根据参考帧对第二视频帧进行编码,得到第二编码数据,第二视频帧的参考帧包括对当前编码视频帧、后向编码视频帧或者后向显示视频帧中的至少一个,进行编码后再解码得到的视频帧。
在一些实施例中,视频编码装置还包括:
起始编码视频帧确定模块,用于确定第二图像组的起始编码视频帧。
参考帧集合清空模块,用于对起始编码视频帧对应的帧内编码数据进行解码,得到解码视频帧,清空参考帧集合,将解码视频帧作为新的参考帧加入到清空后的参考帧集合。
在一些实施例中,起始编码视频帧为当前编码视频帧,或者当前编码视频帧之后,下一个显示或者待编码的视频帧。
在一些实施例中,装置还包括:传输状态指示信息获取模块,用于获取解码端发送的传输状态指示信息;第二图像组编码模块用于:当根据传输状态指示信息确定视频中,当前编码视频帧的前向编码视频帧对应的编码数据丢失时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
在一些实施例中,第二图像组编码模块1004用于:当确定视频在传输过程中或者解码端发生丢帧时,确定丢失的视频帧所在的图像组。当丢失的视频帧所在的图像组为第一图像组时,放弃根据第一图像组中的视频帧参考关系对所述当前编码视频帧进行编码。否则,继续根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
在一些实施例中,视频编码装置还包括:长度获取模块,用于获取第一图像组的长度;第二图像组编码模块1004用于:当第一图像组的长度大于预设长度,且确定视频在传输过程中或者解码端发生丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码;否则,继续根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
在一些实施例中,视频编码装置还包括:
网络传输质量获取模块,用于获取网络传输质量。
图像组长度确定模块,用于根据网络质量确定图像组的长度,网络传输质量与图像组的长度数量负相关。
如图11所示,在一些实施例中,提供了一种视频数据处理装置,该视频数据处理装置可以集成于上述的终端或者服务器120中,具体可以包括编码数据接收模块1102以及放弃解码模块1104。
编码数据接收模块1102,用于接收编码端发送的编码数据,编码数据为对视频帧进行编码得到的;
放弃解码模块1104,用于当根据编码数据确定第一图像组发生丢帧时,放弃根据第一图像组中的视频帧参考关系进行解码,直至接收到第二图像组对应的编码数据。
在一些实施例中,视频数据处理装置还包括:传输状态指示信息发送模块,用于当根据编码数据确定第一图像组发生丢帧时,向编码端发送传输状态指示信息,传输状态指示信息用于指示编码端在确定在传输过程中或者解码端发生丢帧时存在丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据。
图12示出了一些实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110。如图12所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现视频编码方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行视频编码方法或者视频数据处理方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置,例如对于服务器,可以不存在显示屏。
在一些实施例中,本申请提供的视频编码装置以及视频数据处理装置可以实现为一种计算机程序的形式,计算机程序可在如图12所示的计算机设备上运行。计算机设备的存储器中可存储组成该视频编码装置的各个程序模块,比如,图10所示的待编码的视频帧编码模块1002以及第二图像组编码模块1004。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的视频编码方法中的步骤。
例如,图12所示的计算机设备可以通过如图10所示的视频编码装置中的待编码的视频帧编码模块1002,用于获取第一图像组中待编码的视频帧,对待编码的视频帧进行视频编码,第一图像组为视频中的图像组。通过第二图像组编码模块1004当确定视频在传输过程中或者解码端发生丢帧时,放弃根据第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据,第二图像组包括当前编码视频帧的后向显示视频帧或者后向编码视频帧中的至少一个。
在一些实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述视频编码方法或者视频数据处理方法的步骤。此处视频编码方法的步骤可以是上述各个实施例的视频编码方法中或者视频数据处理方法的步骤。
在一些实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述视频编码方法或者视频数据处理方法的步骤。此处视频编码方法的步骤可以是上述各个实施例的视频编码方法或者视频数据处理方法中的步骤。
应该理解的是,虽然本申请各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种视频编码方法,所述方法包括:
获取第一图像组中待编码的视频帧,对待编码的视频帧进行视频编码,所述第一图像组为视频中的图像组;
当确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据,所述第二图像组包括所述当前编码视频帧的后向显示视频帧或者后向编码视频帧中的至少一个。
2.根据权利要求1所述的方法,其特征在于,所述进入对第二图像组的视频帧进行编码的步骤包括:
将所述第一图像组中,所述当前编码视频帧对应的后向编码视频帧或者后向显示视频帧中的至少一个作为所述第二图像组中的视频帧;
对所述第二图像组中的第二视频帧进行编码,得到第二编码数据。
3.根据权利要求2所述的方法,其特征在于,所述对所述第二图像组中的第二视频帧进行编码,得到第二编码数据包括:
获取所述第二视频帧对应的参考帧,根据所述参考帧对所述第二视频帧进行编码,得到所述第二编码数据,所述第二视频帧的参考帧包括对所述当前编码视频帧、所述后向编码视频帧或者所述后向显示视频帧中的至少一个,进行编码后再解码得到的视频帧。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定所述第二图像组的起始编码视频帧;
对所述起始编码视频帧对应的帧内编码数据进行解码,得到解码视频帧,清空参考帧集合,将所述解码视频帧作为新的参考帧加入到清空后的参考帧集合。
5.根据权利要求4所述的方法,其特征在于,所述起始编码视频帧为所述当前编码视频帧,或者所述当前编码视频帧之后,下一个显示或者待编码的视频帧。
6.根据权利要求1述的方法,其特征在于,所述方法包括:
获取传输状态指示信息;
所述确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码包括:
当根据所述传输状态指示信息确定所述视频中,所述当前编码视频帧的前向编码视频帧对应的编码数据丢失时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码。
7.根据权利要求1述的方法,其特征在于,所述当确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码包括:
当确定所述视频在传输过程中或者解码端发生丢帧时,确定丢失的视频帧所在的图像组;
当丢失的视频帧所在的图像组为所述第一图像组时,放弃根据所述第一图像组中的视频帧参考关系对所述当前编码视频帧进行编码;
否则,继续根据所述第一图像组中的视频帧参考关系对所述当前编码视频帧进行编码。
8.根据权利要求1述的方法,其特征在于,所述方法还包括:
获取所述第一图像组的长度;
所述当确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码包括:
当所述第一图像组的长度大于预设长度,且确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对所述当前编码视频帧进行编码;
否则,继续根据所述第一图像组中的视频帧参考关系对所述当前编码视频帧进行编码。
9.根据权利要求1述的方法,其特征在于,所述方法还包括:
获取网络传输质量;
根据所述网络质量确定图像组的长度,所述网络传输质量与图像组的长度数量负相关。
10.一种视频数据处理方法,所述方法包括:
接收编码端发送的编码数据,所述编码数据为对视频帧进行编码得到的;
当根据所述编码数据确定第一图像组发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系进行解码,直至接收到第二图像组对应的编码数据。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
当根据所述编码数据确定所述第一图像组发生丢帧时,向所述编码端发送传输状态指示信息,所述传输状态指示信息用于指示所述编码端在确定在传输过程中或者解码端发生丢帧时存在丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对所述第二图像组的视频帧进行编码的步骤,得到第二编码数据。
12.一种视频编码装置,所述装置包括:
待编码的视频帧编码模块,用于获取第一图像组中待编码的视频帧,对待编码的视频帧进行视频编码,所述第一图像组为视频中的图像组;
第二图像组编码模块,用于当确定所述视频在传输过程中或者解码端发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系对当前编码视频帧进行编码,进入对第二图像组的视频帧进行编码的步骤,得到第二编码数据,所述第二图像组包括所述当前编码视频帧的后向显示视频帧或者后向编码视频帧中的至少一个。
13.一种视频数据处理装置,所述装置包括:
编码数据接收模块,用于接收编码端发送的编码数据,所述编码数据为对视频帧进行编码得到的;
放弃解码模块,用于当根据所述编码数据确定第一图像组发生丢帧时,放弃根据所述第一图像组中的视频帧参考关系进行解码,直至接收到第二图像组对应的编码数据,所述第二图像组包括所述第一图像组中的视频帧中的至少一个。
14.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1至9中任一项权利要求所述视频编码方法或者权利要求10至11中任一项权利要求所述视频数据处理方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至9中任一项权利要求所述视频编码方法或者权利要求10至11中任一项权利要求所述视频数据处理方法的步骤。
CN201910689679.2A 2019-07-29 2019-07-29 视频编码、视频数据处理方法、装置、计算机设备和存储介质 Active CN110392284B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910689679.2A CN110392284B (zh) 2019-07-29 2019-07-29 视频编码、视频数据处理方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910689679.2A CN110392284B (zh) 2019-07-29 2019-07-29 视频编码、视频数据处理方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN110392284A true CN110392284A (zh) 2019-10-29
CN110392284B CN110392284B (zh) 2022-02-01

Family

ID=68287835

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910689679.2A Active CN110392284B (zh) 2019-07-29 2019-07-29 视频编码、视频数据处理方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN110392284B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111986348A (zh) * 2020-07-27 2020-11-24 广州亚美智造科技有限公司 视频、车载视频的循环缓存方法、装置和计算机设备
CN112929747A (zh) * 2021-01-18 2021-06-08 北京洛塔信息技术有限公司 基于网络反馈的视频编码方法、装置、设备及存储介质
CN113365143A (zh) * 2021-05-31 2021-09-07 努比亚技术有限公司 一种音频爆音的消除方法及相关设备
CN115190309A (zh) * 2022-06-30 2022-10-14 北京百度网讯科技有限公司 视频帧处理方法、训练方法、装置、设备及存储介质
CN115412763A (zh) * 2021-05-28 2022-11-29 中国移动通信有限公司研究院 视频数据的传输方法、终端及服务器
WO2022262602A1 (zh) * 2021-06-16 2022-12-22 百果园技术(新加坡)有限公司 视频编解码方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103533387A (zh) * 2013-10-21 2014-01-22 腾讯科技(深圳)有限公司 一种视频直播控制方法、设备及系统
CN104703053A (zh) * 2015-03-11 2015-06-10 青岛海尔智能家电科技有限公司 一种视频传输过程中丢包处理方法、装置和系统
US20150188894A1 (en) * 2010-09-06 2015-07-02 Vasona Networks, Inc. Method and device for quality assessment of encrypted streaming media flows
CN109982117A (zh) * 2019-03-15 2019-07-05 兰州大学 视频流数据的中继处理方法、装置、存储介质及网络设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150188894A1 (en) * 2010-09-06 2015-07-02 Vasona Networks, Inc. Method and device for quality assessment of encrypted streaming media flows
CN103533387A (zh) * 2013-10-21 2014-01-22 腾讯科技(深圳)有限公司 一种视频直播控制方法、设备及系统
CN104703053A (zh) * 2015-03-11 2015-06-10 青岛海尔智能家电科技有限公司 一种视频传输过程中丢包处理方法、装置和系统
CN109982117A (zh) * 2019-03-15 2019-07-05 兰州大学 视频流数据的中继处理方法、装置、存储介质及网络设备

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111986348A (zh) * 2020-07-27 2020-11-24 广州亚美智造科技有限公司 视频、车载视频的循环缓存方法、装置和计算机设备
CN112929747A (zh) * 2021-01-18 2021-06-08 北京洛塔信息技术有限公司 基于网络反馈的视频编码方法、装置、设备及存储介质
CN112929747B (zh) * 2021-01-18 2023-03-31 北京洛塔信息技术有限公司 基于网络反馈的视频编码方法、装置、设备及存储介质
CN115412763A (zh) * 2021-05-28 2022-11-29 中国移动通信有限公司研究院 视频数据的传输方法、终端及服务器
CN113365143A (zh) * 2021-05-31 2021-09-07 努比亚技术有限公司 一种音频爆音的消除方法及相关设备
CN113365143B (zh) * 2021-05-31 2024-03-19 努比亚技术有限公司 一种音频爆音的消除方法及相关设备
WO2022262602A1 (zh) * 2021-06-16 2022-12-22 百果园技术(新加坡)有限公司 视频编解码方法及装置
CN115190309A (zh) * 2022-06-30 2022-10-14 北京百度网讯科技有限公司 视频帧处理方法、训练方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN110392284B (zh) 2022-02-01

Similar Documents

Publication Publication Date Title
CN110392284A (zh) 视频编码、视频数据处理方法、装置、计算机设备和存储介质
CN1242623C (zh) 视频编码方法、解码方法以及相关的编码器和解码器
TWI280059B (en) Picture coding method
US20080100694A1 (en) Distributed caching for multimedia conference calls
US8055974B2 (en) Content distribution method, encoding method, reception/reproduction method and apparatus, and program
TW200904194A (en) Feedback based scalable video coding
CN101742289B (zh) 视频码流压缩方法、系统及装置
MXPA05011533A (es) Metodo de codificacion de imagenes.
CN107396138A (zh) 一种视频编解码方法及设备
CN101568029B (zh) 基于优化h.264编码标准的手机视频监视装置及方法
CN111641804A (zh) 视频数据处理方法和装置、终端、摄像头及视频会议系统
CN113794903A (zh) 视频图像处理方法、装置及服务器
CN112040234B (zh) 视频编码、解码方法和装置、电子设备及存储介质
WO2011029369A1 (zh) 一种视频编解码方法、系统及视频监控系统
EP2781088A1 (en) Reducing amount op data in video encoding
CN103733615B (zh) 用于端到端编码的视频传输系统的按需内部更新
CN105657448B (zh) 一种编码视频流的转发方法、装置及系统
CN101296166B (zh) 基于索引的多媒体数据的测量方法
US7702994B2 (en) Method of determining a corruption indication of a sequence of encoded data frames
CN112995214B (zh) 一种实时视频传输系统、方法及计算机可读存储介质
TWI491218B (zh) 媒體中繼視訊通信
CN106998328A (zh) 一种视频传输方法及装置
KR100899666B1 (ko) 분산 다중 스트리밍 전송 장치
CN111212288B (zh) 视频数据的编解码方法、装置、计算机设备和存储介质
CN113973207A (zh) 一种基于h264码流的ios远程真机web端实时操控回显方法

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