本发明涉及通信技术领域,尤其涉及一种去除流媒体播放器时延累积的方法及装置。
背景技术:
随着4G通信网络的普及,视频通话应用越来越广泛,用户在终端设备上安装一个应用程序(应用程序中包括流媒体播放器)就可以与对方进行视频通话,目前很多视频方面的应用是固定的时延,流媒体播放器端一般会缓冲2-3s的音视频数据,然后才开始进行解码播放,这样用户看到的是对方2-3s之前的数据。
由于通信网络环境有好有坏,若用户拿着终端设备从网络条件好的地方到网络条件差的地方,此时,音视频数据会累积在网络中,当用户拿着终端设备从网络条件差的地方再次回到网络条件好的地方,累积在网络中的数据会大量的发送到终端设备上,但是这些数据都是过期的音视频数据,流媒体播放器播放这些过期的音视频数据会造成用户面时延增大,造成时延累积,如果用户反复进行上面的动作的话,用户面时延会越来越大,影响视频通话的实时性能,用户体验不高。
技术实现要素:
本发明提供一种去除流媒体播放器时延累积的方法及装置,以去除流媒体播放器播放过期音视频数据导致的时延累积,保证视频通话的实时性能。
第一方面,本发明提供一种去除流媒体播放器时延累积的方法,包括:
对接收的音频数据和视频数据进行解码;
确定解码后的音频数据的播放时间长度大于预设播放时间长度,对解码后的音频数据进行裁剪,使裁剪后的音频数据的播放时间长度等于所述预设播放时间长度,所述预设播放时间长度与流媒体播放器的最小时延相同;
根据视频数据跟随音频数据播放的同步播放原则,播放裁剪后的音频数据和解码后的视频数据。
进一步地,所述根据视频数据跟随音频数据播放的同步播放原则,播放裁剪后的音频数据和解码后的视频数据,包括:
播放裁剪后的音频数据,增加解码后的视频数据的播放速度直到处于同一播放时间点的视频数据与音频数据同步播放。
进一步地,所述对接收的音频数据和视频数据进行解码之前,还包括:
将接收的音频数据和视频数据分别组成音频帧和视频帧,并分别计算每一音频帧和每一视频帧的播放时间点;
将所述音频帧按照播放时间点依次放入音频缓冲队列中,将所述视频帧按照播放时间点依次放入视频缓冲队列中;
所述对接收的音频数据和视频数据进行解码,包括:
对所述音频缓冲队列中的音频帧和视频缓冲队列中的视频帧进行解码,并获取每一音频帧和每一视频帧的播放时间点。
进一步地,所述确定解码后的音频数据的播放时间长度大于预设播放时间长度,包括:
确定解码后的音频缓冲队列的播放时间长度大于预设播放时间长度;
所述对解码后的音频数据进行裁剪,使裁剪后的音频数据的播放时间长度等于所述预设播放时间长度,包括:
裁剪掉所述音频缓冲队列中播放时间点靠前的音频帧,使裁剪后的音频缓冲队列的播放时间长度等于所述预设播放时间长度;
所述播放裁剪后的音频数据,增加解码后的视频数据的播放速度直到处于同一播放时间点的视频数据与音频数据同步播放,包括:
播放裁剪后的音频缓冲队列,增加解码后的视频缓冲队列的播放速度直到处于同一播放时间点的视频帧与音频帧同步播放。
进一步地,所述确定解码后的音频缓冲队列的播放时间长度大于预设播放时间长度,包括:
按照预设时间周期性确定解码后的音频缓冲队列的播放时间长度大于预设播放时间长度。
第二方面,本发明提供一种流媒体播放器,包括:
音频接收模块,用于接收音频数据;
视频接收模块,用于接收视频数据;
音频解码器,用于对接收的音频数据进行解码;
视频解码器,用于对接收的视频数据进行解码;
处理模块,用于确定解码后的音频数据的播放时间长度大于预设播放时间长度,对解码后的音频数据进行裁剪,使裁剪后的音频数据的播放时间长度等于所述预设播放时间长度,所述预设播放时间长度与流媒体播放器的最小时延相同;
播放模块,用于根据视频数据跟随音频数据播放的同步播放原则,播放裁剪后的音频数据和解码后的视频数据。
进一步地,所述播放模块具体用于:
播放裁剪后的音频数据,增加解码后的视频数据的播放速度直到处于同一播放时间点的视频数据与音频数据同步播放。
进一步地,所述音频接收模块用于:将接收的音频数据组成音频帧,并计算每一音频帧的播放时间点,将所述音频帧按照播放时间点依次放入音频缓冲队列中;
所述视频接收模块用于:将接收的视频数据组成视频帧,并计算每一视频帧的播放时间点,将所述视频帧按照播放时间点依次放入视频缓冲队列中;
所述音频解码器具体用于:对所述音频缓冲队列中的音频帧进行解码,并获取每一音频帧的播放时间点;
所述视频解码器具体用于:对所述视频缓冲队列中的视频帧进行解码,并获取每一视频帧的播放时间点。
进一步地,所述处理模块用于:
确定解码后的音频缓冲队列的播放时间长度大于预设播放时间长度,裁剪掉所述音频缓冲队列中播放时间点靠前的音频帧,使裁剪后的音频缓冲队列的播放时间长度等于所述预设播放时间长度;
所述播放模块用于:播放裁剪后的音频缓冲队列,增加解码后的视频缓冲队列的播放速度直到处于同一播放时间点的视频帧与音频帧同步播放。
进一步地,所述处理模块具体用于:
按照预设时间周期性确定解码后的音频缓冲队列的播放时间长度大于预 设播放时间长度。
本发明提供的去除流媒体播放器时延累积的方法及装置,通过根据流媒体播放器的最小时延设置一预设播放时间长度,在确定音频缓冲队列的播放时间长度大于预设播放时间长度时,对解码后的音频数据进行裁剪,使裁剪后的音频数据的播放时间长度等于预设播放时间长度,然后在播放音视频数据时根据视频数据跟随音频数据播放的同步播放原则,这样就去除了流媒体播放器在网络条件好的地方与网络条件差的地方来回切换所造成的时延累积,保证视频通话的性能。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明去除流媒体播放器时延累积的方法实施例一的流程图;
图2为本发明去除流媒体播放器时延累积的方法实施例二的流程图;
图3为音频缓冲队列的示意图;
图4为视频缓冲队列的示意图;
图5为音视频同步播放的示意图;
图6为本发明流媒体播放器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明去除流媒体播放器时延累积的方法实施例一的流程图,本实施例中的执行主体为流媒体播放器,如图1所示,本实施例的方法可以包括:
S101、对接收的音频数据和视频数据进行解码。
S102、确定解码后的音频数据的播放时间长度大于预设播放时间长度,对解码后的音频数据进行裁剪,使裁剪后的音频数据的播放时间长度等于预设播放时间长度,预设播放时间长度与流媒体播放器的最小时延相同。
其中,预设播放时间长度是流媒体播放器的一个性能指标,这个性能指标是开发人员根据流媒体播放器使用的网络场景以及其他因素综合指定的,例如:播放器在wifi条件下使用,播放器最小的时延为2000ms,这个预设播放时间长度为2000ms,如果播放器是在LTE环境下使用,播放器最小的时延为200ms,则这个预设播放时间长度为200ms。
确定解码后的音频数据的播放时间长度大于预设播放时间长度具体可以是通过检测或计算解码后的音频数据的播放时间长度来判断。
S103、根据视频数据跟随音频数据播放的同步播放原则,播放裁剪后的音频数据和解码后的视频数据。
具体地,由于对音频数据进行了裁剪,根据视频数据跟随音频数据播放的同步播放原则,播放裁剪后的音频数据,增加解码后的视频数据的播放速度直到处于同一播放时间点的视频数据与音频数据同步播放。
本实施例提供的去除流媒体播放器时延累积的方法,通过根据流媒体播放器的最小时延设置一预设播放时间长度,在确定音频缓冲队列的播放时间长度大于预设播放时间长度时,对解码后的音频数据进行裁剪,使裁剪后的音频数据的播放时间长度等于预设播放时间长度,然后在播放音视频数据时根据视频数据跟随音频数据播放的同步播放原则,这样就去除了流媒体播放器在网络条件好的地方与网络条件差的地方来回切换所造成的时延累积,保证视频通话的性能。
图2为本发明去除流媒体播放器时延累积的方法实施例二的流程图,本实施例为图1所示方案的一种具体的实施方式,如图2所示,本实施例的方法可以包括:
S201、将接收的音频数据和视频数据分别组成音频帧和视频帧,并分别计算每一音频帧和每一视频帧的播放时间点。
S202、将音频帧按照播放时间点依次放入音频缓冲队列中,将视频帧按照播放时间点依次放入视频缓冲队列中。
具体来说,对于音频,流媒体播放器接收音频数据包(实时传输协议RTP包),然后组成音频帧,根据实时传输控制协议(Real-time Transport Control Protocol,简称:RTCP)包,计算出音频帧的播放时间点,把音频帧放到音频缓冲队列中,如图3所示,图3为音频缓冲队列的示意图,图3中1、2、3…11等为一个个音频帧。对于视频,流媒体播放器接收视频数据包(实时传输协议RTP包),然后组成视频帧,根据RTCP包,计算出视频帧的播放时间点,把视频帧放到视频缓冲队列中,如图4所示,图4为视频缓冲队列的示意图,图4中1、2、3…11等为一个个视频帧。
S203、对音频缓冲队列中的音频帧和视频缓冲队列中的视频帧进行解码,并获取每一音频帧和每一视频帧的播放时间点。
S204、确定解码后的音频缓冲队列的播放时间长度大于预设播放时间长度。
具体可以是通过计算或检测音频缓冲队列的播放时间长度后来确定。
S205、裁剪掉音频缓冲队列中播放时间点靠前的音频帧,使裁剪后的音频缓冲队列的播放时间长度等于预设播放时间长度。
例如播放时间长度阈值预先设置为60ms,检测到的音频缓冲队列的播放时间长度为100ms,100ms大于60ms,则按照时间顺序对音频缓冲队列进行裁剪,裁剪掉音频缓冲队列中时间靠前的音频帧,使得音频缓冲队列的播放时间长度等于60ms。
S206、播放裁剪后的音频缓冲队列,增加解码后的视频缓冲队列的播放速度直到处于同一播放时间点的视频帧与音频帧同步播放。
具体地,图5为音视频同步播放的示意图,如图5所示,例如由于对音频缓冲队列进行了裁剪,音频帧的播放时间点从4跳变到7的时候,视频会快速的播放时间点为4、5、6、7的视频帧来赶上音频,在播放时间点7的时候,达到音视频同步播放。
进一步地,为减少系统损耗,可以预设一时间,让流媒体播放器周期性地确定音频缓冲队列的播放时间长度大于预设播放时间长度,此时,S204可以是:按照预设时间周期性确定音频缓冲队列的播放时间长度大于预设播放时间长度。该预设时间可以是根据网络条件配置的经验值,如1S。
下面采用一个具体的实施例,对图1或图2所示方法实施例的技术方案 进行详细说明。
首先预先设置音频缓冲队列的播放时间长度阀值为60ms(音频为3帧,一个音频帧播放持续时间为20ms),流媒体播放器启动。
接着,流媒体播放器分别接收音频数据包和视频数据包,然后组成音频帧和视频帧,根据RTCP包,计算出音频帧的播放时间点和视频帧的播放时间点,把音频帧和视频帧放到音频缓冲队列和视频缓冲队列中。如
音频缓冲队列(Audio):1 2 3
视频缓冲队列(Video):1 2 3
音频缓冲队列和视频缓冲队列中的音视频帧的播放时间点分别为1 2 3,音视频开始解码并播放。
音视频解码后的队列:
Audio:1 2 3
Video:1 2 3
视频帧的播放时间点根据音频的播放时间点进行刷新。
在某一个时间点,音频缓冲队列中累积了很多音频帧,视频缓冲队列中累积了很多视频帧,如下:
Audio:16 17 18 19 20
Video:16 17 18 19 20
检测出音频缓冲队列的播放时间长度为100ms,100ms大于60ms,则需要裁剪音频缓冲队列的播放时间长度,把音频缓冲队列中为16 17的音频帧裁剪掉,如下:
Audio:18 19 20
Video:16 17 18 19 20
此时,音频帧的播放时间点和视频帧的播放时间点分别为:
Audio:18 19 20
Video:16 17 18 19 20
经过对音频缓冲队列裁剪,当前音频帧的播放时间点为18,音频帧播放时间点为16 17的就不会进行播放,视频播放点为16 17 18的会快进播放,赶上音频,达到音视频同步播放。
图6为本发明流媒体播放器的结构示意图,如图6所示,本实施例的流 媒体播放器可以包括:音频接收模块11、视频接收模块12、音频解码器13、视频解码器14、处理模块15、播放模块16。其中,音频接收模块11用于接收音频数据。视频接收模块12用于接收视频数据。音频解码器13用于对接收的音频数据进行解码。视频解码器14用于对接收的视频数据进行解码。处理模块15用于确定解码后的音频数据的播放时间长度大于预设播放时间长度,对解码后的音频数据进行裁剪,使裁剪后的音频数据的播放时间长度等于预设播放时间长度,预设播放时间长度与流媒体播放器的最小时延相同。播放模块16用于根据视频数据跟随音频数据播放的同步播放原则,播放裁剪后的音频数据和解码后的视频数据。
进一步地,播放模块16具体用于:播放裁剪后的音频数据,增加解码后的视频数据的播放速度直到处于同一播放时间点的视频数据与音频数据同步播放。
具体地,音频接收模块11用于:将接收的音频数据组成音频帧,并计算每一音频帧的播放时间点,将音频帧按照播放时间点依次放入音频缓冲队列中。视频接收模块12用于:将接收的视频数据组成视频帧,并计算每一视频帧的播放时间点,将视频帧按照播放时间点依次放入视频缓冲队列中。音频解码器13具体用于:对音频缓冲队列中的音频帧进行解码,并获取每一音频帧的播放时间点。视频解码器14具体用于:对视频缓冲队列中的视频帧进行解码,并获取每一视频帧的播放时间点。处理模块15用于:确定解码后的音频缓冲队列的播放时间长度大于预设播放时间长度,裁剪掉音频缓冲队列中播放时间点靠前的音频帧,使裁剪后的音频缓冲队列的播放时间长度等于预设播放时间长度。播放模块16用于:播放裁剪后的音频缓冲队列,增加解码后的视频缓冲队列的播放速度直到处于同一播放时间点的视频帧与音频帧同步播放。
进一步地,处理模块15具体用于:按照预设时间周期性确定解码后的音频缓冲队列的播放时间长度大于预设播放时间长度。
本实施例提供的流媒体播放器,通过根据流媒体播放器的最小时延设置一预设播放时间长度,在处理模块确定音频缓冲队列的播放时间长度大于预设播放时间长度时,对解码后的音频数据进行裁剪,使裁剪后的音频数据的播放时间长度等于预设播放时间长度,然后播放模块在播放音视频数据时根 据视频数据跟随音频数据播放的同步播放原则,这样就去除了流媒体播放器在网络条件好的地方与网络条件差的地方来回切换所造成的时延累积,保证视频通话的性能。
本实施例的装置,可以用于执行图1或图2所示方法实施例的技术方案,其实现原理类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。