一种编码方法、装置及终端设备与流程

文档序号:15685286发布日期:2018-10-16 20:59阅读:149来源:国知局

本发明属于信息技术领域,尤其涉及一种编码方法、装置及终端设备。



背景技术:

随着通信技术的发展,网络视频用户和手机视频用户稳步增长。在用户集中并发、移动信道不稳定的情况下,容易存在拥塞网络视频卡顿、频繁缓冲的问题,此时,用户可以通过调整视频的分辨率,即降低视频的清晰度来缓解网络压力。

但是,目前主流的解决方法忽略了人们对能够接受的视频信息丢失点,会随着不同视频因应用环境而不同,统一的采用了丢帧处理和编码模式,从而制约了应用效果。



技术实现要素:

有鉴于此,本发明实施例提供了一种编码方法、装置及终端设备,以解决现有技术中网络视频的编码方式不能根据应用环境灵活改变的问题。

本发明实施例的第一方面提供了一种编码方法,包括:

检测当前编码的视频是否存在未编码的帧;

若所述视频存在未编码的帧,则检测当前网络是否处于拥塞状态;

所述网络处于拥塞状态时,获取编码选择指令,根据所述编码选择指令选择编码模式,对所述未编码的帧进行编码;

所述网络不处于拥塞状态时,获取常规编码指令,根据所述常规编码指令选择常规编码模式,对所述未编码的帧进行编码;

返回检测当前编码的视频是否存在未编码的帧。

本发明实施例的第二方面提供了一种编码装置,包括:

帧检测模块,用于检测当前编码的视频是否存在未编码的帧;

网络检测模块,用于若所述视频存在未编码的帧,则判断当前网络是否处于拥塞状态;

拥塞网络编码模块,用于在所述网络处于拥塞状态时,获取编码选择指令,根据所述编码选择指令选择编码模式,对所述未编码的帧进行编码;

常规网络编码模块,用于在所述网络不处于拥塞状态时,获取常规编码指令,对所述未编码的帧进行编码,并持续检测所述网络,判断所述网络是否变为拥塞状态;

持续检测模块,用于返回检测当前编码的视频是否存在未编码的帧。

本发明实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述方法的步骤。

本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。

本发明实施例与现有技术相比存在的有益效果是:本发明实施例中的编码方法,根据不同网络的环境,提供了不同的视频编码模式,包括网络不拥塞时的常规编码模式,和网络拥塞时根据编码选择指令进行选择的编码模式,从而在拥塞网络总体流量不足,视频信息过多时,也能够根据不同应用环境需求,灵活改变视频编码模式。

附图说明

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

图1是本发明实施例一提供的编码方法的实现流程示意图;

图2是本发明实施例二提供的编码方法的实现流程示意图;

图3是本发明实施例二提供的编码方法的实现流程示意图;

图4是本发明实施例三提供的编码装置的结构示意图;

图5是本发明实施例四提供的终端设备的示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

本发明的说明书和权利要求书及上述附图中的术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含一系列步骤或单元的过程、方法或系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同对象,而非用于描述特定顺序。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一

如图1所示,本发明实施例提供了一种编码方法,包括以下步骤:

s101、检测当前编码的视频是否存在未编码的帧。

上述步骤s101中,当前编码的视频为在线观看的网络视频,需要从服务器中下载并对视频中的每一帧的图像进行编码后显示;未编码的帧即是未进行编码的图像。

在具体应用中,若当前编码的视频存在未编码的帧,则说明视频的播放没有结束,或者未播放的视频部分还包括未下载和进行编码的部分;若视频不存在未编码的帧,则说明视频的播放已经结束,或者,未播放视频部分已经下载和编码,且保存在缓存区域。

s102、若所述视频存在未编码的帧,则检测当前网络是否处于拥塞状态。

在具体应用中,当前编码的视频存在未编码的帧时,即检测当前网络是否处于拥塞状态。即使当前视频能够流畅播放,但视频缓存的速度不一定能够与视频播放的速度持平,当网络处于拥塞状态时,视频缓存的速度将低于视频播放的速度,视频中的每一帧图像的下载和编码也无法支持当前视频的流畅播放,造成视频播放的卡顿和频繁缓冲。

在具体应用中,当前网络是否处于拥塞状态可以使用任意一种网络拥塞判断法进行检测,例如,利用网络延时进行拥塞判断、通过icmp包和tcp报文的传输情况判断网络的状态。

s103、所述网络处于拥塞状态时,获取编码选择指令,根据所述编码选择指令选择编码模式,对所述未编码的帧进行编码。

在上述步骤s103中,所述流畅度编码模式是以保证视频的流畅播放为主的编码模式,所述信息度编码模式是以保证每一帧信息的存在为主的编码模式。

s104、所述网络不处于拥塞状态时,获取常规编码指令,根据所述常规编码指令选择常规编码模式,对所述未编码的帧进行编码。

在上述步骤s104中,所述常规编码指令是以不丢失视频任一信息为主的编码模式,使用的网络总体流量较大。

s105、返回检测当前编码的视频是否存在未编码的帧。

在具体应用中,选择常规编码模式,对所述未编码的帧进行编码后,则持续检测当前编码的视频是否存在未编码的帧,且在视频存在未编码的帧时继续检测网络是否处于拥塞状态,从而判断是否需要改变编码模式。

在本实施例中,帧是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。一帧就是一副静止的画面,连续的帧就形成动画,如视频等。帧数是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。

在本实施例中,编码是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频压缩技术是计算机处理视频的前提。视频信号数字化后数据带宽很高,通常在20mb/秒以上,因此计算机很难对之进行保存和处理。采用压缩技术通常数据带宽降到1-10mb/秒,这样就可以将视频信号保存在计算机中并作相应的处理。

本实施例提供的编码方法,根据不同网络的环境,提供了不同的视频编码模式,包括网络不拥塞时的常规编码模式,和网络拥塞时根据编码选择指令进行选择的编码模式,从而在拥塞网络总体流量不足,视频信息过多时,也能够根据不同应用环境需求,灵活改变视频编码模式。

实施例二

上述实施例一的步骤s103中,所述编码选择指令包括流畅度编码指令和信息度编码指令;所述流畅度编码指令对应流畅度编码模式,所述编码选择指令为所述流畅度编码指令时,在所述流畅度编码模式下对所述未编码的帧进行编码;所述信息度编码指令对应信息度编码模式,所述编码选择指令为所述信息度编码指令时,在所述信息度编码模式下对所述未编码的帧进行编码。

如图2所示,本实施例提供了在所述流畅度编码模式下对所述未编码的帧进行编码的步骤,包括:

s201、计算当前编码的第一运动强度;

s202、根据所述第一运动强度计算所述当前编码的第一损失率;

s203、根据所述第一损失率选择周期编码帧数,并进行编码。

在上述步骤s203中,根据所述第一损失率选择周期编码帧数的公式为:

bmfps=leve_1×fps;

其中,bmfps表示周期编码帧数,leve_1表示第一损失率,fps表示视频帧率。

在具体应用中,上述根据所述第一损失率选择周期编码帧数的公式表示:对拥塞网络自适应编码的第一帧开始的fps个视频帧,选取其中leve_1×fps个帧进行编码,其余的直接舍弃,不作编码。且,bmfps表示的周期编码帧数是一个判断周期内的周期编码帧数。

如图3所示,本实施例还提供了在所述信息度编码模式下对所述未编码的帧进行编码的步骤,包括:

s301、计算当前编码的第二运动强度;

s302、根据所述第二运动强度计算所述当前编码的第二损失率;

s303、根据所述第二损失率调整编码的图像分辨率,并进行编码。

在上述步骤s303中,根据所述第二损失率调整编码的图像分辨率为:

(leve_2×w)×(leve_2×h);

其中,leve_2表示第二损失率,w表示图像的原始宽度,h表示图像的原始高度。

在具体应用中,上述根据所述第二损失率调整编码的图像分辨率表示:对视频每一帧图像,均下采样为:宽度leve_1×width、高度leve_1×height的图像;然后对其进行编码;其中,下采样的方法可以用业内公开的任何一种方法。

上述步骤s201和s301中,所述第一运动强度或第二运动强度的计算公式为:

其中,ti_framest表示第一运动强度或第二运动强度,ti_blockst,n表示当前编码帧的每一个块的块统计变量,thres1表示第一判定阈值,sum(变量)表示对满足条件的所有变量求和;m表示一帧图像包含的块总数。

在具体应用中,

ti_blockst,n=std(yst(i,j)-yst+1(i,j)|yst(i,j)∈blockst,nandyst+1(i,j)∈blockst+1,n);

其中,yst(i,j)为framest第i行第j列的亮度像素值,yst+1(i,j)为framest+1第i行第j列的亮度像素值;framest表示拥塞网络自适应编码的第一帧,简称为当前拥塞编码帧,st表示该帧在当前编码片源的播放序号,framest+1简称为当前拥塞编码帧的下一帧;std(变量)表示对变量求均方差;blockst,n表示的framest第n个块,blockst+1,n表示framest+1的第n个块,要求两个分块大小需一致;ti_blockst,n表示blockst,n的块统计变量。

在一个实施例中,thres1表示第一判定阈值,一般可取fps表示编码片源的帧率。

上述步骤s202和s302中,所述第一损失率或第二损失率的计算包括:

note=0时,

note≠0时,下调损失率;

其中,note表示重修信号参数,leve表示第一损失率或第二损失率,ti_framest表示第一运动强度或第二运动强度,thres1表示第一判定阈值,thres2表示第二判定阈值,thres3表示第三判定阈值,con1、con2、con3表示损失率调节参数。

在一个实施例中,可取thres2≤m×0.3、thres3≥m×0.6;0<con3<con2<con3<1;note初始值为0。

其中,重修信号参数note用于自动校正损失率,重修信号参数初始值为0时,如果在编码时,检测到网络不处于拥塞状态,则保持初始值不变;若检测到网络处于拥塞状态,则调整数值使其不为0。

在本实施例中,编码的运动强度反映帧间图像运动的剧烈程度,依据当前帧的运动强度信息可以预测下一帧运动情况。

在本实施例中,编码的损失率反映视频压缩的比例,损失率越高,则视频压缩的比例越高。

本实施例提供的编码方法,根据不同网络的环境,提供了不同的视频编码模式,包括网络不拥塞时的常规编码模式,和网络拥塞时根据编码选择指令进行选择的编码模式,从而在拥塞网络总体流量不足,视频信息过多时,也能够根据不同应用环境需求,灵活改变视频编码模式;同时设置损失率参数自动校正方法,使得算法能及时校正参数设置准确性,提升算法的效果。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

实施例三

如图4所示,本实施例还提供了一种编码装置40,包帧检测模块41、网络检测模块42、拥塞网络编码模块43、常规网络编码模块44和持续检测模块45。

帧检测模块41,用于检测当前编码的视频是否存在未编码的帧;

网络检测模块42,用于若所述视频存在未编码的帧,则判断当前网络是否处于拥塞状态;

拥塞网络编码模块43,用于在所述网络处于拥塞状态时,获取编码选择指令,根据所述编码选择指令选择编码模式,对所述未编码的帧进行编码;

常规网络编码模块44,用于在所述网络不处于拥塞状态时,获取常规编码指令,对所述未编码的帧进行编码;

持续检测模块25,用于返回检测当前编码的视频是否存在未编码的帧。

在一个实施例中,拥塞网络编码模块可以包括流畅度编码单元和信息度编码单元;

所述流畅度编码单元,用于所述流畅度编码指令对应流畅度编码模式,所述编码选择指令为所述流畅度编码指令时,在所述流畅度编码模式下对所述未编码的帧进行编码;

所述信息度编码单元,用于所述信息度编码指令对应信息度编码模式,所述编码选择指令为所述信息度编码指令时,在所述信息度编码模式下对所述未编码的帧进行编码。

实施例四

图5是本发明一实施例提供的终端设备的示意图。如图5所示,该实施例的终端设备5包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机程序52,例如javascript程序。所述处理器50执行所述计算机程序52时实现上述各个编码方法实施例中的步骤,例如图1所示的步骤s101至s104。或者,所述处理器50执行所述计算机程序52时实现上述各装置实施例中各模块/单元的功能,例如图5所示模块51至54的功能。

示例性的,所述计算机程序52可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序52在所述终端设备5中的执行过程。例如,所述计算机程序52可以被分割成帧检测模块、网络检测模块、拥塞网络编码模块、常规网络编码模块、持续检测模块,各模块具体功能如下:

帧检测模块,用于检测当前编码的视频是否存在未编码的帧;

网络检测模块,用于若所述视频存在未编码的帧,则判断当前网络是否处于拥塞状态;

拥塞网络编码模块,用于在所述网络处于拥塞状态时,获取编码选择指令,根据所述编码选择指令选择编码模式,对所述未编码的帧进行编码;

常规网络编码模块,用于在所述网络不处于拥塞状态时,获取常规编码指令,对所述未编码的帧进行编码,并持续检测所述网络,判断所述网络是否变为拥塞状态;

持续检测模块,用于返回检测当前编码的视频是否存在未编码的帧。

所述终端设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是终端设备5的示例,并不构成对终端设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。

所称处理器50可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器51可以是所述终端设备5的内部存储单元,例如终端设备5的硬盘或内存。所述存储器51也可以是所述终端设备5的外部存储设备,例如所述终端设备5上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器51还可以既包括所述终端设备5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

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