首页> 中国专利> 一种流媒体文件处理方法及直播系统

一种流媒体文件处理方法及直播系统

摘要

本发明提供了一种用于直播系统中流媒体文件处理方法,所述方法包含步骤:按照一预设时间单位对所述流媒体文件进行切片;根据时间数据为所述切片创建播放序列号;其中所述播放序列号用于确定所述切片的播放顺序;分别存储所述切片及所述切片的播放序列号,并建立所述切片与其播放序列号之间的映射关系。本发明基于预设时间单位对流媒体文件进行切片,并根据时间数据创建切片的播放序列号,可以直接基于时间信息来选择处理播放序列号对应的切片文件,以方便后续对切片文件的操作。此外,本发明还提供一种直播系统。

著录项

  • 公开/公告号CN107426629A

    专利类型发明专利

  • 公开/公告日2017-12-01

    原文格式PDF

  • 申请/专利权人 网宿科技股份有限公司;

    申请/专利号CN201710464872.7

  • 发明设计人 陈鸿;吕士表;

    申请日2017-06-19

  • 分类号H04N21/845(20110101);H04N21/24(20110101);H04N21/442(20110101);H04N21/8547(20110101);

  • 代理机构11573 北京华智则铭知识产权代理有限公司;

  • 代理人胡毅

  • 地址 200030 上海市徐汇区斜土路2899号甲光启文化广场A幢5楼

  • 入库时间 2023-06-19 03:54:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-07-07

    未缴年费专利权终止 IPC(主分类):H04N21/845 专利号:ZL2017104648727 申请日:20170619 授权公告日:20200623

    专利权的终止

  • 2020-06-23

    授权

    授权

  • 2017-12-26

    实质审查的生效 IPC(主分类):H04N21/845 申请日:20170619

    实质审查的生效

  • 2017-12-01

    公开

    公开

说明书

技术领域

本发明涉及网络直播技术领域,特别涉及一种流媒体文件处理方法及直播系统。

背景技术

随着互联网的普及,利用网络传输声音与视频信号的需求也越来越大。广播电视等媒体上网后,也都希望通过互联网来发布自己的音视频节目。但是,音视频在存储时,文件的体积一般都十分庞大。在网络带宽还很有限的情况下,花几十分钟甚至更长的时间等待一个音视频文件的传输,用户体验并不好。

流媒体技术的出现,在一定程度上使互联网传输音视频难的局面得到改善。

采用流媒体技术,可实现流式传输,将声音、影像或动画由服务器向用户计算机进行连续、不间断传送,用户不必等到整个文件全部下载完毕,而只需经过几秒或十几秒的启动延时即可进行观看。当声音视频等在用户的机器上播放时,文件的剩余部分还会从服务器上继续下载。

目前,流媒体技术广泛应用在点播领域,即音视频文件已经存储在服务器上,用户可以对正在播放的文件,进行拖放定位,而为了实现音视频文件的拖放定位,需要对流媒体文件进行预先处理,例如,为流媒体文件设置时间点,对视频的定位通过视频时间点进行操作,或者对流媒体文件进行关键帧分割,使得用户可更加精准的对播放文件进行定位,服务器也能根据用户请求进行快速跳转。

然而这些流媒体文件的处理方法,并不适用于直播领域,在用户观看直播画面时,并不能对视频进行拖放定位的操作,只能实时接收源端或服务器发送的直播画面,并根据客户端端的播放进行进行自身调整。

众所周知,直播对音视频播放的实时性要求较高,如何对媒体文件进行处理,以提供客户端观看体验是当前急需解决的问题。

发明内容

为了解决背景技术中的问题,本发明实施例提供了一种流媒体文件处理方法,具体包含步骤:按照一预设时间单位对所述流媒体文件进行切片;根据时间数据为所述切片创建播放序列号;其中所述播放序列号用于确定所述切片的播放顺序;分别存储所述切片及所述切片的播放序列号,并建立所述切片与其播放序列号之间的映射关系。

在本发明的一较佳实施例中,所述按照一预设时间单位对所述流媒体文件进行切片的方法包含,获取所述流媒体文件中每一帧的持续时间,基于所述持续时间及所述预设时间单位从所述流媒体文件中分割出所述切片。

在本发明的一较佳实施例中,所述时间数据包含所述切片中的第一帧的流时间戳。

在本发明的一较佳实施例中,所述根据时间数据为所述切片创建播放序列号包含基于所述时间数据进行函数计算得出所述播放序列号。

在本发明的一较佳实施例中,所述根据时间数据为所述切片创建播放序列号包含:判断当前创建的播放序列号是否需要校准,若需要校准,则根据系统时间来创建当前所述切片的播放序列号,若不需要校准,则基于所述时间数据进行函数计算得出所述播放序列号。

在本发明的一较佳实施例中,所述判断当前创建的播放序列号是否需要校准的方法包含:确认当前所述切片与上一所述切片之间是否存在数据丢失,若存在,则判断为需要校准。

在本发明的一较佳实施例中,播放所述流媒体文件的方法包含步骤:获取最新的所述播放序列号;基于当前播放的所述切片的播放序列号和所述最新的播放序列号判断是否出现卡顿,若出现卡顿,则根据播放延时和所述最新播放序列号确定下一个播放序列号,若未出现卡顿,则按播放序列号的顺序确定下一个播放序列号;根据所述下一个播放序列号下载相应所述切片。

在本发明的一较佳实施例中,所述判断是否出现卡顿的方法包含:计算当前播放的所述切片的播放序列号和所述最新的播放序列号的数值差,根据所述数值差是否属于预设范围判断是否出现卡顿。

在本发明的一较佳实施例中,在对所述流媒体文件进行切片之后更包含对所述切片中是否包含关键帧进行记录。

此外,本发明还提供一种直播系统,包含推流端、服务器和播放器,其中,所述推流端传送流媒体文件至所述服务器;所述服务器的文件处理模块接收所述流媒体文件,按照一预设时间单位对所述流媒体文件进行切片,根据时间数据为所述切片创建播放序列号,建立所述切片与所述播放序列号之间的映射关系,并分别将所述切片、所述播放序列号及所述映射关系发送给所述服务器的存储模块,所述存储模块将所述切片存储在第一分区,将所述播放序列号及所述映射关系存储在第二分区;所述播放器从所述第二分区获取并选择所述播放序列号,并根据所述播放序列号及所述映射关系从所述第一分区下载所述切片进行播放。

在本发明的一较佳实施例中,所述服务器的文件处理模块按照一预设时间单位对所述流媒体文件进行切片的方法包含,获取所述流媒体文件中每一帧的持续时间,基于所述持续时间及所述预设时间单位从所述流媒体文件中分割出所述切片。

在本发明的一较佳实施例中,所述时间数据包含所述切片中的第一帧的流时间戳。

在本发明的一较佳实施例中,所述服务器的文件处理模块根据所述时间数据为所述切片创建播放序列号包含基于所述时间数据进行函数计算得出所述播放序列号。

在本发明的一较佳实施例中,所述服务器的文件处理模块根据所述时间数据为所述切片创建播放序列号包含:判断当前创建的播放序列号是否需要校准,若需要校准,则根据系统时间来创建当前所述切片的播放序列号,若不需要校准,则基于所述时间数据进行函数计算得出所述播放序列号。

在本发明的一较佳实施例中,所述文件处理模块判断当前创建的播放序列号是否需要校准包含:确认当前所述切片与上一所述切片之间是否存在数据丢失,若存在,则判断为需要校准。

在本发明的一较佳实施例中,所述播放器的数据请求模块向所述服务器的存储模块请求下载所述切片,并发送给所述播放器的播放单元进行播放,其中,所述请求模块确认请求切片的播放序列号时,先获取最新的所述播放序列号,并基于当前播放的所述切片的播放序列号和所述最新的播放序列号判断是否出现卡顿,若出现卡顿,则根据播放延时和所述最新播放序列号确定下一个播放序列号,若未出现卡顿,则按播放序列号的顺序确定下一个播放序列号,并根据所述下一个播放序列号向所述服务器请求下载相应所述切片。

在本发明的一较佳实施例中,所述请求模块通过计算当前播放的所述切片的播放序列号和所述最新的播放序列号的数值差,根据所述数值差是否属于预设范围判断是否出现卡顿。

在本发明的一较佳实施例中,在所述文件处理模块对所述流媒体文件进行切片之后,对所述切片中是否包含关键帧进行标记。

在本发明的一较佳实施例中,所述直播系统包含多台所述服务器和多台所述播放器。

在本发明的一较佳实施例中,所述直播系统包含多个推流端,所述服务器可分别连接于多个推流端。

通过本发明所提供的技术方案,对流媒体文件按照时间单位来进行切片,并基于时间数据来为各个切片创建播放序列号,使得后续播放过程中,可以直接基于播放序列号来进行操作,选择适合的切片进行播放,从而实现在播放器发生卡顿时快速进行恢复。

此外,通过加入校准步骤,使得在文件数据发生丢失的情况下,及时调整播放序列号,使得后续在播放过程中能准确定位到正确的播放位置,而防止因数据缺失而出现播放序列号杂乱导致播放请求数据发生错误的情况。

更进一步的,在对流媒体文件进行切片之后,对包含关键帧的切片进行记录,方便在播放卡顿需要跳转的情况下,可以快速定位到包含关键帧的切片进行播放,防止选择到没有关键帧的切片播放时出现的花屏现象,从而提升用户体验。

直播业务中,对实时性要求比较高,而由于网络原因而出现的数据丢失和播放卡顿是直播业务中亟待解决的问题,通过本发明所提供技术方案,可很好的对数据丢失进行识别,并采取相应的补救措施,也可以对播放卡顿进行快速恢复,从而更好的满足了直播业务的需求。

附图说明

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

图1绘示本发明一较佳实施例所提供的流媒体文件处理方法流程图;

图2绘示本发明实施例中流媒体文件处理过程示意图;

图3绘示本发明一较佳实施例提供的流媒体文件播放方法流程图;

图4绘示本发明一较佳实施例提供的直播系统结构示意图;

图5绘示本发明一较佳实施例所提供的直播系统中服务器结构示意图;

图6绘示本发明一较佳实施例所提供的直播系统中播放器的结构示意图;

图7绘示本发明另一较佳实施例提供的直播系统结构示意图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

以下将结合图示对本发明的实施例进行说明。

请参照图1,图1绘示本发明一较佳实施例所提供的流媒体文件处理方法流程图。如图1所示,本实施例所提供的流媒体文件处理方法包含:

步骤S10,按照一预设时间单位对流媒体文件进行切片。

具体而言,流媒体文件实质包含流式传播的音视频文件,音视频流中包含连续的帧,该些连续的帧可分为关键帧和中间帧,每一帧上都包含流时间戳和持续时间,以标记该帧在音视频流中的播放起始时间和播放长度,例如,视频流第一帧流时间戳为0,帧持续时间40ms;第二帧流时间戳为40,第三帧依次递加。

预设时间单位用来确定切片长度,在对流媒体文件进行切片时,可以基于每一帧的持续时间和预设时间单位,截取若干连续帧为作一个切片,例如,第一帧流时间戳为0,帧持续时间40ms;第二帧流时间戳为40,帧持续时间60ms;第三帧流时间戳为100,若预设时间单位为100ms,那么第一帧和第二帧为一个切片。由此可见,单个切片的播放时长为其所包含的所有帧的持续时间之和,理论上来说,等于预设时间单元。

其中预设单位时间可以根据实际需求进行设定,其可以是一个具体的数值,也可以是一个取值范围,本发明并不做限制。可以理解的是,由于每一帧上的持续时间都是基于音视频流具体情况而设定的,在切片的过程中,并不一定是恰好对应到某一帧,在这种情况下,可以设定一个取值方式来进行处理,例如选取离截取点最近的帧作为切片的结束帧,本发明亦不做限制。

步骤S20,根据时间数据为所述切片创建播放序列号。

具体而言,时间数据包含切片中的第一帧的流时间戳。创建播放序列号的具体方法包含基于函数计算得出播放序列号,例如,在本发明的一具体实施例中,设定函数计算公式为:

F(x)=t(x)-t(x-1)+F(x-1)

其中x为切片的编号,F(x)为第x个切片的播放序列号,t(x)表示第x个切片中第一帧的流时间戳,其中F(0)可取值为系统当前时间。

创建的播放序列号用于确定切片的播放顺序,通过该方法创建的切片播放序列号非常直观的体现了各切片的播放序列和具体时间点,后续在播放过程中,可直接按照该播放序列号来进行播放,并且可基于播放序列号进行异常判断,后续将会进行详细说明。

在本发明的一些较佳实施例中,可以通过设置权值和加入误差范围的方法对函数进行完善,使得创建的播放序列号更贴切实际,例如F(x)=At(x)-Bt(x-1)+F(x-1)+C,其中A、B为权值,C为系统偏置误差,可以理解的是A、B、C的具体取值可根据系统设计的实际情况进行调整,本发明并不作限制。

值得注意的是,本发明也可基于其他方法创建播放序列号,例如可直接根据流时间戳来设定播放序列号,或基于其他时间数据创建,只要播放序列号能在时间上体现出各切片相互之间的实时关系即可。

由于流媒体文件的传输过程中可能会受网络状况影响而出现数据丢失的情况,而若不及时识别出数据丢失的发生,则可能会影响到播放序列号的创建,使得后续在播放过程中,无法正确的请求到播放序列号。

在本发明的一较佳实施例中,在创建播放序列号时,先判断是否需要校准,若需要校准,则根据当前系统时间来创建当前切片的播放序列号,若不需要校准,则基于前述方法来进行创建。

判断是否需要校准的方法包含确认当前切片与上一切片之间是否存在数据丢失,若存在则判断为需要校准。

具体而言,可基于帧的流时间戳来进行判断是否出现数据丢失,正常情况下,相邻切片的相邻帧的流时间戳的差值应为前一帧的持续时间,而这个持续时间一般都会在一个合理范围之内,那么可通过判断当前切片中的第一帧与上一切片的尾帧的流时间戳的差值是否在一合理范围内,来确认在当前切片和上一切片之间是否发生数据丢失的情况。本发明的其他实施例中,也可以通过相邻切片的第一帧的流时间戳的差值是否存在一个合理范围内来判断数据是否发生丢失。

在确认发生了数据丢失后,若还采用原先的方法计算出的播放序列号,那么当前切片的播放序列号与上一切片的播放序列号之间会出现空缺范围,后续播放过程中可能会因为请求刚好落在该空缺范围中,而出现请求不到资源的情况。所以在确认发生了数据丢失后,需经过对播放序号进行校准,来填补空缺范围,避免出现播放请求不到资源的情况。由于播放序列号的创建本来就是基系统时间和切片播放时间来确认的,所以,可直接基于当前系统时间来对当前播放序列号进行校准。

步骤S30,分别存储所述切片及所述切片的播放序列号,并建立所述切片与其播放序列号之间的映射关系。

如图2所示,图2绘示本发明实施例中流媒体文件处理过程示意图。经过步骤S10和S20的处理,流媒体文件A被分割成多个切片a1,a2,...an,a(n+1)...,并且每个切片都有相应的播放序列号F(1),F(2),...F(n),F(n+1)...,而该些切片和播放序列号将分别存储在不同的存储分区D1,D2,建立切片与播放序列号之间的映射关系R1,R2,...,Rn,R(n+1)。

在播放请求时,播放器先确认请求资源的播放序列号,通过映射关系找到相应的切片,并对切片进行下载。由于切片下载需要一定的时间,对切片和播放序列号进行分区存储,将对播放序列号的操作和切片的操作独立开来,可在多个请求并发时,减少等待时间。

根据上述步骤S10至S30所述的流媒体文件处理方法,完全基于时间特性对流媒体文件进行切片并创建播放序列号,并及时对发生数据丢失时进行播放序列号的校准,使得播放过程中,可直接基于播放序列号进行异常处理。以下将对经过上述方法处理后的流媒体文件的播放方法进行说明。

请参照图3,图3绘示本发明一较佳实施例提供的流媒体文件播放方法流程图。如图3所示,本实施例所提供的流媒体文件播放方法包含步骤:

S101,获取最新的播放序列号。其中最新的播放序列号为最新创建完成并存储的播放序列号。

S102,基于当前播放切片的播放序列号和最新的播放序列号判断是否出现卡顿,若出现卡顿,则根据播放延时和最新播放序列号确定下一个播放序列号,若未出现卡顿,则按播放序列号的顺序确定下一个播放序列号,即当前播放切片的播放序列号的下一个播放序列号。

具体而言,基于流媒体文件的传输特性,播放当前切片的同时,也在下载下一播放切片,在理想的网络环境中,最新创建的播放序列号即为下一个播放切片的播放序列号,但在现实的网络环境中,传输网络会发生抖动,使得播放器无法及时获取资源,出现画面卡顿。

针对这一情况,可先判断当前播放是否出现卡顿来确定下一个播放切片的播放序列号。具体的,基于当前播放切片的播放序列号和最新的播放序列号判断是否出现卡顿的方法包含计算当前播放切片的播放序列号和最新的播放序列号的数值差,根据数值差是否属于预设范围判断是否出现卡顿。

由于播放序列号是基于时间数据进行创建的,可直接用来确认切片播放的时间,当前播放切片的播放序列号与最新的播放序列号的数值差理论上来说,应该等于当前播放切片的播放时长,即在流媒体文件切片时的预设时间单位,再综合考虑不可避免的播放延时和系统误差,若该数值差在合理的预设范围内(例如,切片播放时长+播放延时+系统误差),那么表示当前播放顺利,并未出现卡顿,否则,判断为出现卡顿。其中播放延时是指在直播中由于推流端到客户端的数据需要处理和传播的时间,再加上播放器本身的设备原因,客户端所播放的画面与推流端的实时画面之间的延迟时长。

若确认没有出现卡顿时,可直接确认下一个播放序列号为记录中当前播放序列号的下一个。

若确认出现卡顿时,为了保证用户接收到的画面的实时性,应跳过因卡顿而延迟的切片,以保证当前播放画面的实时性,那么就需要对下一个播放切片进行调整,那么可根据播放延时和所述最新播放序列号确定下一个播放序列号,更进一步的,一并考虑系统误差,即下一个播放序列号的值等于最新播放序列号减去播放延时和系统误差。

在本发明的较佳实施例中,在步骤S20中,对流媒体文件进行切片后,记录包含关键帧的切片,在出现播放卡顿需要进行画面跳转时,确认好下一个播放序列号之后,再次确认该播放序列号对应的切片中是否包含关键帧,若不包含,可重新选取邻近的切片中包含关键帧的切片的播放序列号为下一个播放序列号。如此一来,可避免由于跳转到的切片中不包含关键帧而出现的花屏现象。

S103,根据下一个播放序列号下载相应所述切片。

经过步骤S102确认下一个播放序列号之后,可根据下一个播放序列号对相应的切片进行请求并下载,并在当前切片播放完毕后进行播放。

由此可见,通过本发明实施例所提供的流媒体文件处理方法,对流媒体文件按照时间单位来进行切片,并基于时间数据来为各个切片创建播放序列号,使得后续播放过程中,可以直接基于播放序列号来进行操作,选择适合的切片进行播放,从而实现在播放器发生卡顿时快速进行恢复。

此外,通过加入校准步骤,使得在文件数据发生丢失的情况下,及时调整播放序列号,使得后续在播放过程中能准确定位到正确的播放位置,而防止因数据缺失而出现播放序列号杂乱导致播放请求数据发生错误的情况。

更进一步的,在对流媒体文件进行切片之后,对包含关键帧的切片进行记录,方便在播放卡顿需要跳转时,可以快速定位到包含关键帧的切片进行播放,防止选择到没有关键帧的切片播放时出现的花屏现象,从而提升用户体验。

直播业务中,对实时性要求比较高,而由于网络原因而出现的数据丢失和播放卡顿是直播业务中亟待解决的问题,通过本发明所提供技术方案,可很好的对数据丢失进行识别,并采取相应的补救措施,也可以对播放卡顿进行快速恢复,从而更好的满足了直播业务的需求。

此外,本发明还提供一种直播系统。

请参照图4,图4绘示本发明一较佳实施例提供的直播系统结构示意图。如图4所示,直播系统1包含推流端10,服务器20和播放器30,其中服务器20分别与推流端10和播放的30连接。

具体而言,推流端10为音视频文件的源端,在具体的直播场景中,其可以为具体的主播端,也可以是主播端的平台服务器。在一场直播中,推流端10持续生成音视频文件,并以流式传播的方式将音视频流等流媒体文件传送给服务器20。

服务器20接收来自推流端10的流媒体文件,并对流媒体文件进行切片处理。

请参照图5,图5绘示本发明一较佳实施例所提供的直播系统中服务器结构示意图。服务器20包含文件处理模块21和存储模块22。

其中文件处理模块21接收流媒体文件,并按照一预设时间单位对该流媒体文件进行切片,根据时间数据为这些切片创建播放序列号,并建立所述切片与所述播放序列号之间的映射关系,并分别将该些切片、和各切片的播放序列号及映射关系发送给存储模块22。

具体而言,如前文所述,流媒体文件实质包含流式传播的音视频文件,音视频流中包含连续的帧,该些连续的帧可分为关键帧和中间帧,每一帧上都包含流时间戳和持续时间,以标记该帧在音视频流中的播放起始时间和播放长度。

文件处理模块21按照一预设时间单位对流媒体文件进行切片的方法包含,获取流媒体文件中每一帧的持续时间,基于持续时间及预设时间单位从流媒体文件中依次分割出各个切片。

其中预设单位时间可以根据实际需求进行设定,其可以是一个具体的数值,也可以是一个取值范围,本发明并不做限制。可以理解的是,由于每一帧上的持续时间都是基于音视频流具体情况而设定的,在切片的过程中,并不一定是恰好对应到某一帧,在这种情况下,可以设定一个取值方式来进行处理,例如选取离截取点最近的帧作为切片的结束帧,本发明亦不做限制。

文件处理模块21在分割出切片的同时,根据时间数据为该切片创建播放序列号。

具体而言,文件处理模块21为切片创建播放序列号,包含基于时间数据进行函数计算得出播放序列号,其中时间数据包含当前切片中的第一帧的流时间戳。例如,在本发明的一具体实施例中,设定函数计算公式为:

F(x)=t(x)-t(x-1)+F(x-1)

其中x为切片的编号,F(x)为第x个切片的播放序列号,t(x)表示第x个切片中第一帧的流时间戳,其中F(0)可取值为系统当前时间。

创建的播放序列号用于确定切片的播放顺序,文件处理模块21通过该方法创建的切片播放序列号非常直观的体现了各切片的播放序列和具体时间点,后续在播放过程中,可直接按照该播放序列号来进行播放,并且可基于播放序列号进行异常判断,后续将会进行详细说明。

在本发明的一些较佳实施例中,可以通过设置权值和加入误差范围的方法对函数进行完善,使得创建的播放序列号更贴切实际,例如F(x)=At(x)-Bt(x-1)+F(x-1)+C,其中A、B为权值,C为系统偏置误差,可以理解的是A、B、C的具体取值可根据系统设计的实际情况进行调整,本发明并不作限制。

值得注意的是,本发明也可基于其他方法创建播放序列号,例如可直接根据流时间戳来设定播放序列号,或基于其他时间数据创建,只要播放序列号能在时间上体现出各切片相互之间的实时关系即可。

由于流媒体文件的传输过程中可能会受网络状况影响而出现数据丢失的情况,而若不及时识别出数据丢失的发生,则可能会影响到播放序列号的创建,使得后续在播放过程中,无法正确的请求到播放序列号。

在本发明的一较佳实施例中,文件处理模块21在创建播放序列号时,先判断是否需要校准,若需要校准,则根据当前系统时间来创建当前切片的播放序列号,若不需要校准,则基于前述方法来进行创建。

判断是否需要校准的方法包含确认当前切片与上一切片之间是否存在数据丢失,若存在则判断为需要校准。

具体而言,可基于帧的流时间戳来进行判断是否出现数据丢失,正常情况下,相邻切片的相邻帧的流时间戳的差值应为前一帧的持续时间,而这个持续时间一般都会在一个合理范围之内,那么可通过判断当前切片中的第一帧与上一切片的尾帧的流时间戳的差值是否在一合理范围内,来确认在当前切片和上一切片之间是否发生数据丢失的情况。本发明的其他实施例中,也可以通过相邻切片的第一帧的流时间戳的差值是否存在一个合理范围内来判断数据是否发生丢失。

在确认发生了数据丢失后,若还采用原先的方法计算出的播放序列号,那么当前切片的播放序列号与上一切片的播放序列号之间会出现空缺范围,后续播放过程中可能会因为请求刚好落在该空缺范围中,而出现请求不到资源的情况。所以在确认发生了数据丢失后,需经过对播放序号进行校准,来填补空缺范围,避免出现播放请求不到资源的情况。由于播放序列号的创建本来就是基系统时间和切片播放时间来确认的,所以,可直接基于当前系统时间来对当前播放序列号进行校准。

存储模块22接收文件处理模块21发送来的数据,并将切片存储在第一分区22a,将播放序列号及映射关系存储在第二分区22b。

播放器30用于播放流媒体文件,在具体的直播场景中,为用户端,用户对直播节目发出请求后,播放器30根据用户需要从服务器20获取播放资源。

请参照图6并同时参照图5,图6绘示本发明一较佳实施例所提供的直播系统中播放器的结构示意图,如图5及图6所示。播放器30包含请求单元31和播放单元32。

其中,请求单元31根据用户请求从服务器20的存储模块22第二分区22b获取并选择用户请求节目的播放序列号,根据播放序列号及映射关系从第一分区下载切片进行播放,并将下载的切片传送给播放单元31进行播放。

在本发明的一较佳实施例中,请求单元31从第二分区22b中获取最新的播放序列号。其中最新的播放序列号为最新创建完成并存储的播放序列号。基于当前播放切片的播放序列号和最新的播放序列号判断是否出现卡顿,若出现卡顿,则根据播放延时和最新播放序列号确定下一个播放序列号,若未出现卡顿,则根据第二分区22b中播放序列号的顺序确定下一个播放序列号,即当前播放切片的播放序列号的下一个播放序列号。

具体而言,基于流媒体文件的传输特性,播放当前切片的同时,也在下载下一播放切片,在理想的网络环境中,最新创建的播放序列号即为下一个播放切片的播放序列号,但在现实的网络环境中,传输网络会发生抖动,使得播放器无法及时获取资源,出现画面卡顿。

针对这一情况,可先判断当前播放是否出现卡顿来确定下一个播放切片的播放序列号。具体的,基于当前播放切片的播放序列号和最新的播放序列号判断是否出现卡顿的方法包含计算当前播放切片的播放序列号和最新的播放序列号的数值差,根据数值差是否属于预设范围判断是否出现卡顿。

由于播放序列号是基于时间数据进行创建的,可直接用来确认切片播放的时间,当前播放切片的播放序列号与最新的播放序列号的数值差理论上来说,应该等于当前播放切片的播放时长,即在流媒体文件切片时的预设时间单位,再综合考虑不可避免的播放延时和系统误差,若该数值差在合理的预设范围内(例如,切片播放时长+播放延时+系统误差),那么表示当前播放顺利,并未出现卡顿,否则,判断为出现卡顿。其中播放延时是指在直播中由于推流端到客户端的数据需要处理和传播的时间,再加上播放器本身的设备原因,客户端所播放的画面与推流端的实时画面之间的延迟时长。

若确认没有出现卡顿时,可直接确认下一个播放序列号为记录中当前播放序列号的下一个。

若确认出现卡顿时,为了保证用户接收到的画面的实时性,应跳过因卡顿而延迟的切片,以保证当前播放画面的实时性,那么就需要对下一个播放切片进行调整,那么可根据播放延时和当前播放的切片的播放序列号确定下一个播放序列号,更进一步的,一并考虑系统误差,即下一个播放序列号的值等于最新播放序列号减去播放延时和系统误差。

在本发明的较佳实施例中,文件处理模块21对流媒体文件进行切片后,记录包含关键帧的切片,在出现播放卡顿需要进行画面跳转时,确认好下一个播放序列号之后,可再次确认该播放序列号对应的切片中是否包含关键帧,若不包含,可重新选取邻近的切片中包含关键帧的切片的播放序列号为下一个播放序列号。如此一来,可避免由于跳转到的切片中不包含关键帧而出现的花屏现象。

值得说明的是,图4所示的直播系统中主要用于对推流端、服务器和播放器之间的数据传输过程及各自功能进行示意说明,在直播中,推流端持续生成音视频流媒体文件,并实时传输给服务器,服务器对接收到的流媒体文件进行切片,并基于时间信息为切片创建播放序列号。服务器在创建播放序列号时可先判断是否发生数据丢失,若发生丢失则通过当前系统时间来调整播放序列号,从而避免播放器请求到丢失数据时无法响应的状况。播放器向服务器依次请求下载切片,并进行播放,并在每次请求切片时,根据播放序列号判断是否出现卡顿,并在出现卡顿时及时跳转,避免播放延时过长,而失去画面实时性。

请参照图7,图7绘示本发明另一较佳实施例提供的直播系统结构示意图。如如7所示,直播系统2包含推流端100,多个服务器200(图示中的200a,200b,...200n)和多个播放器300(300a1,300a2,...,300b1,300b2...)。

其中服务器200a,200b,...200n连接于推流端100,播放器300a1,300a2连接于服务器200a,播放器300b1,300b2连接于服务器200n,在本实施例中,播放器可通过与相应服务器的连接获取播放资源,服务器通过与推流端的连接获取该推流端的节目资源。本实施例中推流端、服务器和播放器的结构及功能与图4所示实施例中的推流端、服务器和播放器相同,故不再赘述。

值得说明的是,在本发明的其他实施例中,推流端和服务器之间、服务器与播放器之间的关系可为多对多的关系。即一个推流端连接多台服务器,一台服务器连接多个推流端和或一台播放器连接多台服务器,具体可根据实际业务需求和设备状况进行设定,本发明并不以此为限。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

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

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号