WebRTC数据编码方法、设备及计算机可读存储介质与流程

文档序号:14684782发布日期:2018-06-12 23:12阅读:199来源:国知局
WebRTC数据编码方法、设备及计算机可读存储介质与流程

本发明涉及多媒体信息处理领域,尤其涉及一种WebRTC数据编码方法、设备及计算机可读存储介质。



背景技术:

WebRTC(Web Real-Time Communication)是一套标准的网页实时通信技术,通过该技术,智能终端可以使用Web或者移动应用程序通过浏览器实现实时语音视频和视频会议等服务,因而在行业内得到了广泛的支持和应用。

在采用WebRTC技术进行语音视频或视频会议时,由于WebRTC图像数据(H264格式的流媒体)是点对点地实时传输,因此对于数据编码的效率会有一定的要求,否则数据接收端会出现帧率低,卡顿的现象。而智能终端在对WebRTC数据进行编码时,通常是通过WebRTC媒体框架中的软编模块进行软编码;在这样的情况下,如果智能终端的硬件性能不够高(如NXP的imx6sl,处理器为1核,内存1G),就会导致编码时间过长,甚至一秒内只能编码出几帧,从而导致接收端接收到的图像出现卡顿的现象。



技术实现要素:

本发明的主要目的在于提出一种WebRTC数据编码方法、设备及计算机可读存储介质,旨在解决WebRTC数据编码效率低的技术问题。

为实现上述目的,本发明提供一种WebRTC数据编码方法,所述WebRTC数据编码方法包括以下步骤:

在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化,其中,所述硬编码模块和软编码模块共用所述WebRTC框架的一个输入接口;

获取WebRTC待编码图像,并将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧;

通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码;

获取所述硬编码模块和软编码模块输出的数据流,并对所述数据流进行封装打。

可选地,所述在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化的步骤包括:

在所述WebRTC框架中封装所述vpu的硬编码类,并注册所述vpu的硬编码通道接口;

初始化所述vpu和硬编码通道接口,将所述硬编码通道接口与所述WebRTC框架的一个输入接口进行关联,并配置所述vpu的硬编参数;

初始化所述软编码模块对应的软编码通道接口,将所述软编码通道接口与所述输入接口进行关联,并配置所述软编码模块的软编参数。

可选地,所述获取待编码图像,并将所述待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧的步骤包括:

启动摄像头,并通过所述摄像头获取原始图像,并对所述原始图像进行格式转换,获得WebRTC待编码图像;

将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧。

可选地,所述通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码的步骤包括:

通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,并根据硬编码优先规则将所述各序列图像分别分配至所述硬编码模块和软编码模块,以使所述硬编码模块和软编码模块根据所述IDR帧对各自分配的序列图像进行编码。

可选地,所述获取所述硬编码模块和软编码模块输出的数据流,并对所述数据流进行封装打包的步骤之后,还包括:

将打包后的打包数据流发送至实时通信RTP模块进行数据发送。

此外,为实现上述目的,本发明还提供一种WebRTC数据编码设备,其特征在于,所述WebRTC数据编码设备包括处理器、存储器及存储在所述存储器上并可被所述处理器执行的编码程序,其中所述编码程序被所述处理器执行时实现以下步骤:

在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化,其中,所述硬编码模块和软编码模块共用所述WebRTC框架的一个输入接口;

获取WebRTC待编码图像,并将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧;

通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码;

获取所述硬编码模块和软编码模块输出的数据流,并对所述数据流进行封装打包。

可选地,所述在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化的步骤包括:

在所述WebRTC框架中封装所述vpu的硬编码类,并注册所述vpu的硬编码通道接口;

初始化所述vpu和硬编码通道接口,将所述硬编码通道接口与所述WebRTC框架的一个输入接口进行关联,并配置所述vpu的硬编参数;

初始化所述软编码模块对应的软编码通道接口,将所述软编码通道接口与所述输入接口进行关联,并配置所述软编码模块的软编参数。

可选地,所述获取待编码图像,并将所述待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧的步骤包括:

启动摄像头,并通过所述摄像头获取原始图像,并对所述原始图像进行格式转换,获得WebRTC待编码图像;

将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR。

可选地,所述通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码的步骤包括:

通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,并根据硬编码优先规则将所述各序列图像分别分配至所述硬编码模块和软编码模块,以使所述硬编码模块和软编码模块根据所述IDR帧对各自分配的序列图像进行编码。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有编码程序,所述编码程序被处理器执行时实现如上述的WebRTC数据编码方法的步骤。

本发明通过在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化,其中,所述硬编码模块和软编码模块共用所述WebRTC框架的一个输入接口;获取WebRTC待编码图像,并将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧;通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码;获取所述硬编码模块和软编码模块输出的数据流,并对所述数据流进行封装打包。通过以上方式,本发明将VPU硬件编码技术集成到WebRTC框架,使得WebRTC框架具有软编码和编解码的功能,在进行WebRTC数据编码时,可采用软硬结合的方式进行编码,从而减小了处理器CPU的占用率和处理压力,提高了数据编码的效率;同时,硬编码模块和软编码模块是集成在同一个框架并共用一个框架输入接口,从而在采用软硬结合的方式进行编码时,可在框架接口层直接切换编码通道,无需执行模块切换流程,加快了软硬结合编码的切换速度,进一步提高了编码效率,从而保证了WebRTC数据传输速率,提高用户的使用体验。

附图说明

图1为本发明实施例方案涉及的设备硬件结构示意图;

图2为本发明WebRTC数据编码方法第一实施例的流程示意图;

图3为图2所述在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化的细化流程示意图;

图4为本发明WebRTC数据编码方法第二实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例方案的主要思路是:在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化,其中,所述硬编码模块和软编码模块共用所述WebRTC框架的一个输入接口;获取WebRTC待编码图像,并将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧;通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码;获取所述硬编码模块和软编码模块输出的数据流,并对所述数据流进行封装打包。

本发明实施例的WebRTC数据编码设备可由多种方式实现,例如可以是诸如手机、平板电脑、掌上电脑、便捷式媒体播放器、可穿戴设备、智能手环等移动终端,还可以是诸如数字TV、PC终端等固定终端。

参照图1,图1为本发明实施例方案涉及的WebRTC数据编码设备的硬件结构示意图。WebRTC数据编码设备可以包括处理器1001(例如CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003包括可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,当然存储器1005可选的还可以是独立于前述处理器1001的存储装置。

可选地,该设备还可以包括摄像头(前置摄像头)、闪光灯(前置闪光灯)、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可根据感光设备与参照物的距离,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,该设备还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,WebRTC数据编码设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

继续参照图1,图1中作为一种计算机存储介质的存储器1005可以包括操作系统、网络通信模块以及编码程序。

在图1所示的终端中,网络通信模块主要用于连接服务器或其它终端进行数据通信;而处理器1001可以调用存储器1005中存储的编码程序,并执行以下操作:

在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化,其中,所述硬编码模块和软编码模块共用所述WebRTC框架的一个输入接口;

获取WebRTC待编码图像,并将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧;

通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码;

获取所述硬编码模块和软编码模块输出的数据流,并对所述数据流进行封装打包。

进一步的,所述在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化的步骤包括:

在所述WebRTC框架中封装所述vpu的硬编码类,并注册所述vpu的硬编码通道接口;

初始化所述vpu和硬编码通道接口,将所述硬编码通道接口与所述WebRTC框架的一个输入接口进行关联,并配置所述vpu的硬编参数;

初始化所述软编码模块对应的软编码通道接口,将所述软编码通道接口与所述输入接口进行关联,并配置所述软编码模块的软编参数。

进一步的,所述获取待编码图像,并将所述待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧的步骤包括:

启动摄像头,并通过所述摄像头获取原始图像,并对所述原始图像进行格式转换,获得WebRTC待编码图像;

将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧。

进一步的,所述通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码的步骤包括:

通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,并根据硬编码优先规则将所述各序列图像分别分配至所述硬编码模块和软编码模块,以使所述硬编码模块和软编码模块根据所述IDR帧对各自分配的序列图像进行编码。

进一步的,处理器1001还可以调用存储器1005中存储的编码程序,并执行以下操作:

将打包后的打包数据流发送至实时通信RTP模块进行数据发送。

基于上述设备硬件结构,提出本发明WebRTC数据编码方法的各个实施例。

参照图2,图2为本发明WebRTC数据编码方法第一实施例的流程示意图。

本实施例中,所述WebRTC数据编码方法包括以下步骤:

步骤S10,在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化,其中,所述硬编码模块和软编码模块共用所述WebRTC框架的一个输入接口;

在采用WebRTC技术进行语音视频或视频会议时,由于WebRTCT图像数据(H264格式的流媒体)是点对点地实时传输,因此对于数据编码的效率会有一定的要求,否则数据接收端会出现帧率低,卡顿的现象。而智能终端在对WebRTC数据进行编码时,通常是通过WebRTC媒体框架中的软编模块进行软编码;在这样的情况下,如果设备的硬件性能不够高(如NXP的imx6sl,处理器为1核,内存1G),就会导致编码时间过长,甚至一秒内只能编码出几帧,从而导致接收端接收到的图像出现卡顿的现象。为了解决上述问题,本实施例中提出一种WebRTC数据编码方法,以解决WebRTC数据编码效率低的技术问题。

本实施例中的WebRTC数据编码方法应用与WebRTC数据编码设备,该设备可以是诸如手机、平板电脑、掌上电脑、便捷式媒体播放器、可穿戴设备、智能手环等移动终端,还可以是诸如数字TV、PC终端等固定终端。本实施例中以安卓Android系统的手机要进行H264编码为例进行说明。

本实施例中,用户在使用手机与他人进行WebRTC视频通话时,将会触发对应的编码指令。此时,为了提高WebRTC数据的编码效率,手机将会采用软硬结合的方式进行编码。具体的,在WebRTC的多媒体框架中具有数据软编码使用的软编码模块;因此,为了实现软硬结合的编码方式,首先需要在手机中设置对应的硬编码模块。考虑到手机中一般具有用于进行视频数据处理的视频处理单元vpu(Video Processing Unit),因此本实施例中可设置处理视频单元vpu对应的硬编码模块,从而可以通过vpu进行WebRTC数据的硬编码,从而提高编码的效率。在设置完vpu的硬编码模块后,还将需要对该硬编码模块和原WebRTC框架中的软编码模块进行初始化,从而使得硬编码模块和软编码模块都可执行数据编码操作。

值得说明的是,考虑到传统的软硬结合编码,需要在不同的编码模块进行复杂的切换操作,而且每次切换都需要重新进行一遍模块初始化或视频图像分割等操作,这将降低编码的效率。基于上述考虑,本实施例中的硬编码模块可设置在WebRTC框架中,即在WebRTC框架中集成硬编码模块和软编码;同时,将硬编码模块和软编码模块设置为共用一个框架输入接口,此时对上层而言,由于硬编码模块和软编码模块是实现在同一框架输入接口,因此在进行软硬结合的编码时,不需要在软硬模块之间进行频繁的切换,而只需要在框架接口层直接切换编码通道,即可实现软硬编的切换,从而提高了编码的效率。

步骤S20,获取WebRTC待编码图像,并将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧;

本实施例中,在完成硬编码模块和软编码模块的初始化时,手机即可进行数据编码。首先,将要获取WebRTC待编码图像;然后,需要对待编码图像进行序列划分,分成若干段序列图像,然后再分别对每段序列图像进行编码;其中每段序列图像的内容差异都保持在一个预设差异范围内,例如,对于某一段序列图像的相邻几幅(几帧)图像画面中,有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化在1%以内。如此,对于一段序列图像,由于其中的图像画面差别不大,就可以先编码出一个完整的图像帧,而随后的图像帧则不编码全部图像,只写入与完整图像帧的区别即可;而当某帧图像与之前的图像变化很大时,即可将该变化大的图像作为下一序列的图像。其中,对于每一段序列图像中完整编码的帧可称为序列图像的I图像帧,参考之前的I图像帧生成的、仅包括差异部分编码的帧可称为P帧,每个序列图像的第一帧则称为IDR帧(立即刷新图像)。本实施例为了编码方便,可将每个序列图像都是IDR帧作为该序列图像的I图像帧。手机在对WebRTC待编码图像的序列划分时,还将对获取各序列图像对应的IDR图像帧,以进行后续编码处理。

进一步的,本实施例中,对于WebRTC待编码图像,可以是通过手机摄像头获取的。具体的,用户在通过手机进行WebRTC视频通话时,手机将自动启动摄像头(可以是前置摄像头也可以是后置摄像头),并通过该摄像头获取原始图像;而由于在获取原始图像时,可通过V4L2标准驱动摄像头,获取YUYV格式的原始图像。此时,由于进行WebRTC数据编码时,H264的输入是需要为I420,因此对于摄像头获取到原始图像,手机还需要对其进行数据格式转换的预处理,将其转换成I420格式(这里需要将422转换为真420模式),从而得到WebRTC待编码图像。

步骤S30,通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码;

本实施例中,手机在获取到WebRTC待编码图像的各段序列图像和对应的IDR帧时,由于本实施例中是采用软硬结合的方式进行编码,因此要将各IDR帧和序列图像分别发送给初始化完成的硬编码模块和软编码模块,并将各段序列图像分别分配给硬编码模块和软编码模块。此时,由于本实施例中的硬编码模块和软编码模块是共用一个框架输入接口,因而可直接通过该框架输入接口将IDR帧和序列图像发送至WebRTC框架中,然后再在框架接口层进行编码通道的选择和切换,从而将IDR帧和序列图像发送至硬编码模块和软编码模块,从而实现软硬编码同时进行的效果。硬编码模块和软编模块在对各序列图像进行编码时,可将每段序列图像的IDR帧(I帧)完整编码,随后该序列图像的其它P帧则可仅写入与IDR帧的差异部分编码。

步骤S40,获取所述硬编码模块和软编码模块输出的数据流,并对所述数据流进行封装打包。

本实施例中,硬编码模块和软编码模块完成对各段序列图像的编码时,将会得到对应的各段序列数据流;对于这些序列数据流,需要将其进行一定的封装打包,才可以用来进行存储或传输。本实施例可将获取的数据流直接按照多NALU进行封装打包,得到打包数据流,从而完成WebRTC数据编码的过程。

进一步的,由于本实施例中用户是在进行WebRTC视频通话,其是依循实时通信协议RTP,因此在进行对数据流进行封装打包时,可对每个打包数据流添加RTP头信息、时间戳等信息,从而得到符合RTP的打包数据流(数据包);然后将这些打包数据流发送到手机的RTP模块进行发送,从而实现WebRTC视频通话。

本实施例中,通过在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化,其中,所述硬编码模块和软编码模块共用所述WebRTC框架的一个输入接口;获取WebRTC待编码图像,并将所述WebRTC待编码图像进行序列划分,获取各序列图像和所述各序列图像对应的立即刷新图像IDR帧;通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,以使所述硬编码模块和软编码模块根据所述IDR帧对所述各序列图像进行编码;获取所述硬编码模块和软编码模块输出的数据流,并对所述数据流进行封装打包。通过以上方式,本实施例将VPU硬件编码技术集成到WebRTC框架,使得WebRTC框架具有软编码和编解码的功能,在进行WebRTC数据编码时,可采用软硬结合的方式进行编码,从而减小了处理器CPU的占用率和处理压力,提高了数据编码的效率;同时,硬编码模块和软编码模块是集成在同一个框架并共用一个框架输入接口,从而在采用软硬结合的方式进行编码时,可在框架接口层直接切换编码通道,无需执行模块切换流程,加快了软硬结合编码的切换速度,进一步提高了编码效率,从而保证了WebRTC数据传输速率,提高用户的使用体验。

参照图3,图3为图2所述在WebRTC框架中设置视频处理单元vpu对应的硬编码模块,并对所述硬编码模块和WebRTC框架中的软编码模块进行初始化的细化流程示意图。

基于上述图2所示实施例,本实施例中,步骤S10包括:

步骤S11,在所述WebRTC框架中封装所述vpu的硬编码类,并注册所述vpu的硬编码通道接口;

本实施例中,为了提高WebRTC数据的编码效率,手机将会采用软硬结合的方式进行编码。具体的,在WebRTC的多媒体框架中具有数据软编码使用的软编码模块;因此,为了实现软硬结合的编码方式,首先需要在手机中设置对应的硬编码模块。考虑到手机中一般具有用于进行视频数据处理的视频处理单元vpu(Video Processing Unit),因此本实施例中可设置处理视频单元vpu对应的硬编码模块。具体的,可在WebRTC多媒体框架中封装vpu对应的硬编码类,创建VideoEncoder和VideoDecoder的支持H264的子类;同时,还要在系统中增加注册vpu对应的硬编码通道接口(第三方编解码器接口、vpu硬件初始化接口、H264编解码接口),从而使得可以调用手机中的vpu进行编码处理。

步骤S12,初始化所述vpu和硬编码通道接口,将所述硬编码通道接口与所述WebRTC框架的一个输入接口进行关联,并配置所述vpu的硬编参数;

本实施例中,在vpu硬编码模块创建完成时,需要对vpu和硬编码通道接口进行初始化,该初始化的过程可以是调用nxp平台提供的libvpu.so库进行;在对vpu和硬编码通道接口初始化完成时,还需要将vpu的硬编码通道接口与WebRTC框架的编码输入接口进行关联,从而使得从该框架输入接口输入的待编码数据能通过硬编码通道接口传输至vpu中进行硬编码。此外,还需要为vpu配置编码相关的硬编参数,如编码的分辨率、帧率等。

步骤S13,初始化所述软编码模块对应的软编码通道接口,将所述软编码通道接口与所述输入接口进行关联,并配置所述软编码模块的软编参数。

本实施例中,在对vpu初始化和硬编参数的配置完成时,还将对WebRTC框架中的软编码模块及对应的软编码通道接口进行初始化;在对软编码通道接口初始化完成时,同样需要将该软编码通道接口与WebRTC框架输入接口进行关联。值得说明的是,硬编码通道接口与软编码通道接口是与同一个框架输入接口关联,从而实现硬编码模块和软编码模块共用一个框架输入接口。当然,还需要为软编码模块配置对应的软编参数(分辨率、帧率等)。

参照图4,图4为本发明WebRTC数据编码方法第二实施例的流程示意图。

基于上述图2所示实施例,本实施例中,步骤S30包括:

步骤S31,通过所述输入接口将所述IDR帧和各序列图像发送至所述WebRTC框架,并根据硬编码优先规则将所述各序列图像分别分配至所述硬编码模块和软编码模块,以使所述硬编码模块和软编码模块根据所述IDR帧对各自分配的序列图像进行编码。

本实施例中,手机在获取到WebRTC待编码图像的各段序列图像和对应的IDR帧时,会将各IDR图像分别发送给初始化完成的硬编码模块和软编码模块,以使得硬编码模块和软编码模块会根据各段序列图像的IDR帧对该段序列图像进行编码。为了提高编码的效率,本实施例中,在对各序列图像进行编码时,是根据硬编码优先的规则向硬编码模块和软编码模块分配序列图像。具体的,在步骤20进行接口初始化时,可以修改WebRTC框架的功能接口(当然也可以是修改硬编码接口和软编码接口),从而可根据该功能接口判断硬编码模块和软编码模块是否工作状态还是空闲状态;对于待编码图像,序列化后得到了4段序列图像,依图像的播放顺序分别记为a、b、c、d段;当开始编码时,由于当前硬编码模块和软编码模块均处于空闲状态,因此手机会将a序列图像通过硬编码接口优先分配至硬编码模块进行编码。当需要对b序列图像进行处理时,手机将会根据WebRTC的功能接口判断此时硬编码模块是否处于空闲状态,从而判断硬编码模块是否已完成a序列图像的编码;若硬编码模块处于空闲状态,则硬编码模块已完成a序列图像的编码,此时会将b序列图像分配至硬编码模块;若硬编码模块处于工作状态,则硬编码模块仍在进行a序列图像的编码,此时会将b序列图像分配至软编码模块进行编码。当需要对c序列图像进行处理时,手机将再次判断此时硬编码模块是否处于空闲状态,从而判断硬编码模块是否已完成a序列图像的编码;若硬编码模块处于空闲状态,则硬编码模块已完成a序列图像的编码,此时会将c序列图像分配至硬编码模块;若硬编码模块处于工作状态,则硬编码模块仍在进行a序列图像的编码,此时需要判断软编码模块是否处于空闲状态(是否完成了b序列图像的编码),若软编码模块处于空闲状态,则会将c序列图像分配至软编码模块,否则将暂时停止分配,直至硬编码模块和软编码模块中出现空闲的编码模块;而如果硬编码模块和软编码模块同时完成了原序列图像的编码,则会优先向硬编码模块分配序列图像进行编码。

通过以上方式,可将序列图像优先分配给硬编码模块进行编码处理,在软硬结合编码的同时,可进一步减小处理器CPU的占用率和处理压力,提高了数据编码的效率,保证了WebRTC数据传输速率,提高用户的使用体验。

当然,除了上述采用上述硬编码优先的任务分配方式,还可以采用其它的方式进行序列图像的分配,以满足不同使用场景的编码需求。

此外,本发明还提供一种计算机可读存储介质。

本发明计算机可读存储介质上存储有编码程序,所述编码程序被处理器执行时,实现如上述的WebRTC数据编码方法的步骤。

其中,编码程序被执行时所实现的方法可参照本发明WebRTC数据编码方法的各个实施例,此处不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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