CN109936744B - 视频编码处理方法、装置及具有视频编码功能的应用 - Google Patents

视频编码处理方法、装置及具有视频编码功能的应用 Download PDF

Info

Publication number
CN109936744B
CN109936744B CN201711371988.2A CN201711371988A CN109936744B CN 109936744 B CN109936744 B CN 109936744B CN 201711371988 A CN201711371988 A CN 201711371988A CN 109936744 B CN109936744 B CN 109936744B
Authority
CN
China
Prior art keywords
encoder
coding
processing period
parameter
encoding
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
CN201711371988.2A
Other languages
English (en)
Other versions
CN109936744A (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 CN201711371988.2A priority Critical patent/CN109936744B/zh
Priority to PCT/CN2018/110816 priority patent/WO2019119950A1/zh
Publication of CN109936744A publication Critical patent/CN109936744A/zh
Priority to US16/670,842 priority patent/US10931953B2/en
Application granted granted Critical
Publication of CN109936744B publication Critical patent/CN109936744B/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/164Feedback from the receiver or from the transmission channel
    • H04N19/166Feedback from the receiver or from the transmission channel concerning the amount of transmission errors, e.g. bit error rate [BER]
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/127Prioritisation of hardware or computational resources
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/17Methods 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 an image region, e.g. an object
    • H04N19/172Methods 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 an image region, e.g. an object the region being a picture, frame or field
    • 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/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2383Channel coding or modulation of digital bit-stream, e.g. QPSK modulation
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明是关于一种视频编码处理方法、装置及具有视频编码功能的应用,所述方法包括:获取当前处理周期内终端的编码状态参数、负载信息及当前处理周期内使用的第一编码器的第一编码参数;根据终端的编码状态参数及负载信息,确定第二编码参数;在确定第二编码参数与第一编码参数不同时,根据第二编码参数调整第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。

Description

视频编码处理方法、装置及具有视频编码功能的应用
技术领域
本发明涉及计算机技术领域,特别涉及一种视频编码处理方法、装置及具有视频编码功能的应用。
背景技术
随着带宽的提高以及移动互联网的发展,人们对高清、超高清视频体验的追求越来越高。为了将分辨率不断提高的视频的码率降低到网络可以承载的水平,需要对视频进行压缩编码。
现有技术,通常采用基于H.264标准的软件方案或基于硬件视频编解码器的方案进行视频编码。由于高分辨率的视频编码复杂度高,因而采用软件方案进行视频编码时,终端的中央处理器(Central Processing Unit,简称CPU)的占用率较高、功耗大、耗电快,且编码的实时性受到编码复杂度的限制,无法满足高清视频的实时编码需求。采用硬件方案进行视频编码时,虽然终端的CPU的占用率低、功耗小、但可定制性不强,无法灵活选择适合网络传输的视频特性,且抗丢包能力差。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明提出一种视频编码处理方法,通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
本发明还提出一种视频编码处理装置。
本发明还提出一种具有视频编码功能的应用。
本发明还提出一种终端。
本发明还提出一种计算机可读存储介质。
本发明第一方面实施例提供一种视频编码处理方法,所述方法包括:获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数;根据所述终端的编码状态参数及负载信息,确定第二编码参数;在确定所述第二编码参数与所述第一编码参数不同时,根据所述第二编码参数调整所述第一编码器,或者根据所述第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理;其中,所述第二编码器与所述第一编码器分属不同类型编码器。
本发明第二方面实施例提供一种视频编码处理装置,所述装置包括:获取模块,用于获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数;第一确定模块,用于根据所述终端的编码状态参数及负载信息,确定第二编码参数;第一处理模块,用于在确定所述第二编码参数与所述第一编码参数不同时,根据所述第二编码参数调整所述第一编码器,或者根据所述第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理;其中,所述第二编码器与所述第一编码器分属不同类型编码器。
本发明第三方面实施例提供一种具有视频编码功能的应用,包括如第二方面所述的视频编码处理装置。
本发明第四方面实施例提供一种终端,包括:
存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,当所述处理器执行所述程序时实现如第一方面所述的视频编码处理方法。
本发明第五方面实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的视频编码处理方法。
本申请实施例提供的技术方案可以包括以下有益效果:
通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一个示例性实施例示出的一种视频编码处理方法的流程示意图;
图1A是根据一个示例性实施例示出的IPPP参考结构的示意图;
图1B是根据一个示例性实施例示出的HPP参考结构的示意图;
图2是根据另一个示例性实施例示出的一种视频编码处理方法的流程示意图;
图3是根据另一个示例性实施例示出的一种视频编码处理方法的流程示意图;
图4是根据另一个示例性实施例示出的一种视频编码处理方法的流程示意图;
图5是根据一个示例性实施例示出的一种视频编码处理装置的结构框图;
图6是根据一个示例性实施例示出的终端的结构框图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本发明各实施例针对现有技术,由于高分辨率的视频编码复杂度高,因而采用软件方案进行视频编码时,CPU的占用率较高、功耗大、耗电快,且编码的实时性受到编码复杂度的限制,无法满足高清视频的实时编码需求,而采用硬件方案进行视频编码时,虽然CPU的占用率低、功耗小、但可定制性不强,无法灵活选择适合网络传输的视频特性,且抗丢包能力差的问题,提出一种视频编码处理方法。
本发明实施例提供的视频编码处理方法,应用于具有视频编码功能的应用,在获取当前处理周期内终端的编码状态参数、负载信息及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,从而在确定第二编码参数与第一编码参数不同时,根据第二编码参数调整第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。由此,通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
下面结合附图,对本申请提供的视频编码处理方法、装置及具有视频编码功能的应用进行详细说明。
首先对本申请提供的视频编码处理方法进行详细说明。
图1是根据一个示例性实施例示出的一种视频编码处理方法的流程示意图。
如图1所示,该视频编码处理方法,包括以下步骤:
步骤101,应用获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数。
具体的,本发明实施例提供的视频编码处理方法,可以由具有视频编码功能的应用执行,以对视频进行编码处理。其中,应用设置在终端中,终端的类型可以有很多,比如可以是手机、电脑等。
其中,处理周期,是指根据需要预先设置的编码处理周期。处理周期的大小可以根据帧数据的数量进行设置,例如一帧数据对应一个处理周期;或者,也可以根据时间进行设置,例如1秒(s)或2s的时间对应一个处理周期,等等,本申请对此不作限制。
第一编码参数,可以包括第一编码器的码率、分辨率和/或帧率等。
编码状态参数,可以包括平均丢包率、平均峰值信噪比(Peak Signal to NoiseRatio,简称PSNR)、平均发送码率及平均网络带宽。
负载信息,可以包括终端剩余续航时间及平均中央处理器占用率。
其中,平均中央处理器占用率,是指当前处理周期内,负载对中央处理器的占用率。
步骤102,应用根据终端的编码状态参数及负载信息,确定第二编码参数。
其中,第二编码参数,包括编码器的码率、分辨率和/或帧率等。
具体的,可以预先设置终端的编码状态参数及负载信息与编码参数的对应关系,从而应用在获取当前处理周期内终端的编码状态参数及负载信息后,可以根据预先设置的对应关系,确定与终端的编码状态参数及负载信息对应的第二编码参数。
举例来说,假设预先将平均网络丢包率AvgLoss、平均中央处理器占用率AvgCPU、平均编码效率AvgEfficiency(由平均峰值信噪比AvgPSNR、平均发送码率AvgBr计算得到)及平均网络带宽BW均依次分为小、一般、大三个等级,将终端剩余续航时间T依次分为短、一般、长三个等级,将编码参数中分辨率依次分为低、中、高三个等级。
假设终端当前处理周期的编码参数为:分辨率档次为i(低),当前处理周期结束后,确定当前处理周期的编码状态参数为:网络平均丢包率AvgLoss小,且网络带宽BW充足时,则可以确定第二编码参数为:大于i+1分辨率档次的最低带宽要求,从而即可上调分辨率档次到i+1。若i+1档分辨率对应中分辨率或者高分辨率,则可以尝试切换到硬件编码器进行下一处理周期的编码。
而当前处理周期的编码状态参数为:网络丢包率AvgLoss较大,或带宽BW降到低于i档最低带宽要求时,则可以确定第二编码参数为:下调分辨率档次到i-1,从而即可下调分辨率档次到i-1。若i-1档分辨率对应低分辨率档,则可以使用软件编码方式进行下一处理周期的编码。
需要说明的是,在本发明实施例中,终端的编码状态参数及负载信息与编码参数的对应关系,可以根据以下原则设置。
原则一
由于硬件编码器只能配置如图1A所示的IPPP参考结构,而软件编码器可以配置如图1B所示的分层P帧预测(Hierarchical P-frame Prediction,简称HPP)参考结构,使用软件编码器进行视频编码可以降低突发丢包的影响,因此,在终端的网络丢包率大时,可以尽量使用软件编码器进行视频编码。从而在终端的网络丢包率大时,可以根据软件编码器适用的编码参数,设置与终端的编码状态参数及负载信息对应的编码参数。
比如,假设软件编码器适用的编码参数为低分辨率等级、低码率等级,则在终端的网络丢包率大时,可以设置对应的编码参数为软件编码器适用的编码参数即低分辨率等级、低码率等级。
原则二
由于硬件编码器不占用CPU资源,可以更好的节省终端的电量,因此在终端的负载的平均CPU占用率较大时,可以优先考虑使用硬件编码器进行视频编码。从而在终端的负载的平均CPU占用率较大时,可以根据硬件编码器对应的编码参数,设置与终端的编码状态参数及负载信息对应的编码参数。
举例来说,若上述如果当前处理周期内网络丢包率AvgLoss较大,或带宽BW降到低于i档最低带宽要求时,则可确定需要下调分辨率档次到i-1。且i-1档分辨率对应低分辨率档,即可以使用软件编码方式进行下一处理周期的编码。
但是此时,根据终端的负载信息,确定终端负载AvgCPU占用高,或当前剩余续航时间T短,此时若切换至软件编码器,会使得终端负载的AvgCPU占用更高,因此需优先使用硬件编码器。
进一步的,编码器切换到硬件编码器后,如发现平均编码效率降低20%以上,则需切回到软件编码器。
通过上述分析可知,应用在确定终端的编码状态参数及负载信息后,根据终端的编码状态参数及负载信息确定第二编码参数的同时,也就确定了第二编码参数对应的编码器为软件编码器还是硬件编码器。
步骤103,应用在确定第二编码参数与第一编码参数不同时,根据第二编码参数调整第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。
其中,第二编码器与第一编码器分属不同类型编码器。
在本发明实施例中,第一编码器可以为软件编码器、第二编码器可以为硬件编码器,或者,也可以是第一编码器为硬件编码器、第二编码器为软件编码器,此处不作限制。
其中,硬件编码器可以是硬件芯片中的硬件编码器模块,比如高通的芯片、苹果的A10芯片中的H.264硬件编码器模块。软件编码器,可以是应用本身包含的一段代码等。
具体的,调整第一编码器时,可以调整第一编码器的码率、分辨率和/或帧率等。配置第二编码器时,可以配置第二编码器的码率、分辨率和/或帧率等。
可以理解的是,不同的编码器,可以适用的编码参数范围可能相同,也可能存在交叠,因此,应用确定第二编码参数后,可能既可以根据第二编码参数对第一编码器进行调整,以利用调整后的第一编码器对下一处理周期内的帧数据进行编码处理,也可以根据第二编码参数配置第二编码器,以利用第二编码器对下一处理周期内的帧数据进行编码处理。
在本发明实施例中,应用在确定第二编码参数与第一编码参数不同时,可以根据当前处理周期内终端的负载信息,确定调整第一编码器还是配置第二编码器,以对下一处理周期内的帧数据进行编码处理。
具体的,若根据当前处理周期内终端的负载信息,确定下一处理周期内使用的目标编码器的类型与当前处理周期内使用的第一编码器的类型相同,则可以根据第二编码参数调整第一编码器;若确定下一处理周期内使用的目标编码器的类型与当前处理周期内使用的第一编码器的类型不同,则可以根据第二编码参数配置第二编码器。
相应的,在步骤103中根据第二编码参数配置第二编码器前,还可以包括:
根据当前处理周期内终端的负载信息,确定目标编码器的类型与当前处理周期内使用的第一编码器的类型不同。
举例来说,假设预先将平均网络丢包率AvgLoss、平均中央处理器占用率AvgCPU、平均编码效率AvgEfficiency(由平均峰值信噪比AvgPSNR、平均发送码率AvgBr计算得到)及平均网络带宽BW均依次分为小、一般、大三个等级,将终端剩余续航时间T依次分为短、一般、长三个等级,将编码参数中分辨率依次分为低、中、高三个等级。
则在具体使用时,若终端当前处理周期使用的是软件编码器,对应的编码参数为:分辨率档次为i(低)。当前处理周期结束后,确定当前处理周期的编码状态参数为:网络平均丢包率AvgLoss小,且网络带宽BW充足,根据上述编码状态参数确定出的编码参数为:大于i+1分辨率档次的最低带宽要求,从而即可上调分辨率档次到i+1。进一步的,若当前处理周期内AvgCPU高,则可确定下一处理周期所用的编码器类型为硬件编码器,从而即可根据i+1档次的分辨率配置硬件编码器,进而尝试切换到硬件编码器进行下一处理周期的编码。
而若当前处理周期内AvgCPU低,由于软件编码器的平均编码效率高,则可以根据i+1档次的分辨率,调整软件编码器后,继续使用软件编码器进行下一处理周期的编码。
具体实现时,应用根据第二编码参数调整第一编码器或配置第二编码器时,可以根据编码器的类型,采用不同的方式,对编码进行调整或配置。
具体的,若编码器为硬件编码器,则应用可以通过硬件编码器的接口,将第二编码参数发送给硬件编码器,从而使硬件编码器根据第二编码参数,对其编码电路进行配置。若编码器为软件编码器(其本身自带的代码),则应用可以在调用软件编码器时,根据第二编码参数确定调用函数的参数,从而实现对软件编码器的调整或配置。
需要说明的是,在本发明实施例中,使用硬件编码器对下一处理周期内的帧数据进行编码处理时,应用可以通过硬件编码器的接口,将下一处理周期内的帧数据发送给硬件编码器,然后由硬件编码器对下一处理周期内的帧数据进行编码,硬件编码器编码完成后,再通过接口将编码后的码流发送给应用,从而应用可以将接收的码流发送给其它终端的应用。
使用软件编码器对下一处理周期内的帧数据进行编码处理时,应用可以直接调用其本身自带的代码(即软件编码器),对下一处理周期内的帧数据进行编码,在编码完成后,即可将编码后的码流发送给其它终端的应用。
本发明实施例提供的视频编码处理方法,应用在获取当前处理周期内终端的编码状态参数、负载信息及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,从而在确定第二编码参数与第一编码参数不同时,根据第二编码参数调整第一编码器,或者第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
下面结合图2,对本申请提供的视频编码处理方法进行进一步说明。
图2是本发明另一个示例性实施例示出的一种视频编码处理方法的流程示意图。
如图2所示,该视频编码处理方法,包括以下步骤:
步骤201,应用获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数。
步骤202,应用根据终端的编码状态参数及负载信息,确定第二编码参数。
其中,第二编码参数,包括编码器的码率、分辨率和/或帧率等。
具体的,步骤201-步骤202的具体实现过程及原理,可以参照上述实施例中步骤101-步骤102的具体描述,此处不再赘述。
步骤203,应用判断第二编码参数与第一编码参数是否相同,若是,则执行步骤204,否则,执行步骤205。
步骤204,应用继续以第一编码器对下一处理周期内的帧数据进行编码处理。
具体的,应用在根据终端的编码状态参数及负载信息,确定第二编码参数后,即可将第二编码参数与当前处理周期内使用的第一编码器的第一编码参数进行对比。若第二编码参数与第一编码参数相同,则可以不对第一编码器进行调整,继续以第一编码器对下一处理周期内的帧数据进行编码处理。
具体实现时,若第一编码器为硬件编码器,则应用可以继续将下一处理周期内的帧数据通过第一编码器的接口,发送给第一编码器,由第一编码器对下一处理周期内的帧数据进行编码。应用在第一编码器编码完成后,再通过接口接收第一编码器编码后的码流,从而应用可以将接收的码流发送给其它终端的应用。
若第一编码器为软件编码器,则应用可以继续利用其本身自带的代码(即第一编码器),对下一处理周期内的帧数据进行编码,在编码完成后,即可将编码后的码流发送给其它终端的应用。
步骤205,应用根据当前处理周期内终端的负载信息,确定目标编码器的类型与当前处理周期内使用的第一编码器的类型是否相同,若是,则执行步骤206,否则,执行步骤208。
步骤206,应用调整第一编码器的码率、分辨率和/或帧率。
步骤207,应用利用调整后的第一编码器对下一处理周期内的帧数据进行编码处理。
可以理解的是,不同的编码器,可以适用的编码参数范围可能相同,也可能存在交叠,因此,应用确定第二编码参数后,可能既可以根据第二编码参数对第一编码器进行调整,以利用调整后的第一编码器对下一处理周期内的帧数据进行编码处理,也可以根据第二编码参数配置第二编码器,以利用第二编码器对下一处理周期内的帧数据进行编码处理。
在本发明实施例中,应用在确定第二编码参数与第一编码参数不同时,可以根据当前处理周期内终端的负载信息,确定目标编码器的类型与当前处理周期内使用的第一编码器的类型是否相同,从而确定调整第一编码器还是配置第二编码器,以对下一处理周期内的帧数据进行编码处理。
具体的,若应用根据当前处理周期内终端的负载信息,确定目标编码器的类型与当前处理周期内使用的第一编码器的类型相同,则可以对第一编码器的码率、分辨率和/或帧率进行调整,然后利用调整后的第一编码器对下一处理周期内的帧数据进行编码处理。
具体实现时,若第一编码器为硬件编码器,则应用可以调整第一编码器的码率、分辨率和/或帧率,然后再将下一处理周期内的帧数据通过第一编码器的接口,发送给第一编码器,并在第一编码器编码完成后,再通过接口接收第一编码器编码后的码流,从而应用可以将接收的码流发送给其它终端的应用。
若第一编码器为软件编码器,则应用可以根据第二编码参数,调用第一编码器(即调用其本身自带的代码),对下一处理周期内的帧数据进行编码,在编码完成后,即可将编码后的码流发送给其它终端的应用。
步骤208,应用配置第二编码器的码率、分辨率和/或帧率。
其中,第二编码器与第一编码器分属不同类型编码器。
步骤209,应用利用第二编码器对下一处理周期内的帧数据进行编码处理。
需要说明的是,上述实施例的具体实现过程及原理,也适用于本发明实施例,此处不再赘述。
具体的,若应用根据当前处理周期内终端的负载信息,确定目标编码器的类型与当前处理周期内使用的第一编码器的类型不同,则可以配置第二编码器的码率、分辨率和/或帧率,然后利用配置的第二编码器对下一处理周期内的帧数据进行编码处理。
具体的,若第二编码器为硬件编码器,则应用可以将下一处理周期内的帧数据通过第二编码器的接口,发送给第二编码器,并在第二编码器编码完成后,再通过接口接收第二编码器编码后的码流,从而应用可以将接收的码流发送给其它终端的应用。
若第二编码器为软件编码器,则应用可以根据第二编码参数,调用其本身自带的代码(即第二编码器),对下一处理周期内的帧数据进行编码,在编码完成后,即可将编码后的码流发送给其它终端的应用。
步骤210,应用将下一处理周期内的第一个帧数据确定为帧内预测帧。
具体的,若利用配置的第二编码器对下一处理周期内的帧数据进行编码处理,由于编码参数发生改变,则应用需要将下一处理周期内的第一帧数据确定为帧内预测帧,从而使下一处理周期内的其它帧数据可以利用第一帧数据进行视频编码。
本发明实施例提供的视频编码处理方法,应用在获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,若第二编码参数与第一编码参数相同,则继续以第一编码器对下一处理周期内的帧数据进行编码处理,若第二编码参数与第一编码参数不相同,且确定调整第一编码器,则调整第一编码器的码率、分辨率和/或帧率,并利用调整后的第一编码器对下一处理周期内的帧数据进行编码处理,若第二编码参数与第一编码参数不相同,且确定配置第二编码器,则配置第二编码器的码率、分辨率和/或帧率,并利用第二编码器对下一处理周期内的帧数据进行编码处理,最后将下一处理周期内的第一个帧数据确定为帧内预测帧。由此,通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
通过上述分析可知,应用在获取当前处理周期内终端的编码状态参数、负载信息及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,从而在确定第二编码参数与第一编码参数不同时,根据第二编码参数调整第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。在实际运用中,利用配置的第二编码器对下一处理周期内的帧数据进行编码处理时,编码效果可能不如之前处理周期内利用第一编码器的编码效果好,下面结合图3,对上述情况进行详细说明。
图3是根据另一示例性实施例示出的一种视频编码处理方法的流程示意图。
如图3所示,该视频编码处理方法,可以包括以下步骤:
步骤301,应用获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数。
步骤302,应用根据终端的编码状态参数及负载信息,确定第二编码参数。
步骤303,应用判断第二编码参数与第一编码参数是否相同,若是,则执行步骤304,否则,执行步骤305。
步骤304,应用继续以第一编码器对下一处理周期内的帧数据进行编码处理。
其中,步骤301-步骤304的具体实现过程及原理,可以参照上述实施例中的具体描述,此处不再赘述。
步骤305,应用确定当前处理周期内第一编码器的第一编码效率。
具体的,第一编码效率,可以根据当前处理周期内第一编码器的平均峰值信噪比及平均码率确定。通常平均PSNR固定时,平均码率越大,编码效率越低。
步骤306,应用根据第二编码参数配置第二编码器。
其中,第二编码器与第一编码器分属不同类型编码器。
步骤307,应用利用配置的第二编码器,对下一处理周期内的帧数据进行编码处理。
其中,上述步骤306-307的具体实现过程及原理,可以参照上述实施例的详细描述,此处不再赘述。
需要说明的是,终端的编码状态参数及负载信息与编码参数的对应关系,还可以根据以下原则设置。
原则三
由于软件编码器和硬件编码器的编码效率可能不同,软件编码器的编码效率的一致性比较好,而硬件编码器的编码效率的离散性较大,因此在当前使用的硬件编码器的编码效率过低时,可以优先使用软件编码器进行视频编码。从而在当前使用的硬件编码器的编码效率过低时,可以根据软件编码器对应的编码参数,设置与终端的编码状态参数及负载信息对应的编码参数。
比如,假设软件编码器对应的编码参数为低分辨率等级、低码率等级,则在当前使用的硬件编码器的编码效率过低时,可以设置对应的编码参数为软件编码器对应的编码参数即低分辨率等级、低码率等级,从而可以切换为利用软件编码器进行视频编码。
步骤308,应用确定下一处理周期内第二编码器的第二编码效率。
具体的,第二编码效率,可以根据下一处理周期内第二编码器的平均PSNR及平均码率确定。通常平均PSNR固定时,平均码率越大,编码效率越低。
步骤309,应用在确定第二编码效率小于第一编码效率,且差值大于阈值时,根据下一处理周期内终端的编码参数及负载信息,确定第三编码参数。
步骤310,应用根据第三编码参数配置第一编码器,以对与下一处理周期相邻的后一处理周期内的帧画面进行编码处理。
其中,阈值,可以根据需要设置,比如,可以设置为第一编码效率的20%、30%等等。
具体的,若第二编码效率小于第一编码效率,且差值大于阈值,则表示利用配置的第二编码器对下一处理周期内的帧数据进行编码处理时,编码效果不如之前处理周期内利用第一编码器的编码效果好。因此,在本发明实施例中,应用可以切换回原来的第一编码器,以对与下一处理周期相邻的后一处理周期内的帧数据进行编码处理。
在切换回原来的第一编码器时,由于下一处理周期内终端的编码状态参数及负载信息,相比当前处理周期内终端的编码状态参数及负载信息,可能已经发生了变化,因此,利用第一编码器对与下一处理周期相邻的后一处理周期内的帧数据进行编码处理时,还需要对第一编码器的编码参数进行重新配置。
具体的,可以根据下一处理周期内终端的编码状态及负载信息,确定第三编码参数,从而根据第三编码参数配置第一编码器,以对与下一处理周期相邻的后一处理周期内的帧画面进行编码处理。具体的确定第三编码参数的方法,与确定第一编码参数或第二编码参数的方法相同,此处不再赘述。
另外,若第二编码效率大于或等于第一编码效率,或第二编码效率小于第一编码效率,且差值小于或等于阈值,则表示利用配置的第二编码器对下一处理周期内的帧数据进行编码处理时,编码效果比之前处理周期内利用第一编码器的编码效果好。则在本发明实施例中,应用可以继续根据下一处理周期内的终端的编码状态参数、负载信息,确定与下一处理周期相邻的后一处理周期内的第三编码参数,并根据第三编码参数配置第二编码器,以对与下一处理周期相邻的后一处理周期内的帧画面进行编码处理。
进一步的,在第二编码效率小于第一编码效率,且差值大于阈值时,应用根据第三编码参数配置第一编码器后,若终端的编码状态参数及负载信息不变,则相比以第二编码器对与下一处理周期相邻的后一处理周期内的帧数据进行编码处理,继续以原来的第一编码器对与下一处理周期相邻的后一处理周期内的帧数据进行编码处理会有更好的编码效果。因此,在本发明实施例中,若终端的编码状态参数及负载信息不变,则应用可以优先以第一编码器对与下一处理周期相邻的后一处理周期内的帧数据进行编码处理。
即,在步骤310中根据第三编码参数配置第一编码器之后,还可以包括:
应用在终端的编码状态参数及负载信息不变时,确定第一编码器的优先级高于第二编码器的优先级。
需要说明的是,本发明实施例中,终端的编码状态参数及负载信息不变,是一种理想的情况。在实际运用中,在终端的编码状态参数及负载信息的变化在预设范围内时,均可以确定第一编码器的优先级高于第二编码器的优先级。
本发明实施例提供的视频编码处理方法,应用在获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,并判断第二编码参数与第一编码参数是否相同,若是,则继续以第一编码器对下一处理周期内的帧数据进行编码处理,否则,确定当前处理周期内第一编码器的第一编码效率,并在根据第二编码参数配置第二编码器,及利用第二编码器,对下一处理周期内的帧数据进行编码处理后,确定下一处理周期内第二编码器的第二编码效率,从而在确定第二编码效率小于第一编码效率,且差值大于阈值时,根据下一处理周期内终端的编码参数及负载信息,确定第三编码参数,并根据第三编码参数配置第一编码器,以对与下一处理周期相邻的后一处理周期内的帧画面进行编码处理。由此,通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。且通过根据编码参数切换前后的编码效率,对编码参数或编码器的切换过程进行校验,进一步提高了视频编码的灵活性。
通过上述分析可知,应用在获取当前处理周期内终端的编码状态参数、负载信息及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,从而在确定第二编码参数与第一编码参数不同时,根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。下面结合图4,对第二编码器的获取过程进行具体说明。
如图4所示,该视频编码处理方法,可以包括以下步骤:
步骤401,应用获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数。
步骤402,应用根据终端的编码状态参数及负载信息,确定第二编码参数。
步骤403,应用判断第二编码参数与第一编码参数是否相同,若是,则执行步骤404,否则,执行步骤405。
步骤404,应用继续以第一编码器对下一处理周期内的帧数据进行编码处理。
其中,步骤401-步骤404的具体实现过程及原理,可以参照上述实施例中的具体描述,此处不再赘述。
步骤405,应用根据第二编码参数,从当前的可用编码器列表中选取第二编码器。
步骤406,应用配置第二编码器,以对下一处理周期内的帧数据进行编码处理。
其中,第二编码器与第一编码器分属不同类型编码器。
具体的,可以预先确定当前的可用编码器列表,从而应用在确定第二编码参数后,可以从当前的可用编码器列表中选取第二编码器,并根据第二编码参数,配置第二编码器,以对下一处理周期内的帧数据进行编码处理。
具体实现时,可以通过下面的方法,确定当前的可用编码器列表。即,在步骤405之前,还可以包括:
步骤407,应用根据应用的配置信息及终端的配置信息,确定初始编码器列表,其中初始编码器列表中包括硬件编码器及软件编码器。
可以理解的是,在终端中通常会配置有硬件编码器,而在应用中,通常会配置有软件编码器,因此,通过应用的配置信息及终端的配置信息,可以确定包括硬件编码器及软件编码器的初始编码器列表。
步骤408,应用初始化初始编码器列表中各编码器。
步骤409,应用根据各编码器的初始化结果,确定当前的可用编码器列表。
可以理解的是,由于初始编码器列表中的各编码器,可能存在因故障等而不可用的情况,因此,在本发明实施例中,确定了初始编码器列表后,应用可以初始化初始编码器列表中各编码器,以检测终端中系统软硬件环境,对各编码器进行正确设置,并返回初始化结果,进而根据各编码器的初始化结果,确定当前的可用编码器列表。
具体的,应用确定了当前的可用编码器列表后,即可根据可用编码器列表中各编码器适用的编码参数范围及第二编码参数,从各编码器中选取编码参数范围中包括第二编码参数的编码器作为第二编码器,进而根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。
进一步的,应用利用第二编码器对下一处理周期内的帧数据进行编码处理,得到编码后的码流后,应用可以将编码后的码流分成N个实时传输协议包(real-timetransport protocol,RTP),并进行前向纠错(Forward Error/Erasure Correction,简称FEC)编码,生成M个冗余包。其中,M可以小于等于N。然后,应用即可给M+N个包加上包头标识,并根据包头标识,将下一处理周期内的帧数据对应的编码流进行打包发送。
即,在步骤406之后,还可以包括:
应用根据对下一处理周期内的帧数据进行编码的编码器类型,确定与下一处理周期内的帧数据对应的实时传输协议包的包头标识;
应用根据包头标识,将下一处理周期内的帧数据对应的编码流进行打包发送。
其中,包头标识,用来唯一标识实时传输协议包。
具体的,可以预先设置不同的编码器类型对应不同的自定义字段,从而在应用确定对下一处理周期内的帧数据进行编码的编码器后,可以根据确定的编码器的类型,确定自定义字段,并以自定义字段作为包头标识,将下一处理周期内的帧数据对应的编码流进行打包发送。
需要说明的是,在包头标识中,除了编码器类型对应的自定义字段外,还可以包括标志该包的序号信息,如0x1、0x2、0x3等等。
举例来说,假设预先设置编码器为基于H.264标准的软件编码器时,对应的自定义字段为“H.264软编”;编码器为基于H.264标准的硬件编码器时,对应的自定义字段为“H.264硬编”;编码器为基于H.265标准的软件编码器时,对应的自定义字段为“H.265软编”;编码器为基于H.265标准的硬件编码器时,对应的自定义字段为“H.265硬编”。则确定对下一处理周期内的帧数据进行编码的编码器类型为基于H.264标准的软件编码器,且下一处理周期内的帧数据对应的编码流为发送的第一个编码流时,可以确定包头标识为“0x1H.264软编”,从而可以根据“0x1H.264软编”将下一处理周期内的帧数据对应的编码流进行打包发送。
需要说明的是,应用在获取到视频编码指令时,由于当前的可用编码器中可能包括多个编码器,因此,应用需要从各编码器中选取合适的编码器对初始帧数据进行编码。
具体的,由于硬件编码器的抗丢包能力差,因此,为了减小丢包率,应用可以根据当前的可用编码器列表中各编码器的性能,从各编码器中选择抗丢包能力强的软件编码器,对初始帧数据进行编码。
即,在本发明实施例提供的视频编码处理方法中,还可以包括:
应用在获取到视频编码指令时,根据当前的可用编码器列表中各编码器的性能,从可用编码器列表中选择第三编码器对初始帧数据进行编码,其中第三编码器为软件编码器。
其中,各编码器的性能,可以包括各编码器的抗丢包能力强弱、编码效率好坏、是否占用CPU资源等等。
另外,由于以高分辨率等级对初始帧数据进行编码处理时,对CPU的占用较大,若应用在获取到视频编码指令时,直接以高分辨率等级对初始帧数据进行编码处理,可能会对终端的系统运行造成影响。因此为了减小终端中的应用开始进行视频编码时对CPU的占用,应用可以控制第三编码器以最低分辨率对初始帧数据进行编码。
即,利用第三编码器对初始帧数据进行编码可以包括:应用控制第三编码器以最低分辨率对初始帧数据进行编码。
需要说明的是,应用对各处理周期内的帧数据进行编码处理前,还可以对各帧数据进行视频格式转换、编码尺寸调整、视频增强处理、视频去噪处理等预处理。
本发明实施例提供的视频编码处理方法,应用在获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,然后判断第二编码参数与第一编码参数是否相同,若是,则继续以第一编码器对下一处理周期内的帧数据进行编码处理,若否,则根据第二编码参数,从当前的可用编码器列表中选取第二编码器,并配置第二编码器,以对下一处理周期内的帧数据进行编码处理。通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
图5是根据一个示例性实施例示出的一种视频编码处理装置的结构图。
如图5所示,本发明实施例提供的视频编码处理装置,可以包括:
获取模块51,用于获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数;
第一确定模块52,用于根据所述终端的编码状态参数及负载信息,确定第二编码参数;
第一处理模块53,用于在确定所述第二编码参数与所述第一编码参数不同时,根据所述第二编码参数调整所述第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理;
其中,所述第二编码器与所述第一编码器分属不同类型编码器。
具体的,本发明实施例提供的视频编码处理装置,可以用来执行本发明实施例提供的视频编码处理方法。其中,该装置可以被配置在任意具有视频编码功能的应用中,从而进行视频编码处理。其中,应用设置在终端中,终端的类型可以有很多,比如可以是手机、电脑等。
在本发明实施例一种可能的实现形式中,所述装置,还包括:
第二确定模块,用于确定所述当前处理周期内所述第一编码器的第一编码效率;
第三确定模块,用于确定所述下一处理周期内所述第二编码器的第二编码效率;
第四确定模块,用于在确定所述第二编码效率小于所述第一编码效率,且差值大于阈值时,根据所述下一处理周期内终端的编码状态参数及负载信息,确定第三编码参数;
第二处理模块,用于根据所述第三编码参数配置所述第一编码器,以对与所述下一处理周期相邻的后一处理周期内的帧画面进行编码处理。
在本发明实施例另一种可能的实现形式中,所述装置,还包括:
第五确定模块,用于在所述终端的编码状态参数及负载信息不变时,确定所述第一编码器的优先级高于所述第二编码器的优先级。
在本发明实施例另一种可能的实现形式中,所述装置,还包括:
第六确定模块,用于根据所述当前处理周期内终端的负载信息,确定目标编码器的类型与所述当前处理周期内使用的第一编码器的类型不同。
在本发明实施例另一种可能的实现形式中,所述装置,还包括:
第七确定模块,用于在所述下一处理周期内使用的编码器为第二编码器时,将所述下一处理周期内的第一个帧数据确定为帧内预测帧。
在本发明实施例另一种可能的实现形式中,所述编码状态参数,包括:平均丢包率、平均峰值信噪比、平均发送码率及平均网络带宽;
所述负载信息,包括所述终端剩余续航时间及平均中央处理器占用率。
在本发明实施例另一种可能的实现形式中,所述装置,还包括:
第一选取模块,用于根据所述第二编码参数,从当前的可用编码器列表中选取所述第二编码器。
在本发明实施例另一种可能的实现形式中,所述装置,还包括:
第八确定模块,用于根据应用的配置信息及所述终端的配置信息,确定所述初始编码器列表,其中所述初始编码器列表中包括硬件编码器及软件编码器;
初始化模块,用于初始化所述初始编码器列表中各编码器;
第九确定模块,用于根据所述各编码器的初始化结果,确定所述当前的可用编码器列表。
在本发明实施例另一种可能的实现形式中,所述装置,还包括:
第二选取模块,用于在获取到视频编码指令时,根据所述当前的可用编码器列表中各编码器的性能,从所述可用编码器列表中选择第三编码器对初始帧数据进行编码,其中第三编码器为软件编码器。
在本发明实施例另一种可能的实现形式中,所述第二选取模块,具体用于:
控制所述第三编码器以最低分辨率对所述初始帧数据进行编码。
在本发明实施例另一种可能的实现形式中,所述装置,还包括:
第十确定模块,用于根据对所述下一处理周期内的帧数据进行编码的编码器类型,确定与所述下一处理周期内的帧数据对应的实时传输协议包的包头标识;
发送模块,用于根据所述包头标识,将所述下一处理周期内的帧数据对应的编码流进行打包发送。
需要说明的是,前述对视频编码处理方法实施例的解释说明也适用于该实施例的视频编码处理装置,此处不再赘述。
本发明实施例提供的视频编码处理装置,在获取当前处理周期内终端的编码状态参数、负载信息及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,从而在确定第二编码参数与第一编码参数不同时,根据第二编码参数调整第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
在示例性实施例中,还提供了一种具有视频编码功能的应用,包括如第二方面所述的视频编码处理装置。
本发明实施例提供的具有视频编码功能的应用,在获取当前处理周期内终端的编码状态参数、负载信息及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,从而在确定第二编码参数与第一编码参数不同时,根据第二编码参数调整第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
在示例性实施例中,还提供了一种终端。
图6是根据一个示例性实施例示出的终端的结构框图。
如图6所示,该终端包括:
存储器61、处理器62及存储在所述存储器61上并可在所述处理器62上运行的计算机程序,其特征在于,当所述处理器62执行所述程序时实现如第一方面所述的视频编码处理方法。
具体的,本发明实施例提供的终端,可以是手机、电脑等。
具体的,视频编码处理方法包括:
获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数;
根据所述终端的编码状态参数及负载信息,确定第二编码参数;
在确定所述第二编码参数与所述第一编码参数不同时,根据所述第二编码参数调整所述第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理;
其中,所述第二编码器与所述第一编码器分属不同类型编码器。
需要说明的是,前述对视频编码处理方法实施例的解释说明也适用于该实施例的终端,此处不再赘述。
本发明实施例提供的终端,在获取当前处理周期内终端的编码状态参数、负载信息及当前处理周期内使用的第一编码器的第一编码参数后,可以根据终端的编码状态参数及负载信息,确定第二编码参数,从而在确定第二编码参数与第一编码参数不同时,根据第二编码参数调整第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理。通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
在示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例所述的视频编码处理方法。
具体的,视频编码处理方法包括:
获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数;
根据所述终端的编码状态参数及负载信息,确定第二编码参数;
在确定所述第二编码参数与所述第一编码参数不同时,根据所述第二编码参数调整所述第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理;
其中,所述第二编码器与所述第一编码器分属不同类型编码器。
需要说明的是,前述对视频编码处理方法实施例的解释说明也适用于该实施例的计算机可读存储介质,此处不再赘述。
本发明实施例提供的计算机可读存储介质,可以设置在能够进行视频编码的设备中,通过执行其上存储的视频编码处理方法,可以实现通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
在示例性实施例中,还提供了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行如上述实施例所述的视频编码处理方法。
具体的,视频编码处理方法包括:
获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数;
根据所述终端的编码状态参数及负载信息,确定第二编码参数;
在确定所述第二编码参数与所述第一编码参数不同时,根据所述第二编码参数调整所述第一编码器,或者根据第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理;
其中,所述第二编码器与所述第一编码器分属不同类型编码器。
需要说明的是,前述对视频编码处理方法实施例的解释说明也适用于该实施例的计算机程序产品,此处不再赘述。
本发明实施例提供的计算机程序产品,可写入能够进行视频编码的设备中,通过执行对应视频编码处理方法的程序,可以实现通过根据网络状态及负载信息,调整编码参数及编码器,从而实现了在网络丢包小且带宽充足时,使用硬件编码器进行高分辨率视频的编码,提高视频分辨率;网络丢包较大时,使用软件编码方式进行压缩编码,减少了视频卡顿,提高了视频编码的灵活性,改善了用户体验。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (14)

1.一种视频编码处理方法,其特征在于,包括:
获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数;
根据所述终端的编码状态参数及负载信息,确定第二编码参数;
在确定所述第二编码参数与所述第一编码参数不同时,根据当前处理周期内终端的负载信息,确定调整第一编码器还是配置第二编码器;
所述根据当前处理周期内终端的负载信息,确定调整第一编码器还是配置第二编码器包括:
若根据当前处理周期内终端的负载信息,确定下一处理周期内使用的目标编码器的类型与当前处理周期内使用的第一编码器的类型相同,根据所述第二编码参数调整所述第一编码器,若根据当前处理周期内终端的负载信息,确定下一处理周期内使用的目标编码器的类型与当前处理周期内使用的第一编码器的类型不同,根据所述第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理;
其中,所述第二编码器与所述第一编码器分属不同类型编码器。
2.如权利要求1所述的方法,其特征在于,所述根据所述第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理之前,还包括:
确定所述当前处理周期内所述第一编码器的第一编码效率;
所述对下一处理周期内的帧数据进行编码之后,还包括:
确定所述下一处理周期内所述第二编码器的第二编码效率;
在确定所述第二编码效率小于所述第一编码效率,且差值大于阈值时,根据所述下一处理周期内终端的编码状态参数及负载信息,确定第三编码参数;
根据所述第三编码参数配置所述第一编码器,以对与所述下一处理周期相邻的后一处理周期内的帧画面进行编码处理。
3.如权利要求2所述的方法,其特征在于,所述根据所述第三编码参数配置所述第一编码器之后,还包括:
在所述终端的编码状态参数及负载信息不变时,确定所述第一编码器的优先级高于所述第二编码器的优先级。
4.如权利要求1所述的方法,其特征在于,所述对下一处理周期内的帧数据进行编码处理之后,还包括:
若所述下一处理周期内使用的编码器为第二编码器,则将所述下一处理周期内的第一个帧数据确定为帧内预测帧。
5.如权利要求1所述的方法,其特征在于,所述编码状态参数,包括:平均丢包率、平均峰值信噪比、平均发送码率及平均网络带宽;
所述负载信息,包括所述终端剩余续航时间及平均中央处理器占用率。
6.如权利要求1-4任一所述的方法,其特征在于,所述配置第二编码器之前,还包括:
根据所述第二编码参数,从当前的可用编码器列表中选取所述第二编码器。
7.如权利要求6所述的方法,其特征在于,所述从当前的可用编码器列表中选取所述第二编码器之前,还包括:
根据应用的配置信息及所述终端的配置信息,确定所述初始编码器列表,其中所述初始编码器列表中包括硬件编码器及软件编码器;
初始化所述初始编码器列表中各编码器;
根据所述各编码器的初始化结果,确定所述当前的可用编码器列表。
8.如权利要求6所述的方法,其特征在于,还包括:
在获取到视频编码指令时,根据所述当前的可用编码器列表中各编码器的性能,从所述可用编码器列表中选择第三编码器对初始帧数据进行编码,其中第三编码器为软件编码器。
9.如权利要求8所述的方法,其特征在于,所述对初始帧数据进行编码,包括:
控制所述第三编码器以最低分辨率对所述初始帧数据进行编码。
10.如权利要求6所述的方法,其特征在于,所述对下一处理周期内的帧数据进行编码处理之后,还包括:
根据对所述下一处理周期内的帧数据进行编码的编码器类型,确定与所述下一处理周期内的帧数据对应的实时传输协议包的包头标识;
根据所述包头标识,将所述下一处理周期内的帧数据对应的编码流进行打包发送。
11.一种视频编码处理装置,其特征在于,包括:
获取模块,用于获取当前处理周期内终端的编码状态参数、负载信息、及当前处理周期内使用的第一编码器的第一编码参数;
第一确定模块,用于根据所述终端的编码状态参数及负载信息,确定第二编码参数;
第一处理模块,用于在确定所述第二编码参数与所述第一编码参数不同时,根据当前处理周期内终端的负载信息,确定调整第一编码器还是配置第二编码器;
所述根据当前处理周期内终端的负载信息,确定调整第一编码器还是配置第二编码器包括:
若根据当前处理周期内终端的负载信息,确定下一处理周期内使用的目标编码器的类型与当前处理周期内使用的第一编码器的类型相同,根据所述第二编码参数调整所述第一编码器,若根据当前处理周期内终端的负载信息,确定下一处理周期内使用的目标编码器的类型与当前处理周期内使用的第一编码器的类型不同,根据所述第二编码参数配置第二编码器,以对下一处理周期内的帧数据进行编码处理;
其中,所述第二编码器与所述第一编码器分属不同类型编码器。
12.一种具有视频编码功能的应用,其特征在于,包括如权利要求11所述的视频编码处理装置。
13.一种终端,包括:
存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,当所述处理器执行所述程序时实现如权利要求1-10任一所述的视频编码处理方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10任一所述的视频编码处理方法。
CN201711371988.2A 2017-12-19 2017-12-19 视频编码处理方法、装置及具有视频编码功能的应用 Active CN109936744B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201711371988.2A CN109936744B (zh) 2017-12-19 2017-12-19 视频编码处理方法、装置及具有视频编码功能的应用
PCT/CN2018/110816 WO2019119950A1 (zh) 2017-12-19 2018-10-18 视频编码处理方法、装置及具有视频编码功能的应用
US16/670,842 US10931953B2 (en) 2017-12-19 2019-10-31 Video coding processing method, device and application with video coding function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711371988.2A CN109936744B (zh) 2017-12-19 2017-12-19 视频编码处理方法、装置及具有视频编码功能的应用

Publications (2)

Publication Number Publication Date
CN109936744A CN109936744A (zh) 2019-06-25
CN109936744B true CN109936744B (zh) 2020-08-18

Family

ID=66983322

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711371988.2A Active CN109936744B (zh) 2017-12-19 2017-12-19 视频编码处理方法、装置及具有视频编码功能的应用

Country Status (3)

Country Link
US (1) US10931953B2 (zh)
CN (1) CN109936744B (zh)
WO (1) WO2019119950A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110933513A (zh) * 2019-11-18 2020-03-27 维沃移动通信有限公司 一种音视频数据传输方法及装置
CN113301340A (zh) * 2020-09-29 2021-08-24 阿里巴巴集团控股有限公司 一种编码参数确定方法、视频传送方法和装置
CN113242434B (zh) * 2021-05-31 2023-02-28 山东云海国创云计算装备产业创新中心有限公司 一种视频压缩方法及相关装置
CN113259690A (zh) * 2021-07-05 2021-08-13 人民法院信息技术服务中心 一种跨网系的音视频实时在线协同系统及方法
CN113259673B (zh) * 2021-07-05 2021-10-15 腾讯科技(深圳)有限公司 伸缩性视频编码方法、装置、设备及存储介质
CN114827662B (zh) * 2022-03-18 2024-06-25 百果园技术(新加坡)有限公司 视频分辨率自适应调节方法、装置、设备和存储介质
CN116055715B (zh) * 2022-05-30 2023-10-20 荣耀终端有限公司 编解码器的调度方法及电子设备
CN115103211B (zh) * 2022-07-27 2023-01-10 广州迈聆信息科技有限公司 数据传输方法、电子装置、设备及计算机可读存储介质
CN117412062A (zh) * 2023-09-28 2024-01-16 协创芯片(上海)有限公司 一种支持h265编码的多媒体芯片
CN117676249B (zh) * 2023-12-07 2024-06-21 书行科技(北京)有限公司 直播视频的处理方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331717A (zh) * 2015-06-30 2017-01-11 成都鼎桥通信技术有限公司 视频码率自适应调整方法及发送端设备
WO2017141001A1 (en) * 2016-02-15 2017-08-24 V-Nova Limited Dynamically adaptive bitrate streaming

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010007760A2 (en) * 2008-07-16 2010-01-21 Thomson Licensing Encoding apparatus of video and audio data, encoding method thereof, and video editing system
US20120183040A1 (en) * 2011-01-19 2012-07-19 Qualcomm Incorporated Dynamic Video Switching
US8982942B2 (en) * 2011-06-17 2015-03-17 Microsoft Technology Licensing, Llc Adaptive codec selection
US9392295B2 (en) * 2011-07-20 2016-07-12 Broadcom Corporation Adaptable media processing architectures
US9635374B2 (en) * 2011-08-01 2017-04-25 Apple Inc. Systems and methods for coding video data using switchable encoders and decoders
US10045089B2 (en) * 2011-08-02 2018-08-07 Apple Inc. Selection of encoder and decoder for a video communications session
US9467708B2 (en) * 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
EP2613552A3 (en) * 2011-11-17 2016-11-09 Axell Corporation Method for moving image reproduction processing and mobile information terminal using the method
US9179144B2 (en) * 2012-11-28 2015-11-03 Cisco Technology, Inc. Fast switching hybrid video decoder
US10349069B2 (en) * 2012-12-11 2019-07-09 Sony Interactive Entertainment Inc. Software hardware hybrid video encoder
CN104159113B (zh) * 2014-06-30 2018-08-10 北京奇艺世纪科技有限公司 安卓系统中视频编码方式的选择方法和装置
CN106161991A (zh) * 2016-07-29 2016-11-23 青岛海信移动通信技术股份有限公司 一种摄像头视频处理方法及终端
CN106454413B (zh) * 2016-09-20 2019-10-08 北京小米移动软件有限公司 直播编码切换方法、装置及设备
CN106993190B (zh) * 2017-03-31 2019-06-21 武汉斗鱼网络科技有限公司 软硬件协同编码方法及系统
CN107396123A (zh) * 2017-09-25 2017-11-24 南京荣膺软件科技有限公司 便携式智能动态软硬件切换转码系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331717A (zh) * 2015-06-30 2017-01-11 成都鼎桥通信技术有限公司 视频码率自适应调整方法及发送端设备
WO2017141001A1 (en) * 2016-02-15 2017-08-24 V-Nova Limited Dynamically adaptive bitrate streaming

Also Published As

Publication number Publication date
US20200068201A1 (en) 2020-02-27
WO2019119950A1 (zh) 2019-06-27
CN109936744A (zh) 2019-06-25
US10931953B2 (en) 2021-02-23

Similar Documents

Publication Publication Date Title
CN109936744B (zh) 视频编码处理方法、装置及具有视频编码功能的应用
US10911763B2 (en) System and method for electronic data communication
KR102326312B1 (ko) 비디오 송신 방법 및 데이터 송신기
KR102385337B1 (ko) 비디오 송신 방법 및 데이터 송신기
US20130202025A1 (en) Method and system for transmitting video frame data to reduce slice error rate
JP5164866B2 (ja) ビデオ画像シーケンスの時間的頻度を適合させる方法および装置
KR101126118B1 (ko) 전송될 데이터의 준비를 위한 디바이스 및 방법과 대응하는 데이터 서버
MXPA06013791A (es) Metodo, aparato y sistema para mejorar la robustez de codecs de video predictivos utilizando un canal lateral basado en tecnicas de codificacion de fuente distribuida.
KR102473678B1 (ko) 비디오 송신 방법 및 데이터 송신기
WO2013000304A1 (zh) 环路滤波编解码方法及装置
US20170084280A1 (en) Speech Encoding
KR20150131175A (ko) Http를 통한 동적 적응형 스트리밍에서 미디어 세그먼트들의 손실 존재시의 회복력
CN110087140A (zh) 一种传输流媒体数据的方法、装置、介质及设备
CN105100823A (zh) 一种自适应媒体业务的处理方法、装置、编码器及解码器
KR20170102524A (ko) 일종 미디어 컨텐츠에 기반한 fec 메커니즘
WO2021057480A1 (zh) 视频编解码方法和相关装置
KR101953580B1 (ko) 영상회의 시스템에서 데이터 송수신 장치 및 방법
CN104135662B (zh) 用于在有限带宽和发射速率条件下对视频文件的改进型h.264压缩编码方法
Cheng et al. Grace: Loss-resilient real-time video communication using data-scalable autoencoder
WO2021057478A1 (zh) 视频编解码方法和相关装置
CN103561282A (zh) 流媒体文件的数据传输方法和装置
KR102428831B1 (ko) 데이터 전송 방법 및 송신기
CN104967915A (zh) 一种即时视频传输过程中的编码方法和电子设备
Martini et al. A demonstration platform for network aware joint optimization of wireless video transmission
CN110022479A (zh) 一种基于Nvidia Maxwell2显卡的H265硬件编码方法及直播平台

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