CN106385627B - 视频编码方法和装置 - Google Patents
视频编码方法和装置 Download PDFInfo
- Publication number
- CN106385627B CN106385627B CN201610826378.6A CN201610826378A CN106385627B CN 106385627 B CN106385627 B CN 106385627B CN 201610826378 A CN201610826378 A CN 201610826378A CN 106385627 B CN106385627 B CN 106385627B
- Authority
- CN
- China
- Prior art keywords
- video data
- encoder
- video
- original video
- original
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 153
- 230000002159 abnormal effect Effects 0.000 claims abstract description 52
- 230000008569 process Effects 0.000 claims description 87
- 238000010586 diagram Methods 0.000 description 19
- 230000015654 memory Effects 0.000 description 15
- 239000000872 buffer Substances 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000005856 abnormality Effects 0.000 description 5
- 238000013467 fragmentation Methods 0.000 description 5
- 238000006062 fragmentation reaction Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440281—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. by frame skipping
Abstract
本发明公开了一种视频编码方法和装置。该方法包括:通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据;通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据;通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据。本发明解决了相关技术的视频播放的稳定性差的问题的技术问题。
Description
技术领域
本发明涉及视频领域,具体而言,涉及一种视频编码方法和装置。
背景技术
目前,在安卓平台上采用视频编码器对视频进行编码时,一旦指定了视频编码器的输出码率,后续将无法动态调节,视频编码器将一直以此码率进行数据输出。当移动端在直播视频时,往往会遇到网络不稳定、网络速度慢、网络抖动等问题,此时编码器恒定的输出视频码率会导致直播卡顿严重、直播延迟加大、直播画面不流畅、观看端持续缓冲等问题,严重影响了用户的观看体验。
由于安卓设备的碎片化,导致市面上的安卓设备类型达上百种,每种设备都有各不相同的硬件配置。同时由于安卓设备的类型复杂,硬件编码器在有些设备上会出现异常,导致无法对视频进行直播,在使用视频硬件编码器时经常会遇到因为硬件不支持导致的无法编码视频的问题。
针对相关技术中,视频播放的稳定性差的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种视频编码方法和装置,以至少解决相关技术的视频播放的稳定性差的问题的技术问题。
根据本发明实施例的一个方面,提供了一种视频编码方法。该视频编码方法包括:在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,其中,第一输入队列用于存储第一目标视频的原始视频数据;在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,其中,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据;以及通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低。
根据本发明实施例的另一方面,还提供了一种视频编码装置。该视频编码装置包括:第一获取单元,用于在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,其中,第一输入队列用于存储第一目标视频的原始视频数据;第一编码单元,在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;第二获取单元,用于在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,其中,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据;以及第二编码单元,用于通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低。
在本发明实施例中,在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,第一输入队列用于存储第一目标视频的原始视频数据;在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据;以及通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低,达到了对视频进行播放的目的,从而实现了视频播放的稳定性的技术效果,进而解决了相关技术的视频播放的稳定性差的问题的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种视频编码方法的硬件环境的示意图;
图2是根据本发明实施例的一种视频编码方法的流程图;
图3是根据本发明实施例的另一种视频编码方法的流程图;
图4是根据本发明实施例的另一种视频编码方法的流程图;
图5是根据本发明实施例的另一种视频编码方法的流程图;
图6是根据本发明实施例的另一种视频编码方法的流程图;
图7是根据本发明实施例的另一种视频编码方法的流程图;
图8是根据本发明实施例的另一种视频编码方法的流程图;
图9是根据本发明实施例的另一种视频编码方法的流程图;
图10是根据本发明实施例的一种视频编码装置的示意图;
图11是根据本发明实施例的另一种视频编码装置的示意图;
图12是根据本发明实施例的另一种视频编码装置的示意图;
图13是根据本发明实施例的另一种视频编码装置的示意图;
图14是根据本发明实施例的另一种视频编码装置的示意图;
图15是根据本发明实施例的另一种视频编码装置的示意图;
图16是根据本发明实施例的另一种视频编码装置的示意图;以及
图17是根据本发明实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种视频编码方法的实施例。
可选地,在本实施例中,上述视频编码方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。图1是根据本发明实施例的一种视频编码方法的硬件环境的示意图。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的视频编码方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的视频编码方法也可以是由安装在其上的客户端来执行。
图2是根据本发明实施例的一种视频编码方法的流程图。如图2所示,该方法可以包括以下步骤:
步骤S202,在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据。
在本发明上述步骤S202提供的技术方案中,在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,其中,第一输入队列用于存储第一目标视频的原始视频数据。
终端通过网络对目标视频进行直播,该终端不限于PC、手机、平板电脑等终端,可以为安卓设备。第一目标视频为目标用户观看的通过网络正在直播的视频,该第一目标视频的原始视频数据存储在第一输入队列中,也即,该第一输入队列为原始视频数据队列。在终端通过网络正常直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,该第一视频编码器也即主编码器,从第一输入队列的头部获取第一原始视频数据。
步骤S204,在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据。
在本发明上述步骤S204提供的技术方案中,在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据。
在终端通过网络直播第一目标视频的过程中,在通过第一视频编码器从第一输入队列中依次获取的第一原始视频数据进行编码,得到编码视频数据之后,该编码视频数据以第一码率输出。可选地,该第一码率为当网络为正常状态时,通过第一视频编码器对第一目标视频的原始视频数据进行编码得到的编码视频数据输出时的码率,该第一码率为预先指定的第一编码器的码率。
步骤S206,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据。
在本发明上述步骤S206提供的技术方案中,在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,其中,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据。
在终端通过网络直播第一目标视频的过程中,在得到以第一码率输出的编码视频数据之后,由于网速缓慢,或者网络出现抖动的情况等,使网络出现异常,或者需要改变编码视频数据的输出码率时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,可以向第一视频编码器发出停止指令。在第一视频编码器接收停止指令之后,停止从第一输入队列中依次获取第一目标视频的原始视频数据,也即,停止消耗第一输入队列中的原始视频数据,同时清空第一视频编码器内部的编码器缓存。
在停止从第一输入队列中依次获取第一目标视频的原始视频数据之后,初始化新的视频编码器,得到第二视频编码器,将第二视频编码器作为主编码器,将第一视频编码器作为从编码器,从而实现第一视频编码器到第二视频编码器的切换。通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,也即,第二视频编码器将继续从第一输入队列的头部获取原始视频数据。其中,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据。
在第一视频编码器向第二视频编码器切换的过程中,第一输入队列中的原始频频数据并没有被清空。
步骤S208,通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据。
在本发明上述步骤S208提供的技术方案中,通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低。
在终端通过网络直播第一目标视频的过程中,在通过第二视频编码器从第一输入队列中依次获取的第二原始视频数据进行编码,得到编码视频数据之后,该编码视频数据以第二码率输出。该第二码率比第一码率低,在第二码率下,终端通过异常网络可以稳定地直播目标视频,从而实现通过调整目标视频数据的编码视频数据的码率以使终端适应不同的网络情况,从而保证了终端直播视频的流畅性和可靠性,避免了由于视频编码器的码率一旦指定之后无法动态调整所导致的视频直播严重卡顿、直播延迟大、观看端持续缓冲等问题的出现。
通过上述步骤S202至步骤S208,通过在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,其中,第一输入队列用于存储第一目标视频的原始视频数据;在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,其中,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据;以及通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低,可以解决了相关技术的视频播放的稳定性差的问题的技术问题,进而达到提高视频播放的稳定性的技术效果。
作为一种可选的实施例,在终端通过网络直播第一目标视频之前,当用于请求对第一目标视频进行直播的第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器,对第一硬件编码器进行初始化处理,通过第一硬件编码器从第一输入队列中依次获取第一目标视频的原始视频数据,通过第二硬件编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据。
图3是根据本发明实施例的另一种视频编码方法的流程图。如图3所示,该视频编码方法还包括:
步骤S301,接收用于请求对第一目标视频进行直播的第一请求命令。
在本发明上述步骤S301提供的技术方案中,接收用于请求对第一目标视频进行直播的第一请求命令。
在终端通过网络直播第一目标视频之前,接收对第一目标视频进行直播的第一请求命令,也即,在终端上发起对第一目标视频发起直播命令。
步骤S302,当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器,第一视频编码器包括第一硬件编码器。
在本发明上述步骤S302提供的技术方案中,当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器,第一视频编码器包括第一硬件编码器。
在接收用于请求对第一目标视频进行直播的第一请求命令之后,判断第一请求命令是否为首次在终端上请求对第一目标视频通过网络直播的命令,如果判断出第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令,也即,在终端上第一次对第一目标视频发起直播,启动第一硬件编码器,该第一硬件编码器为主硬件编码器。
步骤S303,对第一硬件编码器进行初始化处理。
在本发明上述步骤S303提供的技术方案中,对第一硬件编码器进行初始化处理。
在启动第一硬件编码器之后,对第一硬件编码器进行初始化处理。如果在对第一硬件编码器进行初始化处理的过程中遇到异常,则表明第一硬件编码器不可用,终端上的硬件配置不支持第一硬件编码器对第一原始视频数据的编码;如果在对第一硬件编码器进行初始化处理的过程中正常,则第一硬件编码器可用,表明终端上的硬件配置支持第一硬件编码器对第一原始视频数据的编码。
如果在对第一硬件编码器进行初始化处理的过程正常,则第一硬件编码器可用,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第一硬件编码器从第一输入队列中依次获取第一目标视频的原始视频数据。
在依次获取第一目标视频的原始视频数据的过程中,通过第一硬件编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一硬件编码器从第一输入队列中依次获取第一目标视频的原始视频数据,通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第二硬件编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,其中,第二视频编码器包括第二硬件编码器。
该实施例通过在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令;当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器,第一视频编码器包括第一硬件编码器;对第一硬件编码器进行初始化处理,通过第一硬件编码器从第一输入队列中依次获取第一目标视频的原始视频数据,通过第二硬件编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,其中,第二视频编码器包括第二硬件编码器,提高了硬件编码器对视频播放的稳定性。
作为一种可选的实施例,在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令;当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器和第一软件编码器;对第一硬件编码器进行初始化处理;当第一硬件编码器在进行初始化处理的过程中处理异常时,对第一软件编码器进行初始化处理,通过第一软件编码器从第一输入队列中依次获取第一目标视频的原始视频数据,通过第二软件编码器继续从第一输入队列中依次第一目标视频的原始视频数据。
图4是根据本发明实施例的另一种视频编码方法的流程图。如图4所示,该视频编码方法还包括以下步骤:
步骤S401,接收用于请求对第一目标视频进行直播的第一请求命令。
在本发明上述步骤S401提供的技术方案中,在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令。
在终端通过网络直播第一目标视频之前,接收对第一目标视频进行直播的第一请求命令,也即,在终端上发起对第一目标视频发起直播命令。
步骤S402,当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器和第一软件编码器。
在本发明上述步骤S402提供的技术方案中,当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器和第一软件编码器,第一视频编码器包括第一硬件编码器和第一软件编码器。
在接收用于请求对第一目标视频进行直播的第一请求命令之后,判断第一请求命令是否为首次在终端上请求对第一目标视频通过网络直播的命令,如果判断出第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令,也即,在终端上第一次对第一目标视频发起直播,同时启动第一硬件编码器和第一软件编码器,其中,第一软件编码器为主软件编码器。
步骤S403,对第一硬件编码器进行初始化处理。
在本发明上述步骤S403提供的技术方案中,对第一硬件编码器进行初始化处理。
在启动第一硬件编码器和第一软件编码器之后,优先对第一硬件编码器进行初始化,也即,对主硬件编码器进行初始化。
步骤S404,当第一硬件编码器在进行初始化处理的过程中处理异常时,对第一软件编码器进行初始化处理。
在本发明上述步骤S404提供的技术方案中,当第一硬件编码器在进行初始化处理的过程中处理异常时,对第一软件编码器进行初始化处理。
在对第一硬件编码器进行初始化处理的过程中,如果初始化的过程遇到异常,则表明终端不支持第一硬件编码器对目标视频的原始视频数据的编码,转而对第一软件编码器进行初始化处理,从而在终端不支持第一硬件编码器对目标视频的原始视频数据的编码时,通过软件编码器对目标视频的原始视频数据进行编码。
通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第一软件编码器从第一输入队列中依次获取第一目标视频的原始视频数据。
在依次获取第一目标视频的原始视频数据的过程中,通过第一软件编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一软件编码器从第一输入队列中依次获取第一目标视频的原始视频数据。
通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第二软件编码器继续从第一输入队列中依次第一目标视频的原始视频数据,其中,第二视频编码器包括第二软件编码器。
该实施例通过在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令;当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器和第一软件编码器,第一视频编码器包括第一硬件编码器和第一软件编码器;对第一硬件编码器进行初始化处理;当第一硬件编码器在进行初始化处理的过程中处理异常时,对第一软件编码器进行初始化处理,其中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第一软件编码器从第一输入队列中依次获取第一目标视频的原始视频数据,通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第二软件编码器继续从第一输入队列中依次第一目标视频的原始视频数据,其中,第二视频编码器包括第二软件编码器,避免了终端的碎片化问题,提高了软件编码器对视频播放的稳定性。
作为一种可选的实施例,在对第一硬件编码器进行初始化处理之后,获取对第一硬件编码器进行初始化处理时的处理情况;并对第一硬件编码器进行初始化处理时的处理情况进行记录。
图5是根据本发明实施例的另一种视频编码方法的流程图。如图5所示,该视频编码方法还包括以下步骤:
步骤S501,获取标记。
在本发明上述步骤S501提供的技术方案中,在对第一硬件编码器进行初始化处理之后,获取标记,其中,标记用于指示对第一硬件编码器进行初始化处理时的处理情况。
当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器,对第一硬件编码器进行初始化处理,该标记用于指示对第一硬件编码器进行初始化处理时的处理情况,也即,该标记用于指示对第一硬件编码器初始化成功的情况,当对第一硬件编码器初始化成功时,终端支持第一硬件编码器对目标视频的原始视频数据进行编码,该标记也可以用于指示对第一硬件编码器初始化失败的情况,当对第一硬件编码器初始化异常时,终端不支持第一硬件编码器对目标视频的原始视频数据进行编码。
步骤S502,将标记写入至预设位置。
在本发明上述步骤S502提供的技术方案中,将标记写入至预设位置。
在获取标记之后,将终端对第一硬件编码器的支持情况作为标记写入终端的硬盘存储中。
该实施例通过在对第一硬件编码器进行初始化处理之后,获取标记,将标记写入至预设位置,从而实现对第一硬件编码器进行初始化处理时的处理情况的记录。
作为一种可选的实施例,在将标记写入至预设位置之后,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为正常情况时,通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第三原始视频数据;通过第一硬件编码器对第三原始视频数据进行编码,得到以第三码率输出的编码视频数据;当网络异常时,停止通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二硬件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第四原始视频数据,通过第二硬件编码器对第四原始视频数据进行编码,得到以第四码率输出的编码视频数据。
图6是根据本发明实施例的另一种视频编码方法的流程图。如图6所示,该视频编码方法还包括以下步骤:
步骤S601,接收用于对第二目标视频进行直播的第二请求命令。
在本发明上述步骤S601提供的技术方案中,接收用于对第二目标视频进行直播的第二请求命令。
在将标记写入至预设位置之后,当再次在终端上发起视频直播时,接收用于多第二目标视频进行直播的第二请求命令。该第二目标视频可以与第一目标视频相同,也可以与第一目标视频不同。
步骤S602,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为正常情况时,通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第三原始视频数据。
在本发明上述步骤S602提供的技术方案中,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为正常情况时,通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第三原始视频数据,其中,第二输入队列用于存储第二目标视频的原始视频数据。
在接收用于对第二目标视频进行直播的第二请求命令之后,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为正常情况时,根据第二请求命令启动第一硬件编码器,将第一硬件编码器作为主硬件编码器。该第二目标视频的原始视频数据存储在第二输入队列中,也即,该第二输入队列为原始视频数据队列。在终端通过网络正常直播第二目标视频的过程中,通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第三原始视频数据,也即,从第二输入队列的头部获取第三原始视频数据。
步骤S603,通过第一硬件编码器对第三原始视频数据进行编码,得到以第三码率输出的编码视频数据。
在本发明上述步骤S603提供的技术方案中,在依次获取第二目标视频的原始视频数据的过程中,通过第一硬件编码器对第三原始视频数据进行编码,得到以第三码率输出的编码视频数据。
在终端通过网络直播第二目标视频的过程中,在通过第一硬件编码器从第二输入队列中依次获取的第三原始视频数据进行编码,得到编码视频数据之后,该编码视频数据以第三码率输出。可选地,该第三码率为当网络为正常状态时,通过第一硬件编码器对第二目标视频的原始视频数据进行编码得到的编码视频数据输出时的码率,该第三码率为预先指定的第一硬件编码器的码率。
步骤S604,当网络异常时,停止通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二硬件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第四原始视频数据。
在本发明上述步骤S604提供的技术方案中,在得到以第三码率输出的编码视频数据之后,当网络异常时,停止通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二硬件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第四原始视频数据,其中,第二视频编码器包括第二硬件编码器,第四原始视频数据为第二输入队列中的未由第一硬件编码器获取并进行编码的原始视频数据。
在终端通过网络直播第二目标视频的过程中,在得到以第三码率输出的编码视频数据之后,由于网速缓慢,或者网络出现抖动的情况等,使网络出现异常,停止通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,可以向第一硬件编码器发出停止指令。在第一硬件编码器接收停止指令之后,停止从第二输入队列中依次获取第二目标视频的原始视频数据,也即,停止消耗第二输入队列中的原始视频数据,同时清空第一硬件编码器内部的编码器缓存。
在停止从第二输入队列中依次获取第二目标视频的原始视频数据之后,初始化新的硬件编码器,得到第二硬件编码器,将第二硬件编码器作为主硬件编码器,从而实现第一硬件编码器到第二硬件编码器的切换,将第一硬件编码器作为从硬件编码器。通过第二硬件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第四原始视频数据,也即,第二硬件编码器将继续从第二输入队列的头部获取原始视频数据。其中,第四原始视频数据为第二输入队列中的未由第一硬件编码器获取并进行编码的原始视频数据。
在第一硬件编码器向第二硬件编码器切换的过程中,第二输入队列中的原始频频数据并没有被清空。
步骤S605,通过第二硬件编码器对第四原始视频数据进行编码,得到以第四码率输出的编码视频数据。
在本发明上述步骤S605提供的技术方案中,通过第二硬件编码器对第四原始视频数据进行编码,得到以第四码率输出的编码视频数据,其中,第四码率比第三码率低。
在终端通过网络直播第二目标视频的过程中,在通过第二硬件编码器从第二输入队列中依次获取的原始视频数据进行编码,得到编码视频数据之后,该编码视频数据以第四码率输出。该第四码率比第三码率低,在第四码率下,终端通过异常网络可以稳定地直播目标视频,从而实现通过调整目标视频数据的编码视频数据的码率以使终端适应不同的网络情况,从而保证了终端直播视频的流畅性和可靠性,避免了由于硬件编码器的码率一旦指定之后无法动态调整所导致的视频直播严重卡顿、直播延迟大、观看端持续缓冲等问题的出现。
该实施例通过在将标记写入至预设位置之后,接收用于对第二目标视频进行直播的第二请求命令;当标记指示的对第一硬件编码器进行初始化处理时的处理情况为正常情况时,通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第三原始视频数据;通过第一硬件编码器对第三原始视频数据进行编码,得到以第三码率输出的编码视频数据;当网络异常时,停止通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二硬件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第四原始视频数据,第四原始视频数据为第二输入队列中的未由第一硬件编码器获取并进行编码的原始视频数据;通过第二硬件编码器对第四原始视频数据进行编码,得到以第四码率输出的编码视频数据,提高了视频播放的稳定性。
作为一种可选的实施例,在接收用于对第二目标视频进行直播的第二请求命令之后,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为异常情况时,通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第五原始视频数据;通过第一软件编码器对第五原始视频数据进行编码,得到以第五码率输出的编码视频数据;当网络异常时,停止通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二软件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第六原始视频数据,第六原始视频数据为第二输入队列中的未由第一软件编码器获取并进行编码的原始视频数据;通过第二软件编码器对第六原始视频数据进行编码,得到以第六码率输出的编码视频数据。
图7是根据本发明实施例的另一种视频编码方法的流程图。如图7所示,该视频编码方法还包括以下步骤:
步骤S701,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为异常情况时,通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第五原始视频数据。
在本发明上述步骤S701提供的技术方案中,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为异常情况时,通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第五原始视频数据。
在接收用于对第二目标视频进行直播的第二请求命令之后,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为异常情况时,根据第二请求命令启动第一软件编码器,将第一软件编码器作为主软件编码器。该第二目标视频的原始视频数据存储在第二输入队列中,也即,该第二输入队列为原始视频数据队列。在终端通过网络正常直播第二目标视频的过程中,通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第五原始视频数据,也即,从第二输入队列的头部获取第五原始视频数据。
步骤S702,通过第一软件编码器对第五原始视频数据进行编码,得到以第五码率输出的编码视频数据。
在本发明上述步骤S702提供的技术方案中,在依次获取第二目标视频的原始视频数据的过程中,通过第一软件编码器对第五原始视频数据进行编码,得到以第五码率输出的编码视频数据。
在终端通过网络直播第二目标视频的过程中,在通过第一软件编码器从第二输入队列中依次获取的第五原始视频数据进行编码,得到编码视频数据之后,该编码视频数据以第五码率输出。可选地,该第五码率为当网络为正常状态时,通过第一软件编码器对第二目标视频的原始视频数据进行编码得到的编码视频数据输出时的码率,该第五码率为预先指定的第一软件编码器的码率。
步骤S703,当网络异常时,停止通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二软件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第六原始视频数据。
在本发明上述步骤S703提供的技术方案中,在得到以第五码率输出的编码视频数据之后,当网络异常时,停止通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二软件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第六原始视频数据,其中,第六原始视频数据为第二输入队列中的未由第一软件编码器获取并进行编码的原始视频数据。
在终端通过网络直播第二目标视频的过程中,在得到以第五码率输出的编码视频数据之后,由于网速缓慢,或者网络出现抖动的情况等,使网络出现异常,停止通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,可以向第一软件编码器发出停止指令。在第一软件编码器接收停止指令之后,停止从第二输入队列中依次获取第二目标视频的原始视频数据,也即,停止消耗第二输入队列中的原始视频数据,同时清空第一软件编码器内部的编码器缓存。
在停止从第二输入队列中依次获取第二目标视频的原始视频数据之后,初始化新的软件编码器,得到第二软件编码器,将第二软件频编码器作为主软件编码器,从而实现第一软件编码器到第二软件编码器的切换,将第一软件编码器作为从软件编码器。通过第二软件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第六原始视频数据,也即,第二软件编码器将继续从第二输入队列的头部获取原始视频数据。其中,第六原始视频数据为第二输入队列中的未由第一软件编码器获取并进行编码的原始视频数据。
在第一软件编码器向第二软件编码器切换的过程中,第二输入队列中的原始频频数据并没有被清空。
步骤S704,通过第二软件编码器对第六原始视频数据进行编码,得到以第六码率输出的编码视频数据。
在本发明上述步骤S704提供的技术方案中,通过第二软件编码器对第六原始视频数据进行编码,得到以第六码率输出的编码视频数据,其中,第六码率比第五码率低。
在终端通过网络直播第二目标视频的过程中,在通过第二软件编码器从第二输入队列中依次获取的原始视频数据进行编码,得到编码视频数据之后,该编码视频数据以第六码率输出。该第六码率比第五码率低,在第六码率下,终端通过异常网络可以稳定地直播目标视频,从而实现通过调整目标视频数据的编码视频数据的码率以使终端适应不同的网络情况,从而保证了终端直播视频的流畅性和可靠性,避免了由于软件编码器的码率一旦指定之后无法动态调整所导致的视频直播严重卡顿、直播延迟大、观看端持续缓冲等问题的出现。
该实施例通过在接收用于对第二目标视频进行直播的第二请求命令之后,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为异常情况时,根据第二请求命令启动第一软件编码器,将第一软件编码器作为主软件编码器。该第二目标视频的原始视频数据存储在第二输入队列中,也即,该第二输入队列为原始视频数据队列。在终端通过网络正常直播第二目标视频的过程中,通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第五原始视频数据,也即,从第二输入队列的头部获取第五原始视频数据,提高了视频播放的稳定性。
作为一种可选的实施例,在通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据之后,当网络正常时,停止通过第二视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第一视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第七原始视频数据;以及通过第一视频编码器对第七原始视频数据进行编码,得到以第一码率输出的编码视频数据。
图8是根据本发明实施例的另一种视频编码方法的流程图。如图8所示,该视频编码方法还包括以下步骤:
步骤S801,当网络正常时,停止通过第二视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第一视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第七原始视频数据。
在本发明上述步骤S801提供的技术方案中,当网络正常时,也即,当网络的状态由异常状态恢复到正常状态时,停止通过第二视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,可以对第二视频编码器发送停止指令以使第二视频编码器停止从第一输入队列中依次获取第一目标视频的原始视频数据。重新对第一视频编码器进行初始化,并通过第一视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第七原始视频数据,其中,第七原始视频数据为在得到以第一码率输出的编码视频数据之后,第一输入队列中的未由第二视频编码器获取并进行编码的原始视频数据。
步骤S802,通过第一视频编码器对第七原始视频数据进行编码,得到以第一码率输出的编码视频数据。
在本发明上述步骤S802提供的技术方案中,通过第一视频编码器对第七原始视频数据进行编码,得到以第一码率输出的编码视频数据。
该实施例通过在通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据之后,当网络正常时,停止通过第二视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第一视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第七原始视频数据,其中,第七原始视频数据为在得到以第一码率输出的编码视频数据之后,第一输入队列中的未由第二视频编码器获取并进行编码的原始视频数据;以及通过第一视频编码器对第七原始视频数据进行编码,得到以第一码率输出的编码视频数据,从而提高了视频播放的稳定性。
本发明实施例通过硬件/软件编码器的选择决策兼容了终端设备的碎片化问题,保证了在所有安卓设备上都可以进行正常的视频直播,在终端设备可以做到在观看端无感知的条件下动态调整编码策略,让终端在直播的同时可以动态适应不同的网络环境。
实施例2
下面结合优选的实施例对本发明的技术方案进行说明。
本发明实施例采用“主编码器-从编码器”策略的编码器架构。优先使用硬件编码器,在硬件不支持时转而使用软件编码器。在主编码器(硬件/软件编码器)遇到异常或者需要改变输出码率时,初始化一个新的符合要求的编码器(硬件/软件编码器),以作为主编码器。同时原来的主编码器被重置,并作为从编码器,预备下一次的码率变化。
下面对目标视频开始直播时的编码器选择决策进行介绍。
图9是根据本发明实施例的另一种视频编码方法的流程图。如图9所示,该视频编码方法包括以下步骤:
步骤S901,启动硬件编码器。
步骤S902,启动软件编码器。
如果是终端设备上第一次发起直播,将同时启动一个主硬件编码器和一个主软件编码器。
步骤S903,对硬件编码器进行初始化。
优先对硬件编码器进行初始化。
步骤S904,判断对硬件编码器是否初始化成功。
判断对硬件编码器是否初始化成功,如果硬件编码器初始化过程正常表明该终端设备支持硬件编码,执行步骤S905。如果硬件编码器初始化过程中遇到异常,则表明该终端设备不支持硬件编码,执行步骤S906。
步骤S905,标记硬件编码器可用。
如果硬件编码器初始化过程正常表明该终端设备支持硬件编码,标记硬件编码器可用,将硬编码器的支持情况作为标记写入终端设备的硬盘存储中。
步骤S906,标记硬件编码器不可用。
如果硬件编码器初始化过程中遇到异常,则表明该终端设备不支持硬件编码,标记硬件编码器不可用,将硬编码器的不支持情况作为标记写入终端设备的硬盘存储中。
步骤S907,对软件编码器进行初始化。
如果硬件编码器初始化过程中遇到异常,则表明该终端设备不支持硬件编码,转而对软件编码器进行初始化。
步骤S908,确定主编码器。
当硬件编码器可用时,确定硬件编码器为主硬件编码器,当软件编码器可用时,确定软件编码器为主硬件编码器。当再次在该终端设备上发起直播时,将优先读取硬盘存储中的编码器支持标记来决定使用硬件编码器还是使用软件编码器,保证了直播编码器的高效性同时兼容了终端的碎片化问题。
下面对目标视频直播过程中的码率的动态调整进行介绍。
终端对目标视频进行直播时,如果出现网络抖动,则需要实时降低或提高视频编码器的输出码率。目标视频在直播的过程中调整码率的流程如下:
当终端通过网络正常直播目标视频的过程,原始视频数据将传送至视频编码器的输入队列。将视频编码器A作为主编码器,从输入队列头部获取原始视频数据进行编码。
当目标视频在直播的过程中出现网速缓慢时,向视频编码器A发送停止指令,视频编码器A将停止消耗视频编码器的输入队列的数据。清空视频编码器A内部的编码器缓存。
重新初始化一个新的输出码率较低的视频编码器B,将视频编码器B作为主编码器,视频编码器B将继续从原始视频数据队列的头部拿出数据进行编码,获取较低码率的输出。视频编码器A到视频编码器B的切换过程时,原始视频数据队列并没有被清空,故而目标视频的图像是连续的。
当网络速度恢复时,重新对视频编码器A进行初始化,为视频编码器A设置一个较高的输出码率,将视频编码器A作为主编码器。同时视频编码器B收到停止指令并根据停止指令停止运行。
该实施例通过硬件/软件编码器的选择在保证直播编码器高效性的同时兼容了安卓的碎片化问题,保证了在所有终端上都可以进行正常的视频直播,同时,该实施例在终端上可以正常的进行码率调整,保证了视频直播的流畅性和稳定性,实现了观看端无感知的条件下动态调整编码策略,让终端的直播也可以动态适应不同的网络环境。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例3
根据本发明实施例,还提供了一种用于实施上述视频编码方法的视频编码装置。图10是根据本发明实施例的一种视频编码装置的示意图。如图10所示,该视频编码装置可以包括:第一获取单元10、第一编码单元20、第二获取单元30和第二编码单元40。
第一获取单元10,用于在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,其中,第一输入队列用于存储第一目标视频的原始视频数据。
第一编码单元20,在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据。
第二获取单元30,用于在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,其中,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据。
第二编码单元40,用于通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低。
图11是根据本发明实施例的另一种视频编码装置的示意图。如图11所示,该视频编码装置可以包括:第一获取单元10、第一编码单元20、第二获取单元30和第二编码单元40。该视频编码装置还可以包括:第一接收单元50、第一启动单元60和第一处理单元70。
需要说明的是,该实施例的第一获取单元10、第一编码单元20、第二获取单元30和第二编码单元40与图10所示实施例的视频编码装置中的作用相同,此处不再赘述。
第一接收单元50,用于在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令。
第一启动单元60,用于当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器,其中,第一视频编码器包括第一硬件编码器。
第一处理单元70,用于对第一硬件编码器进行初始化处理。
第一获取单元10用于通过第一硬件编码器从第一输入队列中依次获取第一目标视频的原始视频数据。
第二获取单元30用于通过第二硬件编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,其中,第二视频编码器包括第二硬件编码器。
图12是根据本发明实施例的另一种视频编码装置的示意图。如图12所示,该视频编码装置可以包括:第一获取单元10、第一编码单元20、第二获取单元30和第二编码单元40。该视频编码装置还可以包括:第二接收单元80、第二启动单元90、第二处理单元100和第三处理单元110。
需要说明的是,该实施例的第一获取单元10、第一编码单元20、第二获取单元30和第二编码单元40与图10所示实施例的视频编码装置中的作用相同,此处不再赘述。
第二接收单元80,用于在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令。
第二启动单元90,用于当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器和第一软件编码器,其中,第一视频编码器包括第一硬件编码器和第一软件编码器。
第二处理单元100,用于对第一硬件编码器进行初始化处理。
第三处理单元110,用于当第一硬件编码器在进行初始化处理的过程中处理异常时,对第一软件编码器进行初始化处理。
第一获取单元10用于通过第一软件编码器从第一输入队列中依次获取第一目标视频的原始视频数据。
第二获取单元30用于通过第二软件编码器继续从第一输入队列中依次第一目标视频的原始视频数据,其中,第二视频编码器包括第二软件编码器。
图13是根据本发明实施例的另一种视频编码装置的示意图。如图13所示,该视频编码装置可以包括:第一获取单元10、第一编码单元20、第二获取单元30、第二编码单元40、第二接收单元80、第二启动单元90、第二处理单元100和第三处理单元110。该视频编码装置还包括:第三获取单元120和写入单元130。
需要说明的是,该实施例的第一获取单元10、第一编码单元20、第二获取单元30、第二编码单元40、第二接收单元80、第二启动单元90、第二处理单元100和第三处理单元110与图12所示实施例的视频编码装置中的作用相同,此处不再赘述。
第三获取单元120,用于在对第一硬件编码器进行初始化处理之后,获取标记,其中,标记用于指示对第一硬件编码器进行初始化处理时的处理情。
写入单元130,用于将标记写入至预设位置。
图14是根据本发明实施例的另一种视频编码装置的示意图。如图14所示,该视频编码装置可以包括:第一获取单元10、第一编码单元20、第二获取单元30、第二编码单元40、第二接收单元80、第二启动单元90、第二处理单元100、第三处理单元110、第三获取单元120和写入单元130。该视频编码装置还包括:第三接收单元140、第四获取单元150、第三编码单元160、第五获取单元170和第四编码单元180。
需要说明的是,该实施例的第一获取单元10、第一编码单元20、第二获取单元30、第二编码单元40、第二接收单元80、第二启动单元90、第二处理单元100、第三处理单元110、第三获取单元120和写入单元130与图13所示实施例的视频编码装置中的作用相同,此处不再赘述。
第三接收单元140,用于在将标记写入至预设位置之后,接收用于对第二目标视频进行直播的第二请求命令。
第四获取单元150,用于当标记指示的对第一硬件编码器进行初始化处理时的处理情况为正常情况时,通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第三原始视频数据,其中,第二输入队列用于存储第二目标视频的原始视频数据。
第三编码单元160,用于在依次获取第二目标视频的原始视频数据的过程中,通过第一硬件编码器对第三原始视频数据进行编码,得到以第三码率输出的编码视频数据。
第五获取单元170,用于在得到以第三码率输出的编码视频数据之后,当网络异常时,停止通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二硬件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第四原始视频数据,其中,第二视频编码器包括第二硬件编码器,第四原始视频数据为第二输入队列中的未由第一硬件编码器获取并进行编码的原始视频数据。
第四编码单元180,用于通过第二硬件编码器对第四原始视频数据进行编码,得到以第四码率输出的编码视频数据,其中,第四码率比第三码率低。
图15是根据本发明实施例的另一种视频编码装置的示意图。如图15所示,该视频编码装置可以包括:第一获取单元10、第一编码单元20、第二获取单元30、第二编码单元40、第二接收单元80、第二启动单元90、第二处理单元100、第三处理单元110、第三获取单元120、写入单元130、第三接收单元140、第四获取单元150、第三编码单元160、第五获取单元170和第四编码单元180。该视频编码装置还包括:第六获取单元190、第五编码单元200、第七获取单元210和第六编码单元220。
需要说明的是,该实施例的第一获取单元10、第一编码单元20、第二获取单元30、第二编码单元40、第二接收单元80、第二启动单元90、第二处理单元100、第三处理单元110、第三获取单元120、写入单元130第三接收单元140、第四获取单元150、第三编码单元160、第五获取单元170和第四编码单元180与图14所示实施例的视频编码装置中的作用相同,此处不再赘述。
第六获取单元190,用于在接收用于对第二目标视频进行直播的第二请求命令之后,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为异常情况时,通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第五原始视频数据。
第五编码单元200,用于在依次获取第二目标视频的原始视频数据的过程中,通过第一软件编码器对第五原始视频数据进行编码,得到以第五码率输出的编码视频数据。
第七获取单元210,用于在得到以第五码率输出的编码视频数据之后,当网络异常时,停止通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二软件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第六原始视频数据,其中,第六原始视频数据为第二输入队列中的未由第一软件编码器获取并进行编码的原始视频数据。
第六编码单元220,用于通过第二软件编码器对第六原始视频数据进行编码,得到以第六码率输出的编码视频数据,其中,第六码率比第五码率低。
图16是根据本发明实施例的另一种视频编码装置的示意图。如图16所示,该视频编码装置可以包括:第一获取单元10、第一编码单元20、第二获取单元30、第二编码单元40。该视频编码装置还包括:第八获取单元230和第七编码单元240。
需要说明的是,该实施例的第一获取单元10、第一编码单元20、第二获取单元30、第二编码单元40与图10所示实施例的视频编码装置中的作用相同,此处不再赘述。
第八获取单元230,用于在通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据之后,当网络正常时,停止通过第二视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第一视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第七原始视频数据,其中,第七原始视频数据为在得到以第一码率输出的编码视频数据之后,第一输入队列中的未由第二视频编码器获取并进行编码的原始视频数据。
第七编码单元240,用于通过第一视频编码器对第七原始视频数据进行编码,得到以第一码率输出的编码视频数据。
需要说明的是,该实施例中的第一获取单元10可以用于执行本申请实施例1中的步骤S202,该实施例中的第一编码单元20可以用于执行本申请实施例1中的步骤S204,该实施例中的第二获取单元30可以用于执行本申请实施例1中的步骤S206,该实施例中的第二编码单元40可以用于执行本申请实施例1中的步骤S208。
该实施例通过第一获取单元10,用于在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,其中,第一输入队列用于存储第一目标视频的原始视频数据,通过第一编码单元20,在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据,通过第二获取单元30,用于在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,其中,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据,第二编码单元40通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低,,可以解决了相关技术的视频播放的稳定性差的问题的技术问题,进而达到提高视频播放的稳定性的技术效果。
此处需要说明的是,上述单元与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述单元作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
实施例4
根据本发明实施例,还提供了一种用于实施上述视频编码方法的服务器或终端。
图17是根据本发明实施例的一种终端的结构框图。如图17所示,该终端可以包括:一个或多个(图中仅示出一个)处理器171、存储器173、以及传输装置175(如上述实施例中的发送装置),如图17所示,该终端还可以包括输入输出设备177。
其中,存储器173可用于存储软件程序以及模块,如本发明实施例中的视频编码方法和装置对应的程序指令/模块,处理器171通过运行存储在存储器173内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的视频编码方法。存储器173可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器173可进一步包括相对于处理器171远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置175用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置175包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置175为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器173用于存储应用程序。
处理器171可以通过传输装置175调用存储器173存储的应用程序,以执行下述步骤:
在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,其中,第一输入队列用于存储第一目标视频的原始视频数据;
在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;
在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,其中,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据;
通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低。
处理器171还用于执行下述步骤:在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令;当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器,其中,第一视频编码器包括第一硬件编码器;对第一硬件编码器进行初始化处理,其中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第一硬件编码器从第一输入队列中依次获取第一目标视频的原始视频数据,通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第二硬件编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,其中,第二视频编码器包括第二硬件编码器。
处理器171还用于执行下述步骤:在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令;当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器和第一软件编码器,其中,第一视频编码器包括第一硬件编码器和第一软件编码器;对第一硬件编码器进行初始化处理;当第一硬件编码器在进行初始化处理的过程中处理异常时,对第一软件编码器进行初始化处理,其中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第一软件编码器从第一输入队列中依次获取第一目标视频的原始视频数据,通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第二软件编码器继续从第一输入队列中依次第一目标视频的原始视频数据,其中,第二视频编码器包括第二软件编码器。
处理器171还用于执行下述步骤:在对第一硬件编码器进行初始化处理之后,获取标记,其中,标记用于指示对第一硬件编码器进行初始化处理时的处理情况;以及将标记写入至预设位置。
处理器171还用于执行下述步骤:在将标记写入至预设位置之后,接收用于对第二目标视频进行直播的第二请求命令;当标记指示的对第一硬件编码器进行初始化处理时的处理情况为正常情况时,通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第三原始视频数据,其中,第二输入队列用于存储第二目标视频的原始视频数据;在依次获取第二目标视频的原始视频数据的过程中,通过第一硬件编码器对第三原始视频数据进行编码,得到以第三码率输出的编码视频数据;在得到以第三码率输出的编码视频数据之后,当网络异常时,停止通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二硬件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第四原始视频数据,其中,第二视频编码器包括第二硬件编码器,第四原始视频数据为第二输入队列中的未由第一硬件编码器获取并进行编码的原始视频数据;以及通过第二硬件编码器对第四原始视频数据进行编码,得到以第四码率输出的编码视频数据,其中,第四码率比第三码率低。
处理器171还用于执行下述步骤:在接收用于对第二目标视频进行直播的第二请求命令之后,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为异常情况时,通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第五原始视频数据;在依次获取第二目标视频的原始视频数据的过程中,通过第一软件编码器对第五原始视频数据进行编码,得到以第五码率输出的编码视频数据;在得到以第五码率输出的编码视频数据之后,当网络异常时,停止通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二软件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第六原始视频数据,其中,第六原始视频数据为第二输入队列中的未由第一软件编码器获取并进行编码的原始视频数据;以及通过第二软件编码器对第六原始视频数据进行编码,得到以第六码率输出的编码视频数据,其中,第六码率比第五码率低。
采用本发明实施例,提供了一种视频编码方法的方案。在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,第一输入队列用于存储第一目标视频的原始视频数据;在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据;以及通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低,达到了对视频进行播放的目的,从而实现了视频播放的稳定性的技术效果,进而解决了相关技术的视频播放的稳定性差的问题的技术问题。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图17所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图17其并不对上述电子装置的结构造成限定。例如,终端还可包括比图17中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图17所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例5
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行视频编码方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
在终端通过网络直播第一目标视频的过程中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,得到第一原始视频数据,其中,第一输入队列用于存储第一目标视频的原始视频数据;
在依次获取第一目标视频的原始视频数据的过程中,通过第一视频编码器对第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;
在得到以第一码率输出的编码视频数据之后,当网络异常时,停止通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据,并通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,得到第二原始视频数据,其中,第二原始视频数据为第一输入队列中的未由第一视频编码器获取并进行编码的原始视频数据;
通过第二视频编码器对第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,第二码率比第一码率低。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令;当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器,其中,第一视频编码器包括第一硬件编码器;对第一硬件编码器进行初始化处理,其中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第一硬件编码器从第一输入队列中依次获取第一目标视频的原始视频数据,通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第二硬件编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据,其中,第二视频编码器包括第二硬件编码器。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在终端通过网络直播第一目标视频之前,接收用于请求对第一目标视频进行直播的第一请求命令;当第一请求命令为首次在终端上请求对第一目标视频通过网络直播的命令时,启动第一硬件编码器和第一软件编码器,其中,第一视频编码器包括第一硬件编码器和第一软件编码器;对第一硬件编码器进行初始化处理;当第一硬件编码器在进行初始化处理的过程中处理异常时,对第一软件编码器进行初始化处理,其中,通过第一视频编码器从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第一软件编码器从第一输入队列中依次获取第一目标视频的原始视频数据,通过第二视频编码器继续从第一输入队列中依次获取第一目标视频的原始视频数据包括:通过第二软件编码器继续从第一输入队列中依次第一目标视频的原始视频数据,其中,第二视频编码器包括第二软件编码器。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在对第一硬件编码器进行初始化处理之后,获取标记,其中,标记用于指示对第一硬件编码器进行初始化处理时的处理情况;以及将标记写入至预设位置。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在将标记写入至预设位置之后,接收用于对第二目标视频进行直播的第二请求命令;当标记指示的对第一硬件编码器进行初始化处理时的处理情况为正常情况时,通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第三原始视频数据,其中,第二输入队列用于存储第二目标视频的原始视频数据;在依次获取第二目标视频的原始视频数据的过程中,通过第一硬件编码器对第三原始视频数据进行编码,得到以第三码率输出的编码视频数据;在得到以第三码率输出的编码视频数据之后,当网络异常时,停止通过第一硬件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二硬件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第四原始视频数据,其中,第二视频编码器包括第二硬件编码器,第四原始视频数据为第二输入队列中的未由第一硬件编码器获取并进行编码的原始视频数据;以及通过第二硬件编码器对第四原始视频数据进行编码,得到以第四码率输出的编码视频数据,其中,第四码率比第三码率低。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在接收用于对第二目标视频进行直播的第二请求命令之后,当标记指示的对第一硬件编码器进行初始化处理时的处理情况为异常情况时,通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,得到第五原始视频数据;在依次获取第二目标视频的原始视频数据的过程中,通过第一软件编码器对第五原始视频数据进行编码,得到以第五码率输出的编码视频数据;在得到以第五码率输出的编码视频数据之后,当网络异常时,停止通过第一软件编码器从第二输入队列中依次获取第二目标视频的原始视频数据,并通过第二软件编码器继续从第二输入队列中依次获取第二目标视频的原始视频数据,得到第六原始视频数据,其中,第六原始视频数据为第二输入队列中的未由第一软件编码器获取并进行编码的原始视频数据;以及通过第二软件编码器对第六原始视频数据进行编码,得到以第六码率输出的编码视频数据,其中,第六码率比第五码率低。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种视频编码方法,其特征在于,包括:
在终端通过网络直播第一目标视频的过程中,将所述第一目标视频的原始视频数据传送至第一输入队列中,通过第一视频编码器从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,得到第一原始视频数据,其中,所述第一输入队列用于存储所述第一目标视频的原始视频数据;
在依次获取所述第一目标视频的原始视频数据的过程中,通过所述第一视频编码器对所述第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;所述第一码率为指定的第一编码器的码率,所述第一视频编码器的码率指定后无法动态调整;
在得到以所述第一码率输出的编码视频数据之后,当所述网络异常时,停止通过所述第一视频编码器从所述第一输入队列中依次获取所述第一目标视频的原始视频数据,未清空所述第一输入队列,并通过第二视频编码器继续从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,得到第二原始视频数据,其中,所述第二原始视频数据为所述第一输入队列中的未由所述第一视频编码器获取并进行编码的原始视频数据;以及
通过所述第二视频编码器对所述第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,所述第二码率比所述第一码率低。
2.根据权利要求1所述的方法,其特征在于,在所述终端通过所述网络直播所述第一目标视频之前,所述方法还包括:
接收用于请求对所述第一目标视频进行直播的第一请求命令;
当所述第一请求命令为首次在所述终端上请求对所述第一目标视频通过所述网络直播的命令时,启动第一硬件编码器,其中,所述第一视频编码器包括所述第一硬件编码器;
对所述第一硬件编码器进行初始化处理,
其中,通过所述第一视频编码器从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据包括:通过所述第一硬件编码器从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,
通过所述第二视频编码器继续从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据包括:通过第二硬件编码器继续从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,其中,所述第二视频编码器包括所述第二硬件编码器。
3.根据权利要求1所述的方法,其特征在于,在所述终端通过所述网络直播所述第一目标视频之前,所述方法还包括:
接收用于请求对所述第一目标视频进行直播的第一请求命令;
当所述第一请求命令为首次在所述终端上请求对所述第一目标视频通过所述网络直播的命令时,启动第一硬件编码器和第一软件编码器,其中,所述第一视频编码器包括所述第一硬件编码器和所述第一软件编码器;
对所述第一硬件编码器进行初始化处理;
当所述第一硬件编码器在进行初始化处理的过程中处理异常时,对所述第一软件编码器进行初始化处理,
其中,通过所述第一视频编码器从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据包括:通过所述第一软件编码器从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,
通过所述第二视频编码器继续从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据包括:通过第二软件编码器继续从所述第一输入队列的头部依次所述第一目标视频的原始视频数据,其中,所述第二视频编码器包括所述第二软件编码器。
4.根据权利要求3所述的方法,其特征在于,在对所述第一硬件编码器进行初始化处理之后,所述方法还包括:
获取标记,其中,所述标记用于指示对所述第一硬件编码器进行初始化处理时的处理情况;以及
将所述标记写入至预设位置。
5.根据权利要求4所述的方法,其特征在于,在将所述标记写入至所述预设位置之后,所述方法还包括:
接收用于对第二目标视频进行直播的第二请求命令;
当所述标记指示的对所述第一硬件编码器进行初始化处理时的处理情况为正常情况时,通过所述第一硬件编码器从第二输入队列中依次获取所述第二目标视频的原始视频数据,得到第三原始视频数据,其中,所述第二输入队列用于存储所述第二目标视频的原始视频数据;
在依次获取所述第二目标视频的原始视频数据的过程中,通过所述第一硬件编码器对所述第三原始视频数据进行编码,得到以第三码率输出的编码视频数据;
在得到以所述第三码率输出的编码视频数据之后,当所述网络异常时,停止通过所述第一硬件编码器从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,并通过第二硬件编码器继续从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,得到第四原始视频数据,其中,所述第二视频编码器包括所述第二硬件编码器,所述第四原始视频数据为所述第二输入队列中的未由所述第一硬件编码器获取并进行编码的原始视频数据;以及
通过所述第二硬件编码器对所述第四原始视频数据进行编码,得到以第四码率输出的编码视频数据,其中,所述第四码率比所述第三码率低。
6.根据权利要求5所述的方法,其特征在于,在接收用于对所述第二目标视频进行直播的第二请求命令之后,所述方法还包括:
当所述标记指示的对所述第一硬件编码器进行初始化处理时的处理情况为异常情况时,通过所述第一软件编码器从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,得到第五原始视频数据;
在依次获取所述第二目标视频的原始视频数据的过程中,通过所述第一软件编码器对所述第五原始视频数据进行编码,得到以第五码率输出的编码视频数据;
在得到以所述第五码率输出的编码视频数据之后,当所述网络异常时,停止通过所述第一软件编码器从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,并通过所述第二软件编码器继续从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,得到第六原始视频数据,其中,所述第六原始视频数据为所述第二输入队列中的未由所述第一软件编码器获取并进行编码的原始视频数据;以及
通过所述第二软件编码器对所述第六原始视频数据进行编码,得到以第六码率输出的编码视频数据,其中,所述第六码率比所述第五码率低。
7.根据权利要求1所述的方法,其特征在于,在通过所述第二视频编码器对所述第二原始视频数据进行编码,得到以所述第二码率输出的编码视频数据之后,所述方法还包括:
当所述网络正常时,停止通过所述第二视频编码器从所述第一输入队列中依次获取所述第一目标视频的原始视频数据,并通过所述第一视频编码器继续从所述第一输入队列中依次获取所述第一目标视频的原始视频数据,得到第七原始视频数据,其中,所述第七原始视频数据为在得到以所述第一码率输出的编码视频数据之后,所述第一输入队列中的未由所述第二视频编码器获取并进行编码的原始视频数据;以及
通过所述第一视频编码器对所述第七原始视频数据进行编码,得到以所述第一码率输出的编码视频数据。
8.一种视频编码装置,其特征在于,包括:
第一获取单元,用于在终端通过网络直播第一目标视频的过程中,将所述第一目标视频的原始视频数据传送至第一输入队列中,通过第一视频编码器从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,得到第一原始视频数据,其中,所述第一输入队列用于存储所述第一目标视频的原始视频数据;
第一编码单元,在依次获取所述第一目标视频的原始视频数据的过程中,通过所述第一视频编码器对所述第一原始视频数据进行编码,得到以第一码率输出的编码视频数据;所述第一码率为指定的第一编码器的码率,所述第一视频编码器的码率指定后无法动态调整;
第二获取单元,用于在得到以所述第一码率输出的编码视频数据之后,当所述网络异常时,停止通过所述第一视频编码器从所述第一输入队列中依次获取所述第一目标视频的原始视频数据,未清空所述第一输入队列,并通过第二视频编码器继续从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,得到第二原始视频数据,其中,所述第二原始视频数据为所述第一输入队列中的未由所述第一视频编码器获取并进行编码的原始视频数据;以及
第二编码单元,用于通过所述第二视频编码器对所述第二原始视频数据进行编码,得到以第二码率输出的编码视频数据,其中,所述第二码率比所述第一码率低。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第一接收单元,用于在所述终端通过所述网络直播所述第一目标视频之前,接收用于请求对所述第一目标视频进行直播的第一请求命令;
第一启动单元,用于当所述第一请求命令为首次在所述终端上请求对所述第一目标视频通过所述网络直播的命令时,启动第一硬件编码器,其中,所述第一视频编码器包括所述第一硬件编码器;
第一处理单元,用于对所述第一硬件编码器进行初始化处理,其中,所述第一获取单元用于通过所述第一硬件编码器从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,所述第二获取单元用于通过第二硬件编码器继续从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,其中,所述第二视频编码器包括所述第二硬件编码器。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二接收单元,用于在所述终端通过所述网络直播所述第一目标视频之前,接收用于请求对所述第一目标视频进行直播的第一请求命令;
第二启动单元,用于当所述第一请求命令为首次在所述终端上请求对所述第一目标视频通过所述网络直播的命令时,启动第一硬件编码器和第一软件编码器,其中,所述第一视频编码器包括所述第一硬件编码器和所述第一软件编码器;
第二处理单元,用于对所述第一硬件编码器进行初始化处理;
第三处理单元,用于当所述第一硬件编码器在进行初始化处理的过程中处理异常时,对所述第一软件编码器进行初始化处理,其中,所述第一获取单元用于通过所述第一软件编码器从所述第一输入队列的头部依次获取所述第一目标视频的原始视频数据,所述第二获取单元用于通过第二软件编码器继续从所述第一输入队列的头部依次所述第一目标视频的原始视频数据,其中,所述第二视频编码器包括所述第二软件编码器。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第三获取单元,用于在对所述第一硬件编码器进行初始化处理之后,获取标记,其中,所述标记用于指示对所述第一硬件编码器进行初始化处理时的处理情况;以及
写入单元,用于将所述标记写入至预设位置。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第三接收单元,用于在将所述标记写入至所述预设位置之后,接收用于对第二目标视频进行直播的第二请求命令;
第四获取单元,用于当所述标记指示的对所述第一硬件编码器进行初始化处理时的处理情况为正常情况时,通过所述第一硬件编码器从第二输入队列中依次获取所述第二目标视频的原始视频数据,得到第三原始视频数据,其中,所述第二输入队列用于存储所述第二目标视频的原始视频数据;
第三编码单元,用于在依次获取所述第二目标视频的原始视频数据的过程中,通过所述第一硬件编码器对所述第三原始视频数据进行编码,得到以第三码率输出的编码视频数据;
第五获取单元,用于在得到以所述第三码率输出的编码视频数据之后,当所述网络异常时,停止通过所述第一硬件编码器从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,并通过第二硬件编码器继续从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,得到第四原始视频数据,其中,所述第二视频编码器包括所述第二硬件编码器,所述第四原始视频数据为所述第二输入队列中的未由所述第一硬件编码器获取并进行编码的原始视频数据;以及
第四编码单元,用于通过所述第二硬件编码器对所述第四原始视频数据进行编码,得到以第四码率输出的编码视频数据,其中,所述第四码率比所述第三码率低。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第六获取单元,用于在接收用于对所述第二目标视频进行直播的第二请求命令之后,当所述标记指示的对所述第一硬件编码器进行初始化处理时的处理情况为异常情况时,通过所述第一软件编码器从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,得到第五原始视频数据;
第五编码单元,用于在依次获取所述第二目标视频的原始视频数据的过程中,通过所述第一软件编码器对所述第五原始视频数据进行编码,得到以第五码率输出的编码视频数据;
第七获取单元,用于在得到以所述第五码率输出的编码视频数据之后,当所述网络异常时,停止通过所述第一软件编码器从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,并通过所述第二软件编码器继续从所述第二输入队列中依次获取所述第二目标视频的原始视频数据,得到第六原始视频数据,其中,所述第六原始视频数据为所述第二输入队列中的未由所述第一软件编码器获取并进行编码的原始视频数据;以及
第六编码单元,用于通过所述第二软件编码器对所述第六原始视频数据进行编码,得到以第六码率输出的编码视频数据,其中,所述第六码率比所述第五码率低。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第八获取单元,用于在通过所述第二视频编码器对所述第二原始视频数据进行编码,得到以所述第二码率输出的编码视频数据之后,当所述网络正常时,停止通过所述第二视频编码器从所述第一输入队列中依次获取所述第一目标视频的原始视频数据,并通过所述第一视频编码器继续从所述第一输入队列中依次获取所述第一目标视频的原始视频数据,得到第七原始视频数据,其中,所述第七原始视频数据为在得到以所述第一码率输出的编码视频数据之后,所述第一输入队列中的未由所述第二视频编码器获取并进行编码的原始视频数据;以及
第七编码单元,用于通过所述第一视频编码器对所述第七原始视频数据进行编码,得到以所述第一码率输出的编码视频数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610826378.6A CN106385627B (zh) | 2016-09-14 | 2016-09-14 | 视频编码方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610826378.6A CN106385627B (zh) | 2016-09-14 | 2016-09-14 | 视频编码方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106385627A CN106385627A (zh) | 2017-02-08 |
CN106385627B true CN106385627B (zh) | 2019-12-13 |
Family
ID=57935795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610826378.6A Active CN106385627B (zh) | 2016-09-14 | 2016-09-14 | 视频编码方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106385627B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106961604B (zh) | 2017-03-07 | 2018-06-15 | 腾讯科技(深圳)有限公司 | 视频编码的码率分配、编码单元码率分配方法及装置 |
CN107231564B (zh) * | 2017-05-31 | 2020-06-09 | 广州华多网络科技有限公司 | 一种视频直播方法、直播系统和直播服务器 |
CN111770316B (zh) * | 2020-07-22 | 2021-11-02 | 广州芯象科技有限公司 | 一种音视频编码器 |
CN115209223A (zh) * | 2022-05-12 | 2022-10-18 | 广州方硅信息技术有限公司 | 视频编/解码的控制处理方法、装置、终端以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101237310A (zh) * | 2007-11-19 | 2008-08-06 | 北京邮电大学 | 一种增强型自适应数据重传的方法 |
CN103095480A (zh) * | 2011-11-04 | 2013-05-08 | 华为软件技术有限公司 | 头端系统主备切换的方法、网管设备和头端系统 |
CN103533386A (zh) * | 2013-10-21 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 一种直播控制方法,及主播设备 |
CN104159113A (zh) * | 2014-06-30 | 2014-11-19 | 北京奇艺世纪科技有限公司 | 安卓系统中视频编码方式的选择方法和装置 |
CN104754366A (zh) * | 2015-03-03 | 2015-07-01 | 腾讯科技(深圳)有限公司 | 音视频文件直播方法、装置和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231898A (zh) * | 2011-07-05 | 2011-11-02 | 深圳市融创天下科技股份有限公司 | 一种网络带宽自适应qos传输的方法、系统和终端设备 |
-
2016
- 2016-09-14 CN CN201610826378.6A patent/CN106385627B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101237310A (zh) * | 2007-11-19 | 2008-08-06 | 北京邮电大学 | 一种增强型自适应数据重传的方法 |
CN103095480A (zh) * | 2011-11-04 | 2013-05-08 | 华为软件技术有限公司 | 头端系统主备切换的方法、网管设备和头端系统 |
CN103533386A (zh) * | 2013-10-21 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 一种直播控制方法,及主播设备 |
CN104159113A (zh) * | 2014-06-30 | 2014-11-19 | 北京奇艺世纪科技有限公司 | 安卓系统中视频编码方式的选择方法和装置 |
CN104754366A (zh) * | 2015-03-03 | 2015-07-01 | 腾讯科技(深圳)有限公司 | 音视频文件直播方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106385627A (zh) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6288594B2 (ja) | デスクトップクラウドベースのメディア制御方法およびデバイス | |
CN106385627B (zh) | 视频编码方法和装置 | |
CN103916679B (zh) | 一种用于提供视频信息的方法、设备与系统 | |
CN108156467B (zh) | 数据传输方法和装置、存储介质及电子装置 | |
US9894401B2 (en) | Efficient frame rendering | |
CN105163134A (zh) | 直播视频的视频编码参数设置方法、装置及视频编码设备 | |
US20170162229A1 (en) | Play method and device | |
CN108881931B (zh) | 一种数据缓冲方法及网络设备 | |
CN104349176A (zh) | 自适应流媒体系统、下载方法及流媒体服务器、用户终端 | |
KR20150004392A (ko) | 템플릿 모드에서의 짧은 암호 사용기간의 지원 | |
EP3745734A1 (en) | Multi-media file processing method and device, storage medium and electronic device | |
US20200259880A1 (en) | Data processing method and apparatus | |
US11968379B2 (en) | Video decoding method and apparatus, video encoding method and apparatus, storage medium, and electronic device | |
US10277652B2 (en) | Transmission apparatus, transmission method, and program | |
CN103152606A (zh) | 视频文件处理方法及装置、系统 | |
US20140149539A1 (en) | Streaming content over a network | |
KR102335495B1 (ko) | 클라이언트 단말기들과 적어도 하나의 서버 사이의 송신 경로를 따라 배열된 캐시를 작동시키기 위한 방법, 및 대응하는 캐시 | |
WO2017160404A1 (en) | User input based adaptive streaming | |
JP7162019B2 (ja) | データストリーミング方法、データストリーミング装置、及びコンピュータプログラム | |
CN108574881B (zh) | 一种投影类型推荐方法、服务器及客户端 | |
JP5383316B2 (ja) | 送信機と電子装置間の信号ストリームの簡略化された伝送方法 | |
CN110677692B (zh) | 视频解码方法及装置、视频编码方法及装置 | |
EP3089460A1 (en) | A system and a method for distributing content via static channel assignment in a mobile content gateway | |
CN110545431A (zh) | 视频解码方法及装置、视频编码方法及装置 | |
CN106534137B (zh) | 媒体流传输方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231221 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |