信息发送方法及装置与流程

文档序号:20349348发布日期:2020-04-10 22:52阅读:245来源:国知局
信息发送方法及装置与流程

本申请实施例涉及通信技术,尤其涉及一种信息发送方法及装置。



背景技术:

视频通话中发生数据包丢失时,图像会呈现马赛克或者卡顿的现象,直到接收到下一个关键帧,根据接收到的关键帧刷新图像以解决上述现象。

因此,接收设备向发送设备发送关键帧请求就显得尤为重要,目前,现有技术在发送关键帧请求时,通常是在接收设备确定当前接收到的数据包中的帧不完整时,就会按照预设周期向发送设备发送请求信息,以使得发送设备发送关键帧。

然而,关键帧通常比普通帧大,因此频繁的向发送设备请求关键帧,会导致发送设备的瞬时码率上升,此时会导致更多的数据包丢失。



技术实现要素:

本申请实施例提供一种信息发送方法及装置,以克服频繁的请求关键帧导致的更多的数据包丢失的问题。

第一方面,本申请实施例提供一种信息发送方法,包括:

第一终端设备接收第一数据包,并获取所述第一数据包的帧类型和破损率,其中,所述第一数据包对应第一图像帧,所述破损率用于指示所述第一图像帧的不完整程度;

根据所述帧类型和破损率,确定标记信息的类型,所述标记信息的类型为第一类型或第二类型,所述第一类型用于指示向所述第二终端设备请求关键帧,所述第二类型用于指示不向所述第二终端设备请求关键帧;

在第一预设周期到达时,若所述标记信息的类型为所述第一类型,则向所述第二终端设备发送请求信息,所述请求信息用于请求所述关键帧。

在一种可能的设计中,所述根据所述帧类型和破损率,确定标记信息的类型包括:

若所述帧类型为非关键帧类型,则判断所述破损率是否大于第一预设阈值;

若是,则得到第一标记信息,其中,所述第一标记信息的类型为第一类型;

若否,则得到第二标记信息,其中,所述第二标记信息的类型为第二类型。

在一种可能的设计中,所述根据所述帧类型和破损率,得到第一标记信息,包括:

若所述帧类型为关键帧类型,则判断所述破损率是否大于第二预设阈值;

若是,则得到第三标记信息,其中,所述第三标记信息的类型为第一类型;

若否,则得到第四标记信息,其中,所述第四标记信息的类型为第二类型。

在一种可能的设计中,若所述标记信息的类型为第二类型,则所述方法还包括:

根据所述第一终端设备的解码器对第一图像帧进行误码隐藏处理,并对所述误码隐藏处理后的第一图像帧进行显示。

在一种可能的设计中,所述获取所述第一数据包的帧类型和破损率之前,所述方法还包括:

判断第一终端设备接收到的第一数据包是否发生丢失。

在一种可能的设计中,若所述第一终端设备接收到的第一数据包发生丢失,则所述方法还包括:

所述第一终端设备向所述第二终端设备发送实时传输控制协议rtcp否认应答nack,以使得所述第二终端设备根据所述rtcpnack调整发送码率。

在一种可能的设计中,所述向所述第二终端设备发送请求信息之后,所述方法还包括:

接收所述第二终端设备发送的所述关键帧;

根据所述关键帧刷新当前第一终端设备所显示的图像。

在一种可能的设计中,所述第二预设阈值小于第一预设阈值。

第二方面,本申请实施例提供一种信息发送装置,包括:

接收模块,用于第一终端设备接收第一数据包,并获取所述第一数据包的帧类型和破损率,其中,所述第一数据包对应第一图像帧,所述破损率用于指示所述第一图像帧的不完整程度;

确定模块,用于根据所述帧类型和破损率,确定标记信息的类型,所述标记信息的类型为第一类型或第二类型,所述第一类型用于指示向所述第二终端设备请求关键帧,所述第二类型用于指示不向所述第二终端设备请求关键帧;

发送模块,用于在第一预设周期到达时,若所述标记信息的类型为所述第一类型,则向所述第二终端设备发送请求信息,所述请求信息用于请求所述关键帧。

在一种可能的设计中,所述确定模块具体用于:

若所述帧类型为非关键帧类型,则判断所述破损率是否大于第一预设阈值;

若是,则得到第一标记信息,其中,所述第一标记信息的类型为第一类型;

若否,则得到第二标记信息,其中,所述第二标记信息的类型为第二类型。

在一种可能的设计中,所述确定模块具体用于:

若所述帧类型为关键帧类型,则判断所述破损率是否大于第二预设阈值;

若是,则得到第三标记信息,其中,所述第三标记信息的类型为第一类型;

若否,则得到第四标记信息,其中,所述第四标记信息的类型为第二类型。

在一种可能的设计中,若所述标记信息的类型为第二类型,则所述装置还包括:显示模块;

所述显示模块,用于根据所述第一终端设备的解码器对第一图像帧进行误码隐藏处理,并对所述误码隐藏处理后的第一图像帧进行显示。

在一种可能的设计中,所述接收模块还用于:

在所述获取所述第一数据包的帧类型和破损率之前,判断第一终端设备接收到的第一数据包是否发生丢失。

在一种可能的设计中,若所述第一终端设备接收到的第一数据包发生丢失,则所述发送模块还用于:

所述第一终端设备向所述第二终端设备发送实时传输控制协议rtcp否认应答nack,以使得所述第二终端设备根据所述rtcpnack调整发送码率。

在一种可能的设计中,所述接收模块还用于:

在向所述第二终端设备发送请求信息之后,接收所述第二终端设备发送的所述关键帧;

根据所述关键帧刷新当前第一终端设备所显示的图像。

在一种可能的设计中,所述第二预设阈值小于第一预设阈值。

第三方面,本申请实施例提供一种信息发送设备,包括:

存储器,用于存储程序;

处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如上第一方面以及第一方面各种可能的设计中任一所述的方法。

第四方面,本申请实施例提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如上第一方面以及第一方面各种可能的设计中任一所述的方法。

本申请实施例提供一种信息发送方法及装置,该方法包括:第一终端设备接收第一数据包,并获取第一数据包的帧类型和破损率,其中,第一数据包对应第一图像帧,破损率用于指示第一图像帧的不完整程度。根据帧类型和破损率,确定标记信息的类型,标记信息的类型为第一类型或第二类型,第一类型用于指示向第二终端设备请求关键帧,第二类型用于指示不向第二终端设备请求关键帧。在第一预设周期到达时,若标记信息的类型为第一类型,则向第二终端设备发送请求信息,请求信息用于请求关键帧。通过根据帧类型和破损率确定标记信息的类型,从而能够在第一预设周期到达时,在第一图像帧的破损率不影响其显示效果的情况下,避免向第二终端设备发送请求信息,从而有效避免了频繁向第二终端设备发送请求信息,所导致的更多数据包丢失的情况,以有效提升了视频通话的质量。

附图说明

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

图1为本申请实施例提供的信息发送方法的流程图一;

图2为本申请实施例提供的信息发送方法的流程图二;

图3为本申请实施例提供的信息发送方法的流程示意图一;

图4为本申请实施例提供的图像帧示意图一;

图5为本申请实施例提供的图像帧示意图二;

图6为本申请实施例提供的信息发送方法的流程示意图二;

图7为本申请实施例提供的信息发送装置的结构示意图一;

图8为本申请实施例提供的信息发送装置的结构示意图二;

图9为本申请实施例提供的信息发送设备的硬件结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在介绍本申请实施例提供的信息发送方法之前,首先对本申请所涉及的背景技术进行进一步地详细介绍:

具体的,可以使用终端设备进行视频通话,其中参与视频通话的终端设备可以有多个,在视频通话过程中,终端设备以数据包的形式将图像帧发送给对端的终端设备,对端的终端设备接收到数据包之后,对数据包进行解析,得到图像帧,并对图像帧进行显示,以保证视频通话的顺利进行。

在上述过程中可以理解的是,参与视频通话的任一个终端设备,既可以是发送数据包的终端设备,同时还可以是接收数据包的终端设备,其中,终端设备可以包括但不限于:计算机设备、平板电脑或移动电话(或称为“蜂窝”电话),还可以是便携式、袖珍式、手持式、计算机内置的移动装置或设备,此处对终端设备的实现方式不做特别限制,只要终端设备可以进行视频通话即可。

在进行视频通话的过程中,若发生数据包丢失(丢包),则终端设备中所显示的图像就会呈现马赛克或者卡顿的状态,一直到接收到下一个关键帧,终端设备根据接收到的关键帧刷新终端设备显示的图像,以解决上述的马赛克或者卡顿的状态。

目前,视频通话的技术包括长期演进视频承载(videooverlong-termevolution,vilte),以及无线保真视频承载(videooverwirelessfidelity,viwifi),其中,vilte是通过lte网络作为业务接入、网际协议多媒体系统(internetprotocolmultimediasubsystem,ims)网络实现业务控制的音视频解决方案,它支持高清语音、高清视频等通信业务,也可实现与现网2g/3g的语音兼容互通,以及,viwifi给用户提供了wifi接入方式,核心网上一般与volte共用一套ims系统。

vilte和viwifi都有一定的网络带宽,对视频通话的质量要求较高,既要清晰又要流畅。

目前,vilte和viwifi在进行视频编码时,采用的是h264编码格式,在h264编码格式中,定义了三种图像帧,分别是:i帧和p帧,其中,完整编码的帧叫i帧,参考之前的i帧生成的只包含差异部分编码的帧叫p帧。

以及,h264编码格式采用的核心算法是帧内压缩和帧间压缩,其中,帧内压缩是生成i帧的算法,帧间压缩是生成p帧的算法。

基于上述介绍,h264编码格式的压缩处理方法具体包括如下步骤:

1、分组:把几帧图像帧分为一组,为防止运动变化,帧数不宜取多;

2、定义帧:将每组内各帧图像定义为三种类型,即i帧和p帧;

3、预测帧:以i帧做为基础帧,以i帧预测p帧;

4、数据传输:最后将i帧数据与预测的差值信息进行存储和传输。

此处对上述的步骤2定义帧进行说明,在本实施例中,例如可以按照固定的预设周期确定i帧,例如每隔3秒定义一个i帧,其中定义i帧的操作可以是对当前帧添加一个标签、字段等,只要能够指示当前帧是一个i帧即可。

或者,还可以按照不固定的动态周期确定i帧,例如可以根据实时的网络质量确定i帧,i帧的特点是完整编码的帧,因此,在网络质量较好时,图像帧可以进行顺利传输,此时即使很长时间没有一个i帧也没有关系;在网路质量较差时,因为可能会发生丢包等现象,因此需要产生i帧以实现图像的刷新,因此此时的i帧数量就相对比较多,其具体可以根据实际需求进行选择。

综上所述,也就是说i帧是终端设备自行定义的,其相比于其余的图像帧来说,并没有什么特别之处,终端设备想要将哪个图像帧定义为i帧,直接进行指示即可。

通过上述h264编码格式的压缩处理,可以有效减少传输的数据包的大小,同时,参照上述介绍可以确定的是,本实施例中所介绍的关键帧即为i帧,也就是完整编码的帧,而p帧为普通帧,其仅需要对差异部分进行编码即可,因此,关键帧会比普通帧大很多。

接着对h264编码格式进行进一步地介绍,在h264编码格式中,以宏块(macroblock,mb)为最小单位,其中,多个连续的mb组成一个切片(slice),每个slice编码输出一个网络抽象层单元(networkabstractlayerunit,nalu),其中,每个slice的编码过程是相互独立的。

通过将视频帧划分为多个slice,可以并发地对多个slice同时进行编码,从而加快编码速度。同时,将视频帧划分为多个slice之后,后续过程中,若某个slice内部出错,则错误可以被限制在该slice内部,而不扩散到slice外部,则在解码时,对应的花屏的面积就比较小,从而能够有效提升图像显示的质量。

目前,为了解决图像的马赛克和卡顿现象,是需要向发送数据包的终端设备发送关键帧请求的。

然而,现有技术在向发送数据包的终端设备发送关键帧请求时,通常是在丢包时向发送终端设备发送实时传输控制协议(real-timetransportcontrolprotocol,rtcp)否认应答(negativeacknowledgement,nack)请求,以建立nacklist(重传列表),其中,当接收到的数据包总是比已解的数据包老,并且次数大于第一预设次数,和/或,nacklist过大,也就是说丢失的数据包过多,和/或,丢失的包太老时,会向发送终端设备请求关键帧,其中,数据包是否太老可以根据数据包的时间戳来确定。

然而,这种方式下,考虑到重传的时延,采用rtcpnack反馈丢包情况,实际上接收到rtcpnack的终端设备是不会重新发送丢失的数据包的,因此这种方案难以生效。

或者,在接收数据包的终端设备,在将图像帧送入解码器之前,判断图像帧是否完整,在确定当前接收到的数据包中的帧不完整时,就标记需要发送关键帧请求,并按照预设周期向发送设备发送关键帧请求,以使得发送设备发送关键帧。

然而,在视频通话中发生丢包后,如果频繁请求关键帧,则发送数据包的终端设备也会频繁的发送关键帧,因为关键帧是比普通帧大的,因此会导致帧率下降,同时瞬时码率升高,此时会造成更为严重的网络拥堵,反而会造成更多的数据包丢失。

基于上述问题,本申请提出了如下技术构思:如果图像帧仅仅是丢失了一少部分,比如说仅仅是丢失了一小部分的slice,不影响图像帧的显示的话,则可以按照当前接收到的数据包进行图像帧的显示,因此在进行关键帧请求之前,首先检查图像帧的完整程度,若图像帧的完整程度不影响图像的显示时,则不进行关键帧的请求,从而能够有效减少关键帧请求的次数,以减少数据包丢失的情况发生。

下面结合图1对上述技术构思的实现方式进行详细介绍,图1为本申请实施例提供的信息发送方法的流程图一。

如图1所示,该方法包括:

s101、第一终端设备接收第一数据包,并获取第一数据包的帧类型和破损率,其中,第一数据包对应第一图像帧,破损率用于指示第一图像帧的不完整程度。

在本实施例中,第一终端设备即为接收数据包的终端设备,可以理解的是,其可以为视频通话中的任一个终端设备,此处对此不做限定。

第一终端设备接收第二终端设备发送的第一数据包,其中,第二终端设备即为发送数据包的终端设备,同样的,第二终端设备可以为视频通话中的任一个终端设备。

其中,第一数据包中对应第一图像帧,在一种可能的实现方式中,当第一图像帧的大小较小时,可以是一个将第一图像帧打包为一个第一数据包;或者,在第一图像帧的大小较大时,还可以是一个第一图像帧打包为多个第一数据包,也就是说,在一个第一数据包中仅包括部分第一图像帧;其中,第一数据包例如可以为实时传输协议(real-timetransportprotocol,rtp)包。

在本实施例中,第一数据包对应有破损率,其中,破损率用于指示第一图像帧的不完整程度,可以理解的是,在第一数据包和第一图像帧是一对一的关系时,第一图像帧的不完整程度即为当前接收到的第一图像帧的不完整程度;在第一数据包和第一图像帧是多对一的关系时,第一图像帧的不完整程度即为当前接收到的部分第一图像帧的不完整程度。

在一种可能的实现方式中,例如可以根据第一图像帧的大小得到第一图像帧的破损率;或者,可以根据第一图像帧的像素点个数得到第一图像帧的破损率等,本实施例对破损率的具体实现方式不做限定,只要破损率能够指示第一图像帧的不完整程度即可。

s102、根据帧类型和破损率,确定标记信息的类型,标记信息的类型为第一类型或第二类型,第一类型用于指示向第二终端设备请求关键帧,第二类型用于指示不向第二终端设备请求关键帧。

在本实施例中,可以根据当前接收到的第一数据包的帧类型和破损率,确定标记信息,其中,标记信息可以指示是否需要向第二终端设备请求关键帧。

在一种可能的情况下,在破损率较小时,就可以确定第一图像帧的不完整程度较低,此时即使对接收到的存在一定破损率的第一图像帧进行显示,也不会影响视频通话的质量,则此时就不需要向第二终端设备请求关键帧,从而能够有效避免频繁请求关键帧,所导致的网络拥堵的问题。

在另一种可能的情况下,在破损率较大时,就可以确定第一图像帧的不完整程度较高,此时直接显示的话,会影响视频通话的质量,因此此时需要向第二终端设备请求关键帧,通过在破损率较大时,请求关键帧,能够有效保证视频通话的质量。

因此,在本实施例中,可以根据帧类型和破损率,确定标记信息的类型,其中,当标记信息的类型为第一类型时,第一类型指示向第二终端设备请求关键帧;当标记信息的类型为第二类型时,第二类型用于指示不向第二终端设备请求关键帧。

s103、在第一预设周期到达时,若标记信息的类型为第一类型,则向第二终端设备发送请求信息,请求信息用于请求关键帧。

在本实施例中,设置有第一预设周期,其中第一预设周期是检测是否需要向第二终端设备请求关键帧的周期,其具体时长可以根据实际需求进行选择和调整,此处对此不做限制。

可以理解的是,上述仅仅是确定了标记信息的类型,即使标记信息的类型为第一类型,也不会立刻向第二终端设备请求关键帧,而是在第一预设周期到达时,检测标记信息的类型是否为第一类型。

若标记信息的类型为第一类型,则向第二终端设备发送用于请求关键帧的请求信息;若标记信息的类型为第二类型,则无需向第二终端设备请求关键帧。

通过设置第一预设周期,以在第一预设周期到达的时候,根据实际需求向第二终端设备发送请求信息,从而能够进一步的的避免频繁的发送请求信息的现象。

本申请实施例提供的信息发送方法,包括:第一终端设备接收第一数据包,并获取第一数据包的帧类型和破损率,其中,第一数据包对应第一图像帧,破损率用于指示第一图像帧的不完整程度。根据帧类型和破损率,确定标记信息的类型,标记信息的类型为第一类型或第二类型,第一类型用于指示向第二终端设备请求关键帧,第二类型用于指示不向第二终端设备请求关键帧。在第一预设周期到达时,若标记信息的类型为第一类型,则向第二终端设备发送请求信息,请求信息用于请求关键帧。通过根据帧类型和破损率确定标记信息的类型,从而能够在第一预设周期到达时,在第一图像帧的破损率不影响其显示效果的情况下,避免向第二终端设备发送请求信息,从而有效避免了频繁向第二终端设备发送请求信息,所导致的更多数据包丢失的情况,以有效提升了视频通话的质量。

在上述实施例的基础上,本实施例针对不同的帧类型设置有不同的破损率的评价指标,以及在实施例在获取帧类型和破损率之前还可以判断是否发生丢包,以便进行下一步操作,下面结合图2对本申请实施例所提供的信息发送方法进行进一步的详细介绍,图2为本申请实施例提供的信息发送方法的流程图二,如图2所示,该方法包括:

s201、判断第一终端设备接收到的第一数据包是否发生丢失,若是,则执行s202,若否,则执行s203。

在一种可能的实现方式中,第一终端设备可以通过判断预设时长内的seq(sequence)是否连续,以判断第一终端设备接收到的第一数据包是否发生丢失,其中,seq用于表示rtp包的序号。

具体的,当确定rtp包的seq连续时,可以确定第一数据包没有发生丢失;当确定rtp包的seq不连续时,可以确定第一数据包发生丢失。

或者,可以通过判断第一数据包的大小是否为预设大小,以判断第一数据包是否发生丢失,本实施例对判断第一数据包是否发生丢失的实现方式不做限定。

s202、第一终端设备向第二终端设备发送rtcpnack,以使得第二终端设备根据rtcpnack调整发送码率。

在一种可能的情况下,若确定第一终端设备接收到的数据包发生丢失,或者说确定预设时长内的seq不连续,则此时第一终端设备需要向第二终端设备反馈数据包丢失的情况,具体的,第一终端设备向第二终端设备发送rtcpnack,第二终端设备可以根据接收到的rtcpnack的相关参数调整发送码率,通过调整码率,可以有效减少后续出现更多的数据包丢失的现象。

可以理解的是,本申请中的第二终端设备在调整发送码率之后,会按照调整后的发送码率向第一终端设备发送数据包,其中,数据包对应有图像帧,因此,即使发生丢包现象,数据包的传输还是会正常进行,从而能够有效保证视频通话的进行。

s203、第一终端设备接收第一数据包,并获取第一数据包的帧类型和破损率,其中,第一数据包对应第一图像帧,破损率用于指示第一图像帧的不完整程度。

在另一种可能的情况下,若确定第一终端设备接收到的数据包发生丢失,或者说确定预设时长内的seq连续,则此时第一终端设备获取接收的第一数据包的的帧类型和破损率,其中,第一数据包的破损率例如可以按照其丢失的slice的比例进行确定。

具体的,s203的实现方式与s101的实现方式类似,此处不再赘述。

s204、判断帧类型是否为非关键帧类型,若是,则执行s205,若否,则执行s208。

在本实施例中,图像帧的帧类型包括关键帧和非关键帧,其中,关键帧即为上述介绍的i帧,非关键帧即为上述介绍的p帧,也可以将非关键帧理解为普通帧。

本实施例中针对非关键帧类型和关键帧类型,其分别对应各自的处理方式,因此本实施例中首先判断帧类型是否为非关键帧类型。

在另一种可能的实现方式中,还可以判断帧类型是否为关键帧类型,可以理解的是,只要是对关键帧类型和非关键帧类型进行区分即可,具体执行哪一种判断可以根据实际需求进行选择,本实施例对此不做限制。

s205、判断破损率是否大于第一预设阈值,若是,则执行s206,若否,则执行s207。

在一种可能的情况下,若非关键帧类型,则判断破损率是否大于第一预设阈值,其中,第一预设阈值的具体设置可以是根据实际需求得到的经验值,本实施例对此不做限定,其例如可以为30%。

s206、得到第一标记信息,其中,第一标记信息的类型为第一类型。

s207、得到第二标记信息,其中,第二标记信息的类型为第二类型。

若破损率大于第一预设阈值,则可以确定破损率是比较高的,在这种情况下,第一图像帧的显示效果是比较差的,则此时需要向第二终端设备请求关键帧,具体的,得到第一标记信息,其中,第一标记信息的类型为第一类型。

若破损率不大于第一预设阈值,则可以确定破损率是比较低的,在这种情况下,即使存在一定的缺失,但是不影响第一图像帧的显示,因此此时不需要向第二终端设备请求关键帧,具体的,得到第一标记信息,其中,第一标记信息的类型为第二类型。

s208、判断破损率是否大于第二预设阈值,若是,则执行s209,若否,则执行s210。

s209、得到第三标记信息,其中,第三标记信息的类型为第一类型。

s210、得到第四标记信息,其中,第四标记信息的类型为第二类型。

其中,s208-s210的实现方式与s205-s207的实现方式类似,不同之处在于,s208-s210中是判断破损率是否大于第二预设阈值,其余的实现方式此处不再赘述。

在本实施例中,可以设置有第二预设阈值小于第一预设阈值,其中,第一预设阈值为非关键帧对应的预设阈值,第二预设阈值是关键帧对应的预设阈值,可以理解的是,关键帧是用来刷新当前界面的,因此对关键帧的完整程度的要求会更高一些,所以设置第二预设阈值小于第一预设阈值。

在一种可能的实现方式中,第一预设阈值和第二预设阈值可以根据第一终端设备的解码器的误码隐藏能力和图像分辨率来进行调试确定,例如第一预设阈值可以为30%,第二预设阈值可以为15%。

s211、判断标记信息的类型是否为第一类型,若是,则执行s212,若否,则执行s215。

在本实施例中,标记信息为第一类型和标记信息为第二类型时,对应有不同的处理方式,因此首先判断标记信息的类型是否为第一类型。

在一种可能的实现方式中,可以通过设置标记信息对应于“true”或者“1”,以使得标记信息为第一类型,以及可以通过设置标记信息对应于“false”或者“0”,以使得标记信息为第二类型,其中,第一类型和第二类型的具体实现方式可以根据实际需求进行选择,本实施例对此不做限定。

同时需要说明的是,当前介绍的标记信息可以为上述介绍的第一标记信息、第二标记信息、第三标记信息、第四标记信息中的任一个,其是一个泛指的概念。

s212、在第一预设周期到达时,向第二终端设备发送请求信息,请求信息用于请求关键帧。

若标记信息的类型为第一类型,则说明需要向第二终端设备发送请求信息,则在第一预设周期到达时,向第二终端设备发送请求信息,以请求第二终端设备发送关键帧。

s213、接收第二终端设备发送的关键帧。

s214、根据关键帧刷新当前第一终端设备所显示的图像。

当第二终端设备接收到第一终端设备发送的请求信息时,可以确定第一终端设备当前请求获取一个关键帧,则第二终端设备将某个图像帧定义为关键帧,并发送给第一终端设备。

第一终端设备接收第二终端设备发送的关键帧,并根据关键帧刷新当前第一终端设备所显示的图像。

s215、根据第一终端设备的解码器对第一图像帧进行误码隐藏处理,并对误码隐藏处理后的第一图像帧进行显示。

若标记信息的类型为第二类型,则说明不需要向第二终端设备发送请求信息,此时第一终端设备需要根据当前接收到的,可能不完整的第一图像帧进行显示。

在本实施例中,为了提升第一图像帧的显示效果,第一终端设备的解码器可以对第一图像帧进行误码隐藏处理,其中,误码隐藏处理主要包括撒个步骤:误码检测、误码定位、误码隐藏,具体的误码隐藏处理可以参照现有技术中任一种可能的实现方式,此处不进行过多介绍。

对误码隐藏处理后的第一图像帧进行显示,能够有效提升第一图像帧的显示效果。

本申请实施例提供的信息发送方法,包括:判断第一终端设备接收到的第一数据包是否发生丢失,若是,则第一终端设备向第二终端设备发送rtcpnack,以使得第二终端设备根据rtcpnack调整发送码率。若否,则第一终端设备接收第一数据包,并获取第一数据包的帧类型和破损率,其中,第一数据包对应第一图像帧,破损率用于指示第一图像帧的不完整程度。判断帧类型是否为非关键帧类型,若是,则判断破损率是否大于第一预设阈值,若是,则得到第一标记信息,其中,第一标记信息的类型为第一类型。若否,则得到第二标记信息,其中,第二标记信息的类型为第二类型。若确定帧类型不是非关键帧类型,则判断破损率是否大于第二预设阈值,若是,则得到第三标记信息,其中,第三标记信息的类型为第一类型。若否,则得到第四标记信息,其中,第四标记信息的类型为第二类型。判断标记信息的类型是否为第一类型,若是,则在第一预设周期到达时,向第二终端设备发送请求信息,请求信息用于请求关键帧。接收第二终端设备发送的关键帧。根据关键帧刷新当前第一终端设备所显示的图像。若否,则根据关键帧刷新当前第一终端设备所显示的图像。根据第一终端设备的解码器对第一图像帧进行误码隐藏处理,并对误码隐藏处理后的第一图像帧进行显示。通过针对非关键帧和关键帧设置不同的预设阈值,并且设置有第二预设阈值小于第二预设阈值,可以保证关键帧的显示效果,从而保证视频的显示效果,同时,在不向第二终端设备发送请求信息的时候,通过解码器对第一图像帧进行误码隐藏处理,从而能够有效保证视频通话的质量和效果。

在上述实施例的基础上,因为本申请提供的信息发送方法设计第一终端设备和第二终端设备之间的交互,因此下面结合图3,以一种具体的示例再对本申请实施例提供的信息发送方法进行进一步地详细介绍,图3为本申请实施例提供的信息发送方法的流程示意图一。

如图3所示,第一终端设备和第二终端设备之间持续发送rtp包(第一数据包),则第一终端设备和第二终端设备既是发送者,同时也是接收者,下面的流程以第一终端设备作为接收者,第二终端设备作为发送者为例,反过来的实现方式是一样的,具体不再赘述。

参见图3,第一终端设备判断预设时长内的seq是否连续,若seq不连续,则可以确定发生数据包丢失,则第一终端设备向第二终端设备发送rtcpnack,以使得第二终端设备根据rtcpnack调整发送码率。

若seq连续,则可以确定没有发生数据包的丢失,此时第一终端设备进行组帧,并判断帧类型和破损率,具体的,若帧类型为关键帧,则需要确定其破损率是否大于第二预设阈值m,若帧类型为普通帧,则需要确定其破损率是否大于第一预设阈值n,若满足条件,则标记当前需要发送请求信息,也就是说确定标记信息的类型为第一类型。

或者,若确定关键帧的破损率≤n;或者普通帧的破损率≤m,则标记当前不需要发送请求信息,也就是说确定标记信息的类型为第二类型。

接着,在标记需要发送请求信息的情况下,按照第一预设周期t发送请求信息,具体的,向第二终端设备发送rtcp图片丢失指示(picturelossindication,pli),第二终端设备根据第一终端设备的rtcppli,向第二终端设备发送关键帧,第一终端设备接收第二终端设备发送的关键帧,并根据关键帧刷新当前第一终端设备所显示的图像。

下面结合具体的示意图再对本申请所提供的信息发送方法进行说明,结合图4-图6进行说明,图4为本申请实施例提供的图像帧示意图一,图5为本申请实施例提供的图像帧示意图二,图6为本申请实施例提供的信息发送方法的流程示意图二。

参见图4,图4中示意性的给出了一个图像帧,从图4中可以看出,该图像帧也存在部分丢失,但是因为丢失的slice较少,也就是说其破损率较小,其不影响最终的显示效果,或者是人眼看不出来,在这种情况下,参照图6可以确定的是,假设该图像帧是普通帧,此时普通帧的破损率不大于第一预设阈值,则此时无需向第二终端设备请求关键帧,而是进行误码隐藏处理之后直接进行显示。

同时,参见图5,图5中示意性的给出了一个图像帧,从图4中可以看出,该图像帧也存在部分丢失,但是因为丢失的slice较多,也就是说其破损率较大,其会影响最终的显示效果,图5中示例性的给出了马赛克效果,此时直接显示的话会对视频的质量造成影响,因此在这种情况下,参照图6可以确定的是,此时需要向第二终端设备请求关键帧,并根据第二终端设备发送的关键帧进行刷新,并进行图像的显示,以保证视频通话的质量。

本申请实施例提供的信息发送方法,通过增加帧破损率检查决策以决定是否发送关键帧请求,从而能够使得关键帧请求更加合理,图像最终效果更佳。

图7为本申请实施例提供的信息发送装置的结构示意图一。如图7所示,该装置70包括:接收模块701、确定模块702以及发送模块703。

接收模块701,用于第一终端设备接收第一数据包,并获取所述第一数据包的帧类型和破损率,其中,所述第一数据包对应第一图像帧,所述破损率用于指示所述第一图像帧的不完整程度;

确定模块702,用于根据所述帧类型和破损率,确定标记信息的类型,所述标记信息的类型为第一类型或第二类型,所述第一类型用于指示向所述第二终端设备请求关键帧,所述第二类型用于指示不向所述第二终端设备请求关键帧;

发送模块703,用于在第一预设周期到达时,若所述标记信息的类型为所述第一类型,则向所述第二终端设备发送请求信息,所述请求信息用于请求所述关键帧。

在一种可能的设计中,所述确定模块702具体用于:

若所述帧类型为非关键帧类型,则判断所述破损率是否大于第一预设阈值;

若是,则得到第一标记信息,其中,所述第一标记信息的类型为第一类型;

若否,则得到第二标记信息,其中,所述第二标记信息的类型为第二类型。

在一种可能的设计中,所述确定模块702具体用于:

若所述帧类型为关键帧类型,则判断所述破损率是否大于第二预设阈值;

若是,则得到第三标记信息,其中,所述第三标记信息的类型为第一类型;

若否,则得到第四标记信息,其中,所述第四标记信息的类型为第二类型。

本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。

图8为本申请实施例提供的信息发送装置的结构示意图二。如图8所示,本实施例在图7实施例的基础上,若所述标记信息的类型为第二类型,则所述装置还包括:显示模块804。

在一种可能的设计中,所述显示模块804,用于根据所述第一终端设备的解码器对第一图像帧进行误码隐藏处理,并对所述误码隐藏处理后的第一图像帧进行显示。

在一种可能的设计中,所述接收模块801还用于:

在所述获取所述第一数据包的帧类型和破损率之前,判断第一终端设备接收到的第一数据包是否发生丢失。

在一种可能的设计中,若所述第一终端设备接收到的第一数据包发生丢失,则所述发送模块还用于:

所述第一终端设备向所述第二终端设备发送实时传输控制协议rtcp否认应答nack,以使得所述第二终端设备根据所述rtcpnack调整发送码率。

在一种可能的设计中,所述接收模块801还用于:

在向所述第二终端设备发送请求信息之后,接收所述第二终端设备发送的所述关键帧;

根据所述关键帧刷新当前第一终端设备所显示的图像。

在一种可能的设计中,所述第二预设阈值小于第一预设阈值。

本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。

图9为本申请实施例提供的信息发送设备的硬件结构示意图,如图9所示,本实施例的信息发送设备90包括:处理器901以及存储器902;其中

存储器902,用于存储计算机执行指令;

处理器901,用于执行存储器存储的计算机执行指令,以实现上述实施例中信息发送方法所执行的各个步骤。具体可以参见前述方法实施例中的相关描述。

可选地,存储器902既可以是独立的,也可以跟处理器901集成在一起。

当存储器902独立设置时,该信息发送设备还包括总线903,用于连接所述存储器902和处理器901。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上信息发送设备所执行的信息发送方法。

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

上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。

应理解,上述处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。

总线可以是工业标准体系结构(industrystandardarchitecture,isa)总线、外部设备互连(peripheralcomponent,pci)总线或扩展工业标准体系结构(extendedindustrystandardarchitecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。

上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

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

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