一种直播方法、直播服务器及存储装置与流程

文档序号:18633646发布日期:2019-09-11 21:57阅读:332来源:国知局
一种直播方法、直播服务器及存储装置与流程

本申请涉及直播技术领域,特别是涉及一种直播方法、直播服务器及存储装置。



背景技术:

随着互联网直播技术的发展,越来越多的人会参与观看网络直播。人们在观看直播视频的时候往往发现,客户端播放器对直播视频的加载时间过长,首次打开直播间观看视频的用户通常需要等待一定时间才能观看到直播画面,即首屏打开时间过长,这会导致一段时间的黑屏或花屏,影响播放体验。

这是因为播放器的解码器只能从关键帧处开始解码播放,而客户端点击进入时的进入点具有随机性,进入时的当前帧可能不是关键帧,如果进入时的帧数据不是关键帧,就不能独立解码播放,就需要等待到关键帧时才能播放。这个等待时间至多是一个gop时间,其中gop是指一个画面组(groupofpictures,gop),是一段连续的可以独立解码的画面,一个画面组至少包括一个关键帧,且头部第一帧一定是关键帧,也可以说一个gop时间指的是两个关键帧之间的时间间隔。



技术实现要素:

本申请主要解决的技术问题是提供一种直播方法、直播服务器及存储装置,能够减小首屏开启时间;且能够使客户端播放器播放时所播放的都是实时最新画面,没有延时。

为解决上述技术问题,本申请采用的一个技术方案是:提供一种直播方法,所述方法包括直播服务器接收直播数据流;判断数据流是否为非关键帧;若数据流为非关键帧,则判断缓存中是否包含关键帧;若缓存中包含关键帧,则利用关键帧将非关键帧转换成当前关键帧。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种直播服务器,所述直播服务器包括处理器、存储器和通信电路,处理器耦接存储器和通信电路,存储器用于存储程序,处理器用于执行所述程序实现上述的直播方法。

为解决上述技术问题,本申请采用的另一个技术方案是:提供一种具有存储功能的装置,所述装置存储有程序,所述程序被执行时实现上述的直播方法。

本申请的有益效果是:区别于现有技术的情况,本申请提供的直播方法,直播服务器中缓存有直播数据,能够使客户端播放器收到的第一帧媒体总是可以直接播放的效果,减小了首屏开启时间。同时可以利用缓存中的前一关键帧,将最新收到的非关键帧转换成当前关键帧,并用当前关键帧覆盖前一关键帧,使缓存中的关键帧始终都是当前关键帧,能够保证客户端播放器播放时所播放的都是实时最新画面,没有延时。

附图说明

图1是本申请直播方法第一实施方式的流程示意图;

图2是本申请直播方法第二实施方式的流程示意图;

图3是本申请直播方法第三实施方式的流程示意图;

图4是本申请直播服务器第一实施方式的流程示意图;

图5是本申请具有存储功能的装置第一实施方式的结构示意图。

具体实施方式

为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。

本申请提供一种直播方法,旨在解决打开直播视频时等待时间过长或视频内容时延的问题。具体地,为了减少首屏打开时间,直播平台往往会在服务器中缓存一个距离当前时刻最近的gop视频数据,当有新的客户端接入时,服务器会从所缓存的gop数据中的第一帧数据开始,依次将各帧数据发送给客户端,客户端即从gop数据中的第一帧数据(关键帧)开始播放。这样虽省去了等待下一个关键帧到来的时间,减小了首屏开启时间,但是会导致引入一个gop的端到端延迟。这是因为缓存中的gop视频数据并不一定是当前的实时数据,例如进入直播的时间点距离缓存中gop头部开始播放的时间点相差2秒,那么播放延时就会一直多这2秒,同样会影响用户体验。

本申请所提供的视频直播方法,能够对缓存中的视频数据进行处理,使缓存中缓存的一直都是最新的当前关键帧,使客户端播放器不仅能够快速的打开实时视频,而且不会引入直播延时。

请参阅图1,图1是本申请直播方法第一实施方式的流程示意图。在该实施方式中,直播方法包括如下步骤:

s101:直播服务器接收直播数据流。

其中,直播数据流是主播端设备发送来的。具体地,主播端设备利用摄像头、麦克风等音视频采集设备采集获取音视频数据,然后编码形成数据流发送给直播服务器。其中,摄像头、麦克风等音视频采集设备可以是主播端设备自身的摄像头、麦克风等,也可以是外接的usb摄像头、麦克风等。当然也可以是主播端设备从其他应用中获取的视频流数据。

s102:判断数据流是否为非关键帧。

其中,在视频编码序列中,主要有三种编码帧:i帧、p帧、b帧。i帧为intra-codedpicture(帧内编码图像帧),不参考其他图像帧,只利用本帧的信息进行编码,即i帧为关键帧,i帧画面完整保留,解码时只需要本帧数据就可以完成。p帧为predictive-codedpicture(预测编码图像帧),利用之前的i帧或p帧,采用运动预测的方式进行帧间预测编码。即p帧是前向预测帧,记录的是这一帧和之前的一个关键帧或p帧的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。b帧为bidirectionallypredictedpicture(双向预测编码图像帧),提供最高的压缩比,它既需要之前的图像帧(i帧或p帧),也需要后来的图像帧(p帧),采用运动预测的方式进行帧间双向预测编码。即b帧为双向内插帧,记录的是本帧与前后帧的差别,或者说,要解码b帧,不仅需要取得之前的缓存画面,还要解码之后的画面,通过前后画面与本帧数据的叠加取得最终的画面。也就是说p帧、b帧记录的是与之前编码的画面的差异,没有i帧,p帧和b帧是无法解码,即i帧是关键帧,p帧和b帧是非关键帧。

s103:若数据流为非关键帧,则判断缓存中是否包含关键帧。

s104:若缓存中包含关键帧,则利用关键帧将非关键帧转换形成当前关键帧。

在该实施方式中,当接收到的数据流是非关键帧时,不是直接将其放入缓存队列中,而是先判断缓存队列中有没有关键帧。当缓存队列中有关键帧时,不是直接将该非关键帧放入关键帧的后面,而是利用缓存队列中的关键帧对该非关键帧进行处理,将该非关键帧转换成当前关键帧。具体地,非关键帧记录的是与之前编码的画面的差异,那么将非关键帧叠加前面的关键帧就可以解码生成完整画面,即可以转换成一个关键帧。同时将转换成的当前关键帧放入缓存队列,并清空缓存队列中的前一关键帧,将最新的当前关键帧放入缓存队列头部。

通过这种方式,可以使缓存队列中存放的一直都是当前关键帧。或者说,通过该实施方式的方法,在下一关键帧到来之前,直播服务器可以利用缓存中的前一关键帧,将最新收到的非关键帧转换成当前关键帧,并用当前关键帧覆盖前一关键帧,使缓存中的关键帧始终都是当前关键帧。这样当客户端进入时收到的都是当前关键帧,既省去了等待下一关键帧到来的时间,减小了首屏开启时间;同时还保证了播放时所播放的都是实时最新画面,没有延时。

在一实施方式中,当接收到的数据流是非关键帧,且缓存队列中没有前一关键帧时,收到的非关键帧数据流可以直接丢弃。这是因为如果没有前一关键帧,只有非关键帧也无法解码,还是要等到下一关键帧。那么前面缓存的这些非关键帧就是无效的,还会占用缓存空间。因此,可以直接将这些非关键帧丢弃,以减轻缓存负担。

在一实施方式中,如果接收到的数据流是关键帧,则可以不用处理,直接清空缓存队列,将其作为最新的当前关键帧放入缓存队列头部。当后续进来非关键帧时,不是直接将非关键帧放入关键帧后面,而是将非关键帧叠加前一关键帧转换成当前关键帧,然后清理覆盖原有关键帧,使缓存队列头部的关键帧一直都是实时最新的关键帧。

在一实施方式中,直播服务器可以根据被访问的密集程度,选择性的决定是否需要实时的将非关键帧转换成当前关键帧。具体地,当直播服务器被很密集的访问时,两个关键帧之间的时间内可能随时会有播放器来请求获取数据流,所以在收到非关键帧时,应实时的将非关键帧转换成关键帧,以保证每一个播放器请求时,所获取的都是实时的最新的当前关键帧。

而当直播服务器的访问不密集时,在两个关键帧之间的时间内可能并没有播放器请求获取数据流,这个时候如果还实时的将非关键帧转换成关键帧,就会平白增加直播服务器的消耗。这是因为这个被转换成的关键帧还没有来得及发送给播放器就已经被后一个关键帧覆盖了,也就是说,将非关键帧转换成关键帧这个步骤就是多余的、无效的。此时,可以选择接收到非关键帧时,暂时先将其放在缓存中前一关键帧的后面,并不实时的将其转换成当前关键帧,而是判别在这期间有没有收到播放器获取数据流的请求,当收到数据流的获取请求时再进行转换,通过这种方式,既能够保证客户端播放器获取的是最新的当前关键帧,还能降低服务器的消耗。

请参阅图2,图2是本申请直播方法第二实施方式的流程示意图。在该实施方式中,直播系统包括主播端设备、直播平台服务器和客户端播放器。在进行直播时,主播端设备采集音视频数据并编码形成数据流,将数据流发送给直播服务器;直播服务器在接收到客户端播放器的访问请求(获取数据流请求)后,将数据流发送给客户端播放器;客户端播放器在接收到数据流后,从关键帧处解码播放,进而实现直播。

具体地,直播服务器接收直播数据流,同时判断直播服务器的被访问频率是否超过阈值。在该实施方式中,判断结果为是,即被访问频率超过阈值。直播服务器在收到非关键帧数据流且判定缓存中包含关键帧时,即时利用关键帧将非关键帧转换成当前关键帧。具体地,将该非关键帧叠加缓存中的前一关键帧解码转换出原始图像;并立即将原始图像重新帧内编码形成当前关键帧,且清空缓存将当前关键帧放入缓存队列头部。同时将转换后的当前关键帧的帧序号设置为原非关键帧的序号,以实现数据流的连续,防止出现乱码。

当客户端播放器请求获取数据流时,直播服务器将缓存队列头部的当前关键帧发送给客户端播放器,客户端播放器获取到的都是最新的当前关键帧。通过这种方式,能够使在任意时刻进入访问的客户端播放器获取到的都是最新的当前关键帧,既减小了首屏开启时间;同时还保证了播放时所播放的都是实时最新画面,没有延时。

同样地,在该实施方式中,若接收到的数据流是非关键帧,且缓存中不包含关键帧时,则丢弃该非关键帧数据流。若接收到数据流的是关键帧,则直接清空缓存,将数据流作为当前关键帧放入缓存队列头部。

请参阅图3,图3是本申请直播方法第三实施方式的流程示意图。在该实施方式中,直播系统包括主播端设备、直播平台服务器和客户端播放器。在进行直播时,主播端设备采集音视频数据并编码形成数据流,将数据流发送给直播服务器;直播服务器在接收到客户端播放器的访问请求(获取数据流请求)后,将数据流发送给客户端播放器;客户端播放器在接收到数据流后,从关键帧处解码播放,进而实现直播。

具体地,直播服务器接收直播数据流,同时判断直播服务器的被访问频率是否超过阈值。在该实施方式中,判断结果为否,即被访问频率没有超过阈值。直播服务器在收到非关键帧数据流且判定缓存中包含关键帧时,根据是否收到访问请求选择性决定是否需要利用关键帧将非关键帧转换成当前关键帧。具体地,在收到非关键帧数据流且判定缓存中包含关键帧后,先将该非关键帧叠加缓存中的前一关键帧解码转换出原始图像;再判断是否接收到访问请求,在接收到访问请求时,再将原始图像重新帧内编码形成当前关键帧,并将当前关键帧发送给客户端播放器。其中,该实施方式中,转换后的当前关键帧的帧序号同样为原非关键帧的序号。通过这种方式,既能够保证客户端播放器获取的是最新的当前关键帧,还能降低服务器的消耗。

同样地,在该实施方式中,若接收到的数据流是非关键帧,且缓存中不包含关键帧时,则丢弃该非关键帧数据流。若接收到数据流的是关键帧,则直接清空缓存,将数据流作为当前关键帧放入缓存队列头部。

基于此,本申请还提供一种直播服务器,请参阅图4,图4是本申请直播服务器第一实施方式的结构示意图。该实施方式中,直播服务器40包括处理器401、存储器402和通信电路403,处理器401耦接存储器402和通信电路403,存储器402用于存储程序,处理器401用于执行所述程序实现上述的直播方法,具体执行过程请参阅上述实施方式的描述,在此不再赘述。该直播服务器通过缓存实时关键帧的方法,实现客户端播放器收到的第一帧媒体总是可以直接播放的效果。且在缓存直播数据时,能够通过解码、编码的方式,将非关键帧转换成实时关键帧并缓存,保证客户端播放器视频的实时性。并及时清空缓存,使缓存队列始终只保存一个帧,且是当前视频最新画面的关键帧。同时能够按照具体使用场景选择是否实时编码,对于密集型请求,实现实时解码、编码并放入缓存;对于非密集型请求,只实现实时解码,收到请求后再编码。既减小了首屏开启时间;同时还保证了播放时所播放的都是实时最新画面,没有延时,且降低服务器的消耗。该直播服务器可以是一台独立的服务器,也可以是多台服务器组成的服务器集群。

本申请还提供一种具有存储功能的装置,请参阅图5,图5是本申请具有存储功能的装置第一实施方式的结构示意图。在该实施方式中,存储装置50存储有程序501,程序501被执行时实现上述直播方法。具体工作过程请参阅上述方法实施例的描述,故在此不再赘述,详细请参阅以上对应方法步骤的说明。其中具有存储功能的装置可以是便携式存储介质如u盘、光盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟等各种可以存储程序代码的介质,也可以是终端、服务器等。

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

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

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

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。

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

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