视频处理方法、装置、计算机设备和存储介质与流程

文档序号:15848707发布日期:2018-11-07 09:29阅读:240来源:国知局
视频处理方法、装置、计算机设备和存储介质与流程

本发明涉及互联网技术领域,尤其涉及一种视频处理方法、装置、计算机设备和存储介质。

背景技术

在视频传输时,由于待传输的视频较大,通常会先对视频进行编码,再传输。目前,在多种视频编码技术中,硬编码为通过gpu(graphicsprocessingunit,图形处理器)、专用的dsp(digitalsignalprocessing,即数字信号处理器)等非cpu(centralprocessingunit,中央处理器)进行编码的技术,硬编码因节省cpu负载,编码效率高等优势,从而逐渐被广泛应用。

现有技术中,通常利用一些具备利用gpu、专用的dsp等非cpu进行视频编码能力的videotoolbox硬编码器进行编码,输出编码后的视频,从而传输该编码后的视频。然而,目前,该videotoolbox硬编码器仅与某些指定类型的终端兼容,例如,软件系统为ios8.0及以上的系统的终端;在指定类型以外的其他终端上则无法使用该videotoolbox硬编码器进行编码,因此,目前亟需一种可以使用硬编码进行视频处理的方法。



技术实现要素:

本发明实施例提供了一种视频处理方法、装置、计算机设备和存储介质,可以解决相关技术中兼容性差的问题。所述技术方案如下:

第一方面,提供了一种视频处理方法,所述方法包括:

基于预设硬编码参数,获取解码参数,所述解码参数为对采用所述预设硬编码参数编码处理的视频进行解码时所需的参数;

获取推流器,将所述解码参数写入所述推流器,所述推流器用于将待处理的视频推送至多个用户的终端;

获取所述待处理的视频,通过目标处理器和所述预设硬编码参数,对所述待处理的视频的进行硬编码处理,所述目标处理器为中央处理器cpu以外的其他处理器;

通过所述推流器将硬编码处理后的视频和所述解码参数发送至多个用户的终端。

在一种可能实现方式中,所述基于预设硬编码参数,获取解码参数包括:

在预览状态下,采集预览图像,通过所述目标处理器和所述预设硬编码参数,对所述预览图像进行硬编码处理,得到目标封装格式的第一文件;

从所述第一文件中提取所述预览图像的配置参数,将所述预览图像的配置参数确定为后续硬编码处理后的待处理的视频的解码参数。

在一种可能实现方式中,所述预设硬编码参数包括码率、帧率和/或关键帧间隔;所述解码参数包括所述第一文件的序列参数集sps和/或图像参数集pps。

在一种可能实现方式中,所述获取推流器,将所述解码参数写入所述推流器包括:

当接收到开始指令时,创建所述推流器,将所述推流器中extradata参数修改为所述解码参数,并启动所述推流器,所述开始指令用于指示开始将所述待处理视频推送至多个用户的终端,所述extradata参数用于承载对视频进行编码处理时的解码参数。

在一种可能实现方式中,所述获取所述待处理的视频,通过目标处理器和所述预设硬编码参数,对所述待处理的视频的进行硬编码处理包括:

当接收到开始指令时,采集所述待处理的视频的视频数据,通过所述目标处理器和所述预设硬编码参数,对所述视频数据对应的多帧图像进行硬编码处理,所述开始指令用于指示开始将所述待处理视频推送至所述多个用户的终端;

通过所述目标处理器,创建第二文件,并将所述硬编码处理后的多帧图像写入所述第二文件,所述第二文件的封装格式为目标封装格式。

在一种可能实现方式中,所述方法还包括:

在将所述硬编码处理后的多帧图像写入第二文件过程中,监测所述第二文件的文件大小,当所述第二文件的文件大小大于预设阈值时,创建第三文件,并将所述硬编码处理后的多帧图像中还未写入所述第二文件的图像写入所述第三文件,所述第三文件的封装格式为目标封装格式。

在一种可能实现方式中,所述通过所述推流器将硬编码处理后的视频和所述解码参数发送至多个用户的终端包括:

当监测到所述第二文件中存在硬编码处理后的多帧图像时,根据所述第二文件的封装格式,从所述第二文件中读取所述硬编码处理后的多帧图像;

将所述硬编码处理后的多帧图像发送至所述推流器,通过所述推流器,按照预设视频流传输协议,将所述硬编码处理后的多帧图像和所述解码参数封装为第四文件,将所述第四文件发送至所述多个用户的终端,所述第四文件的封装格式与所述第二文件的目标封装格式不相同。

第二方面,提供了一种视频处理装置,所述装置包括:

获取模块,用于基于预设硬编码参数,获取解码参数,所述解码参数为对采用所述预设硬编码参数编码处理的视频进行解码时所需的参数;

写入模块,用于获取推流器,将所述解码参数写入所述推流器,所述推流器用于将待处理的视频推送至多个用户的终端;

编码模块,用于获取所述待处理的视频,通过目标处理器和所述预设硬编码参数,对所述待处理的视频的进行硬编码处理,所述目标处理器为中央处理器cpu以外的其他处理器;

发送模块,用于通过所述推流器将硬编码处理后的视频和所述解码参数发送至多个用户的终端。

在一种可能实现方式中,所述获取模块,用于在预览状态下,采集预览图像,通过所述目标处理器和所述预设硬编码参数,对所述预览图像进行硬编码处理,得到目标封装格式的第一文件;从所述第一文件中提取所述预览图像的配置参数,将所述预览图像的配置参数确定为后续硬编码处理后的待处理的视频的解码参数。

在一种可能实现方式中,所述预设硬编码参数包括码率、帧率和/或关键帧间隔;所述解码参数包括所述第一文件的序列参数集sps和/或图像参数集pps。

在一种可能实现方式中,所述写入模块,用于当接收到开始指令时,创建所述推流器,将所述推流器中extradata参数修改为所述解码参数,并启动所述推流器,所述开始指令用于指示开始将所述待处理视频推送至所述多个用户的终端,所述extradata参数用于承载对视频进行编码处理时的解码参数。

在一种可能实现方式中,所述编码模块,用于当接收到开始指令时,采集所述待处理的视频的视频数据,通过所述目标处理器和所述预设硬编码参数,对所述视频数据对应的多帧图像进行硬编码处理,所述开始指令用于指示开始将所述待处理视频推送至多个用户的终端;通过所述目标处理器,创建第二文件,并将所述硬编码处理后的多帧图像写入所述第二文件,所述第二文件的封装格式为目标封装格式。

在一种可能实现方式中,所述装置还包括:

监测模块,用于在将所述硬编码处理后的多帧图像写入所述第二文件过程中,监测所述第二文件的文件大小,当所述第二文件的文件大小大于预设阈值时,创建第三文件,并将所述硬编码处理后的多帧图像中还未写入所述第二文件的图像写入所述第三文件,所述第三文件的封装格式为目标封装格式。

在一种可能实现方式中,所述发送模块包括:

读取单元,用于当监测到所述第二文件中存在硬编码处理后的多帧图像时,根据所述第二文件的封装格式,从所述第二文件中读取所述硬编码处理后的多帧图像;

发送单元,用于将所述硬编码处理后的多帧图像发送至所述推流器,通过所述推流器,按照预设视频流传输协议,将所述硬编码处理后的多帧图像和所述解码参数封装为第四文件,将所述第四文件发送至所述多个用户的终端,所述第四文件的封装格式与所述第二文件的目标封装格式不相同。

第三方面,提供了一种计算机设备,包括处理器和存储器;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的计算机程序,实现第一方面任一项所述的方法步骤。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的方法步骤。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例中,终端可以先获取解码参数,并将该解码参数写入该推流器,该推流器用于将待处理的视频推送至多个用户的终端。终端再获取待处理的视频,通过目标处理器和预设硬编码参数,对该待处理的视频的进行硬编码处理,从而通过该推流器将编码后的视频和该解码参数发送至多个用户的终端,以使该多个用户的终端基于该解码参数解码该视频;由于无需采用软编码的编码接口进行编码,绕开了软编码接口的限制,并且,本方法可适用于任意类型的终端,从而提高了视频处理的兼容性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种视频处理方法的流程图;

图2是本发明实施例提供的一种视频处理方法的流程图;

图3是本发明实施例提供的一种flv文件中数据存储示意图;

图4是本发明实施例提供的一种flv文件中数据存储示意图;

图5是本发明实施例提供的一种flv文件中数据存储示意图;

图6是本发明实施例提供的一种flv文件中数据存储示意图;

图7是本发明实施例提供的一种视频处理装置的结构示意图;

图8是本发明实施例提供的一种终端的结构示意图;

图9是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的一种视频处理方法的流程图。参见图1,该方法包括:

101、基于预设硬编码参数,获取解码参数,该解码参数为对采用该预设硬编码参数编码处理的视频进行解码时所需的参数。

102、获取推流器,将该解码参数写入该推流器,该推流器用于将待处理的视频推送至多个用户的终端;

103、获取该待处理的视频,通过目标处理器和该预设硬编码参数,对该待处理的视频的进行硬编码处理,该目标处理器为中央处理器cpu以外的其他处理器;

104、通过该推流器将该硬编码处理后的视频和该解码参数发送至多个用户的终端。

在一种可能实现方式中,该基于预设硬编码参数,获取解码参数包括:

在预览状态下,采集预览图像,通过该目标处理器和该预设硬编码参数,对该预览图像进行硬编码处理,得到目标封装格式的第一文件;

从该第一文件中提取该预览图像的配置参数,将该预览图像的配置参数确定为后续硬编码处理后的待处理的视频的解码参数。

在一种可能实现方式中,该预设硬编码参数包括码率、帧率和/或关键帧间隔;该解码参数包括该第一文件的序列参数集sps和/或图像参数集pps。

在一种可能实现方式中,该获取推流器,将该解码参数写入该推流器包括:

当接收到开始指令时,创建该推流器,将该推流器中extradata参数修改为该解码参数,并启动该推流器,该开始指令用于指示开始将该待处理视频推送至多个用户的终端,该extradata参数用于承载对视频进行编码处理时的解码参数。

在一种可能实现方式中,该获取该待处理的视频,通过目标处理器和该预设硬编码参数,对该待处理的视频的进行硬编码处理包括:

当接收到开始指令时,采集该待处理的视频的视频数据,通过该目标处理器和该预设硬编码参数,对该视频数据对应的多帧图像进行硬编码处理,该开始指令用于指示开始将该待处理视频推送至多个用户的终端;

通过该目标处理器,创建第二文件,并将该硬编码处理后的多帧图像写入该第二文件,该第二文件的封装格式为目标封装格式。

在一种可能实现方式中,该方法还包括:

在将该硬编码处理后的多帧图像写入第二文件过程中,监测该第二文件的文件大小,当该第二文件的文件大小大于预设阈值时,创建第三文件,并将该硬编码处理后的多帧图像中还未写入该第二文件的图像写入该第三文件,该第三文件的封装格式为目标封装格式。

在一种可能实现方式中,该通过该推流器将硬编码处理后的视频和该解码参数发送至多个用户的终端包括:

当监测到该第二文件中存在硬编码处理后的多帧图像时,根据该第二文件的封装格式,从该第二文件中读取该硬编码处理后的多帧图像;

将该硬编码处理后的多帧图像发送至该推流器,通过该推流器,按照预设视频流传输协议,将该硬编码处理后的多帧图像和该解码参数封装为第四文件,将该第四文件发送至该多个用户的终端,该第四文件的封装格式与该第二文件的目标封装格式不相同。

本发明实施例中,终端可以先获取解码参数,并将该解码参数写入该推流器,该推流器用于将待处理的视频推送至多个用户的终端。终端再获取待处理的视频,通过目标处理器和预设硬编码参数,对该待处理的视频的进行硬编码处理,从而通过该推流器将编码后的视频和该解码参数发送至多个用户的终端,以使该多个用户的终端基于该解码参数解码该视频;由于无需采用软编码的编码接口进行编码,绕开了软编码接口的限制,并且,本方法可适用于任意类型的终端,从而提高了视频处理的兼容性。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

图2是本发明实施例提供的一种视频处理方法的流程图。该方法的执行主体可以为终端或服务器,本发明实施例仅以终端为例进行说明,参见图2,该方法包括:

201、在预览状态下,终端采集预览图像,通过目标处理器和预设硬编码参数,对预览图像进行硬编码处理,得到目标封装格式的第一文件。

本发明实施例中,终端可以采用硬编码的方式对视频进行编码处理,其中,硬编码为通过gpu、专用的dsp等非cpu进行编码的技术,相对于使用cpu进行编码的软编码过程,硬编码无需消耗cpu,性能较好,编码效率也较高。当终端对视频进行编码处理时,通常也需要获取解码该视频时所需的参数,以便于后续可以基于该参数解码该视频。

本发明实施例中,终端可以先利用视频的一帧图像,获取硬编码处理后的视频的解码参数,以直播场景为例,在直播场景中,终端在进入直播状态之前,通常会先为用户提供一个预览界面,用户可以通过该预览界面预览摄像头所录制视频。本步骤中,当终端需要进行直播时,终端可以先进入预览状态,在该预览状态下,调用终端的摄像头,采集一帧预览图像的原始数据,并通过目标处理器,按照预设硬编码参数,对该预览图像的原始数据进行硬编码处理,将编码后的预览图像的编码数据写入该第一文件中,并将该第一文件封装为目标封装格式。其中,该预设硬编码参数为对待处理的视频进行编码时使用的参数,也即是,后续对待传输的直播视频进行编码的参数。

其中,该预设硬编码参数可以包括但不限于:码率、帧率和/或关键帧间隔等。该预览图像的原始数据可以为rgb(red、green、blue,红黄蓝色彩)格式的数据,编码后的编码数据可以为h.264、h.265等格式的数据,该目标封装格式可以为mp4(movingpictureexpertsgroup4,动态图像专家组)格式,该第一文件可以为一个mp4文件。

202、终端从第一文件中提取该预览图像的配置参数,将该预览图像的配置参数确定为该后续硬编码处理后的待处理的视频的解码参数。

终端按照该第一文件的目标封装格式,对该第一文件进行解析,从该第一文件的指定位置提取该配置参数,该配置参数为对使用了预设硬编码参数进行编码的视频进行解码时所需的解码参数,因此,终端可以将该配置参数确定为后续解码该视频时所需的解码参数。

其中,该解码参数包括该第一文件的sps(sequenceparameterset,序列参数集)和/或图像参数集pps(pictureparameterset,图像参数集)。

需要说明的是,上述步骤201-202是步骤“终端基于预设硬编码参数,获取解码参数”的具体实现方式,上述实现方式实际上是终端基于录制的一帧图像进行实时硬编码处理,以得到解码参数的过程,然而,终端还可以事先对该图像进行硬编码处理,提取并存储该解码参数,从而后续可以直接从指定空间中获取该解码参数,提升了获取解码参数的效率;或者,终端还可以基于录制的多帧图像进行硬编码处理,提取多帧图像的解码参数,综合多帧图像的配置参数获取解码参数,从而提高了获取解码参数的准确性,提升了视频处理效率。

203、终端获取推流器,将该解码参数写入该推流器。

其中,该推流器用于将待处理的视频推送至多个用户。本步骤中,当终端接收到开指令时,创建该推流器,将该推流器中extradata参数修改为该解码参数,并启动该推流器,该extradata参数用于承载对视频进行软编码处理时的配置参数,该开始指令用于指示开始将该待处理视频推送至多个用户的终端。

其中,该启动指令可以为由用户触发,当终端检测到用户触发开始按钮时,接收该启动指令,并创建推流器,其中,该推流器可以为ffmpeg的formatcontext,在该推流器中,该extradata参数用于存储编码后的视频的配置参数,终端可以为将该解码参数写入该推流器的extradata参数所在字节。

需要说明的是,该推流器可以为软编码采用的推流器,一般的,在软编码时,创建推流器时即生成了对视频进行软编码处理时的配置参数,并存储在extradata参数中,本发明实施例中,仅通过该软编码采用formatcontext进行推流,并不实际使用软编码的推流器的参数,而是将基于硬编码处理时获得的配置参数作为解码参数,写入推流器中,从而使得后续可以基于gpu、dsp等非cpu的处理器执行硬编码并推流的过程,解除了软编码的限制,无需通过videotoolbox等专用的硬编码器,也可使得硬编码变得可行。

该解码参数可以为pps、sps等配置参数,该配置参数用于承载视频内图像的分辨率、子层数、初始图像控制信息,如初始qp等,终端通过将该配置参数写入推流器,并通过推流器将该配置参数和该视频一同推送给各个用户,使得各个用户的终端可以直接基于该配置参数进行解码,从而提升了解码效率。

204、终端获取待处理的视频,通过目标处理器和该预设硬编码参数,对该待处理的视频的进行硬编码处理。

本步骤中,用户可以通过触发开始按钮,触发终端开始录制视频,然后,终端对录制的视频原始数据进行硬编码处理,也即是生成待传输的视频流。该过程可以为:当终端接收到开始指令时,终端调用摄像头,采集待处理的视频的视频数据,通过该目标处理器和该预设硬编码参数,对该视频数据对应的多帧图像进行硬编码处理;终端通过该目标处理器,创建第二文件,并将硬编码处理后的多帧图像写入该第二文件,该第二文件的封装格式为目标封装格式。

其中,终端可以同步执行视频录制、视频硬编码以及视频封装为第二文件的步骤,也即是,终端可以每采集一帧图像的图像数据,将该图像数据进行编码,并写入该第二文件中。终端将编码后的每帧图像的图像数据写入第二文件时,终端可以在该图像数据前添加间隔符,例如00000001等间隔符,通过该间隔符,将不同帧的图像分隔开,以使后续解码时可以准确无误的得到每一帧图像的图像数据,提高了解码的准确性。

需要说明的是,终端在编码每帧图像时,还可以提取并记录每帧图像的时间戳。对于每帧图像,当终端对该帧图像进行编码,得到该帧图像对应的编码数据时,终端可以从记录的多个时间戳中提取该帧图像对应的时间戳;从而后续可以基于多帧图像的时间戳,将多帧图像按照时间先后顺序依次进行发送。

需要说明的是,终端采集的视频数据中还包括音频数据,终端可以记录每帧音频数据的时间戳,基于音频数据的时间戳和每帧图像的时间戳,将时间戳相同的每帧音频数据和图像数据一一对应,以便于后续将该帧音频数据和该帧图像数据同步发送。当然,在录制开始,由于采集图像数据的摄像头和采集音频数据的摄像头的开始采集时间可能不一致,导致在录制开始时的前几帧图像的图像数据和音频数据的时间戳可能无法完全重合,一般的,采集图像的时间会早于音频数据,因此,对于多帧图像中时间戳早于第一帧音频数据的时间戳的第一数目的图像,终端可以将该第一数目的图像的时间戳调整至该第一帧音频数据的时间戳。例如,如果第一帧图像、第二帧图像的时间戳分别为1050ms、1060ms,第一帧音频数据的时间戳为1060ms时,终端可以将第一帧图像、第二帧图像的时间戳分别调整至1060ms、1062ms,以使音频数据和图像可以一一对应,保证音频和图像的同步。

在一种可能的设计中,终端还可以在生成第二文件的过程中,实时监控文件的大小,从而进行动态调整。该过程可以为:终端在将硬编码处理后的多帧图像写入第二文件过程中,监测该第二文件的文件大小,当该第二文件的文件大小大于预设阈值时,创建第三文件,并将该硬编码处理后的多帧图像中还未写入该第二文件的图像写入该第三文件,该第三文件的封装格式为目标封装格式。其中,该预设阈值可以基于需要进行设置,本发明实施例对此不做具体限定。例如,该预设阈值可以为1m、23m等。需要说明的是,终端在将图像数据写入第二文件时,终端可以同步启动另一个线程,实时监控该第二文件的文件大小,当该第二文件的文件大小大于预设阈值时,终端可以直接将被写入的文件由该第二文件切换至第三文件,并发送该第二文件,从而在发送之后将第二文件删除,进而保证了本地的临时文件不会太大,避免了临时文件累积造成的空间资源浪费。

需要说明的是,本步骤中,终端采用的硬编码参数和编码预览图像时的参数相同,从而基于预览图像获得的配置参数,也同样适用于录制的视频数据,终端可以直接将该配置参数作为该待处理的视频的解码参数,将解码参数和视频发送至各个用户。

并且,终端通过将视频内的多帧图像写入文件,利用gpu、dsp等非cpu的处理器,以写文件的形式,实现视频编码;从而无需调用软编码的编码接口,绕开了软编码接口的限制,使得硬编码变得可行。同时,也无需使用videotoolbox等专用的硬编码器,从而使得本方法可以适用于任何类型的终端。由于无需调用videotoolbox编码器,节省了调用时间,从而提高了编码效率。

205、终端通过该推流器将硬编码处理后的视频和该解码参数发送至多个用户的终端。

本步骤中,终端可以通过推流器,将该解码参数写入该第二文件中,并通过该推流器,将写入解码参数的第二文件发送至多个用户的终端。其中,终端可以将写入解码参数的第二文件添加到ffmpeg的avpacket中,从而通过该avpacket将第二文件发送至服务器,由服务器将第二文件发送至观看该直播的各个用户的终端。当各个用户的终端接收到该第二文件时,可以先提取该第二文件的解码参数,基于该解码参数,解码该第二文件中的视频数据。其中,终端可以将该解码参数写入该第二文件的头信息中,一般的,终端可以将该解码参数写入该头信息的末尾字节。

本发明实施例中,该终端可以在生成第二文件过程中,同步将该第二文件中硬编码处理后的多帧图像推送至多个用户。并且,在实际发送时,终端所发送的视频文件的格式与该第二文件的格式可能不相同,本步骤还可以为:终端监测该第二文件中是否被写入了硬编码处理后的多帧图像,当监测到该第二文件中存在硬编码处理后的多帧图像时,根据该第二文件的封装格式,从该第二文件中读取该硬编码处理后的多帧图像;终端将该硬编码处理后的多帧图像发送至该推流器,通过该推流器,按照预设视频流传输协议,将该硬编码处理后的多帧图像和该解码参数封装为第四文件,将该第四文件发送至该多个用户的终端,该第四文件的封装格式与该第二文件的目标封装格式不相同。

其中,该第四文件的封装格式可以为flv(flashvideo,流媒体)格式。该第四文件也即是一个flv文件。该预设视频流传输协议可以为rmtp(realtimemessagingprotocol,实时消息传输)协议。终端在将硬编码处理后的多帧图像写入第二文件的过程中,终端可以启动另一个线程,通过该另一个线程,执行监测该第二文件中是否被写入硬编码处理后的多帧图像的步骤。

以flv文件为例,如图3所示,图3为flv封装格式的视频文件,其中,00000000代表时间戳;12为该视频文件的scriptdata数据,该scriptdata数据一般是存储在视频文件中用于展示的一些自定义信息;例如,视频中图像的宽高、制作该视频文件的公司名称等;000108代表未添加时间戳和000108、00000113等长度信息的视频文件的文件长度,00000113代表添加时间戳、和000108、00000113等长度信息之后的视频文件的完整长度。

如图4所示,在音频数据中,08代表存储的数据类型为音频数据,000007代表音频数据包的长度,后面的数据为时间戳等字段,然后同样有00000012代表音频数据包长度的结束字段。

如图5所示,在视频数据中,09代表存储的数据类型为视频数据,00002b代表视频数据包的长度,后面的数据为00000000时间戳等,对于1700,17代表关键帧,00代表videoconfig信息,也即是extradata,0017代表长度,67表明后面是sps,0004代表长度,68表明后面是pps,然后后面同样样有00000036代表整个视频数据包大小。

如图6所示,在实际存储的视频中图像帧时,09代表存储的数据类型为视频数据,视频数据包的长度为00a587,时间戳为00000000,17代表关键帧(27为非关键帧),01代表是视频中的图像帧,一般来说视频中图像帧的数据量很大,图6中未示出结束字段,但是后面也会有同样的标注整个长度的结束字段。

本发明实施例中,终端可以先获取解码参数,并将该解码参数写入该推流器,该推流器用于将待处理的视频推送至多个用户的终端。终端再获取待处理的视频,通过目标处理器和预设硬编码参数,对该待处理的视频的进行硬编码处理,从而通过该推流器将编码后的视频和该解码参数发送至多个用户的终端,以使该多个用户的终端基于该解码参数解码该视频;由于无需采用软编码的编码接口进行编码,绕开了软编码接口的限制,并且,本方法无需使用videotoolbox等专用的硬编码器,解除了终端类型的限制,适用于任意类型的终端,从而提高了视频处理的兼容性。

图7是本发明实施例提供的一种视频处理装置的结构示意图。参照图7,该装置包括:

获取模块701,用于基于预设硬编码参数,获取解码参数,该解码参数为对采用该预设硬编码参数编码处理的视频进行解码时所需的参数;

写入模块702,用于获取推流器,将该解码参数写入该推流器,该推流器用于将待处理的视频推送至多个用户的终端;

编码模块703,用于获取该待处理的视频,通过目标处理器和该预设硬编码参数,对该待处理的视频的进行硬编码处理,该目标处理器为中央处理器cpu以外的其他处理器;

发送模块704,用于通过该推流器将该硬编码处理后的视频和该解码参数发送至多个用户的终端。

在一种可能实现方式中,该获取模块701,用于在预览状态下,采集预览图像,通过该目标处理器和该预设硬编码参数,对该预览图像进行硬编码处理,得到目标封装格式的第一文件;从该第一文件中提取该预览图像的配置参数,将该预览图像的配置参数确定为后续硬编码处理后的待处理的视频的解码参数。

在一种可能实现方式中,该预设硬编码参数包括码率、帧率和/或关键帧间隔;该解码参数包括该第一文件的序列参数集sps和/或图像参数集pps。

在一种可能实现方式中,该写入模块702,用于当接收到开始指令时,创建该推流器,将该推流器中extradata参数修改为该解码参数,并启动该推流器,该开始指令用于指示开始将该待处理视频推送至多个用户的终端,该extradata参数用于承载对视频进行编码处理时的解码参数。

在一种可能实现方式中,该编码模块703,用于当接收到开始指令时,采集该待处理的视频的视频数据,通过该目标处理器和该预设硬编码参数,对该视频数据对应的多帧图像进行硬编码处理,该开始指令用于指示开始将该待处理视频推送至多个用户的终端;通过该目标处理器,创建第二文件,并将该硬编码处理后的多帧图像写入该第二文件,该第二文件的封装格式为目标封装格式。

在一种可能实现方式中,该装置还包括:

监测模块,用于在将该硬编码处理后的多帧图像写入第二文件过程中,监测该第二文件的文件大小,当该第二文件的文件大小大于预设阈值时,创建第三文件,并将该硬编码处理后的多帧图像中还未写入该第二文件的图像写入该第三文件,该第三文件的封装格式为目标封装格式。

在一种可能实现方式中,该发送模块704包括:

读取单元,用于当监测到该第二文件中存在硬编码处理后的多帧图像时,根据该第二文件的封装格式,从该第二文件中读取该硬编码处理后的多帧图像;

发送单元,用于将该硬编码处理后的多帧图像发送至该推流器,通过该推流器,按照预设视频流传输协议,将该硬编码处理后的多帧图像和该解码参数封装为第四文件,将该第四文件发送至该多个用户的终端,该第四文件的封装格式与该第二文件的目标封装格式不相同。

本发明实施例中,终端可以先获取解码参数,并将该解码参数写入该推流器,该推流器用于将待处理的视频推送至多个用户的终端。终端再获取待处理的视频,通过目标处理器和预设硬编码参数,对该待处理的视频的进行硬编码处理,从而通过该推流器将编码后的视频和该解码参数发送至多个用户的终端,以使该多个用户的终端基于该解码参数解码该视频;由于无需采用软编码的编码接口进行编码,绕开了软编码接口的限制,并且,本方法可适用于任意类型的终端,从而提高了视频处理的兼容性。

需要说明的是:上述实施例提供的视频处理装置在视频处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频处理装置与视频处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图8是本发明实施例提供的一种终端的结构示意图。该终端800可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端800包括有:处理器801和存储器802。

处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行以实现本申请中方法实施例提供的视频处理方法。

在一些实施例中,终端800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备包括:射频电路804、触摸显示屏805、摄像头806、音频电路807、定位组件808和电源809中的至少一种。

外围设备接口803可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和外围设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和外围设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路804用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏805用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置终端800的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在终端800的不同表面或呈折叠设计;在再一些实施例中,显示屏805可以是柔性显示屏,设置在终端800的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。

定位组件808用于定位终端800的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件808可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源809用于为终端800中的各个组件进行供电。电源809可以是交流电、直流电、一次性电池或可充电电池。当电源809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端800还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。

加速度传感器811可以检测以终端800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制触摸显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器812可以检测终端800的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对终端800的3d动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器813可以设置在终端800的侧边框和/或触摸显示屏805的下层。当压力传感器813设置在终端800的侧边框时,可以检测用户对终端800的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在触摸显示屏805的下层时,由处理器801根据用户对触摸显示屏805的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置终端800的正面、背面或侧面。当终端800上设置有物理按键或厂商logo时,指纹传感器814可以与物理按键或厂商logo集成在一起。

光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制触摸显示屏805的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏805的显示亮度;当环境光强度较低时,调低触摸显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。

接近传感器816,也称距离传感器,通常设置在终端800的前面板。接近传感器816用于采集用户与终端800的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与终端800的正面之间的距离逐渐变小时,由处理器801控制触摸显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与终端800的正面之间的距离逐渐变大时,由处理器801控制触摸显示屏805从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图8中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

图9是本发明实施例提供的一种服务器的结构示意图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)901和一个或一个以上的存储器902,其中,所述存储器902中存储有至少一条指令,所述至少一条指令由所述处理器901加载并执行以实现上述各个方法实施例提供的视频处理方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。

在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中的视频处理方法。例如,所述计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上该仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1