推送方法、装置、流媒体服务器及计算机可读存储介质与流程

文档序号:15521816发布日期:2018-09-25 19:39阅读:120来源:国知局

本发明涉及延时直播技术领域,特别是涉及一种推送方法、装置、流媒体服务器及计算机可读存储介质。



背景技术:

按照广电总局的相关规定:要求由群众参与的各类广播电视直播节目,一律延时20秒以上播出。电视直播节目延时直播的目的是为监播人员提供一定的监控时间,以防止不利于社会稳定和安全的画面及语言播出。由此可见延时直播的必要性。

目前的流媒体直播服务中,流媒体服务器在接收数据流中的数据后,不会对数据进行缓存,而是将数据直接推送出去,这里所说的数据流是指数据传输的流,数据流中的数据可以为音视频数据。流媒体服务器不进行延时直播,即不会对数据进行编辑和处理,但这样可能会因为数据不合法而违反相应的法律法规。



技术实现要素:

本发明实施例的目的在于提供一种推送方法、装置、流媒体服务器及计算机可读存储介质,以实现对数据进行延时直播。具体技术方案如下:

第一方面,为了达到上述目的,本发明实施例提供了一种推送方法,应用于流媒体服务器,方法包括:

根据流媒体服务器的系统时间和针对获得的数据流中的目标数据流预设的延播时长,判断目标数据流是否满足预设的推送条件;

如果满足,对已获得的目标数据流的数据包进行处理,推送处理后的数据包。

可选的,在根据流媒体服务器的系统时间和针对获得的数据流中的目标数据流预设的延播时长,判断目标数据流是否满足预设的推送条件的步骤之前,方法还包括:

获得目标数据流的数据包;

存储所获得的数据包,作为延播内容文件;

记录目标数据流对应的每一延播内容文件的延播时间,其中,延播时间是基于针对目标数据流设置的延播时长确定的;

根据流媒体服务器的系统时间和针对获得的数据流中的目标数据流预设的延播时长,判断目标数据流是否满足预设的推送条件,包括:

判断针对目标数据流所记录的延播时间中最小的延播时间是否大于或等于流媒体服务器的系统时间,当最小的延播时间大于等于流媒体服务器的系统时间,判定目标数据流满足预设的推送条件;

对已获得的目标数据流的数据包进行处理,推送处理后的数据包,包括:

按照所记录的延播时间的先后顺序,依次对延播内容文件进行处理,并推送处理后的延播内容文件。

可选的,在按照所记录的延播时间的先后顺序,依次对延播内容文件进行处理,并推送处理后的延播内容文件的步骤之前,方法还包括:

定时查询是否针对目标数据流设置了禁播时间段;

如果针对目标数据流设置了禁播时间段,获取目标数据流的禁播时间段;

按照所记录的延播时间的先后顺序,依次对延播内容文件进行处理,并推送处理后的延播内容文件的步骤,包括:

基于所获取的禁播时间段,判断是否推送目标延播内容文件,其中,目标延播内容文件为目标数据流对应的未被推送且未被禁播的延播内容文件中,延播时间最小的延播内容文件;

如果推送目标延播内容文件,对目标延播内容文件进行处理;

推送处理后的目标延播内容文件,在存在未推送且未禁播的延播内容文件的情况下,返回执行基于所获取的禁播时间段,判断是否推送目标延播内容文件。

可选的,在判断出不推送目标延播内容文件的情况下,方法还包括:

删除目标延播内容文件,并在存在未推送且未禁播的延播内容文件的情况下,返回执行基于所获取的禁播时间段,判断是否推送目标延播内容文件的步骤;

在推送处理后的目标延播内容文件之后,方法还包括:

删除目标延播内容文件。

可选的,对目标延播内容文件进行处理,包括:

解除目标延播内容文件的封装;

利用预设的目标协议对解除封装后的目标延播内容文件进行封装,作为处理后的目标延播内容文件。

可选的,推送处理后的目标延播内容文件,包括:

采用获得目标数据流的数据包时的码率,推送处理后的目标延播内容文件。

可选的,在推送处理后的目标延播内容文件之后,方法还包括:

获取针对目标播放端设置的参考协议,其中,目标播放端为播放目标延播内容文件对应的数据的播放端;

判断目标协议是否为参考协议;

如果目标协议为参考协议,将处理后的目标延播内容文件发送至目标播放端;

如果目标协议不为参考协议,将处理后的目标延播内容文件转换为利用参考协议封装的目标延播内容文件,并将转换后的目标延播内容文件发送至目标播放端。

可选的,每一延播内容文件的延播时间为该延播内容文件的接收时间与延播时长之和。

可选的,基于所获取的禁播时间段,判断是否推送目标延播内容文件的步骤,包括:

获得目标延播内容文件的接收时间和播放时长;

将目标延播内容文件的接收时间与播放时长之和,作为目标延播内容文件的截止时间;

判断目标延播内容文件的目标时间段是否与所获得的禁播时间段之间存在重叠,如果存在重叠,则判定不推送目标延播内容文件,如果不存在重叠,则判定推送目标延播内容文件;其中,目标时间段为从目标延播内容文件的接收时间开始到目标延播内容文件的截止时间结束的时间段。

第二方面,为了达到上述目的,本发明实施例还提供了一种推送装置,应用于流媒体服务器,装置包括:

第一判断模块,用于根据流媒体服务器的系统时间和针对获得的数据流中的目标数据流预设的延播时长,判断目标数据流是否满足预设的推送条件;

推送模块,用于在第一判断模块的判断结果为满足的情况下,对已获得的目标数据流的数据包进行处理,推送处理后的数据包。

可选的,装置还包括:

获得模块,用于获得目标数据流的数据包;

存储模块,用于存储所获得的数据包,作为延播内容文件;

记录模块,用于记录目标数据流对应的每一延播内容文件的延播时间,其中,延播时间是基于针对目标数据流设置的延播时长确定的;

第一判断模块,具体用于判断针对获得的数据流中的目标数据流所记录的延播时间中最小的延播时间是否大于或等于流媒体服务器的系统时间,当最小的延播时间大于等于流媒体服务器的系统时间,判定目标数据流满足预设的推送条件;

推送模块为文件推送模块,

文件推送模块,用于按照所记录的延播时间的先后顺序,依次对延播内容文件进行处理,并推送处理后的延播内容文件。

可选的,装置还包括:

查询模块,用于定时查询是否针对目标数据流设置了禁播时间段;

第一获取模块,用于在查询模块的查询结果为是的情况下,获取目标数据流的禁播时间段;

文件推送模块,包括:

判断子模块,用于基于所获取的禁播时间段,判断是否推送目标延播内容文件,其中,目标延播内容文件为目标数据流对应的未被推送且未被禁播的延播内容文件中,延播时间最小的延播内容文件;

处理子模块,用于在判断子模块的判断结果是的情况下,对目标延播内容文件进行处理;

推送子模块,用于推送处理后的目标延播内容文件,在存在未推送且未禁播的延播内容文件的情况下,返回执行判断子模块。

可选的,装置还包括:

删除模块,用于在判断子模块的判断结果为否的情况下,删除目标延播内容文件,并在存在未推送且未禁播的延播内容文件的情况下,返回执行判断子模块;

删除模块,还用于在推送子模块推送处理后的目标延播内容文件之后,删除目标延播内容文件。

可选的,处理子模块,具体用于解除目标延播内容文件的封装;利用预设的目标协议对解除封装后的目标延播内容文件进行封装,作为处理后的目标延播内容文件。

可选的,推送子模块,具体用于采用获得目标数据流的数据包时的码率,推送处理后的目标延播内容文件。

可选的,装置还包括:

第二获取模块,用于获取针对播放端设置的参考协议,其中,目标播放端为播放目标延播内容文件对应的数据的播放端;

第二判断模块,用于判断目标协议是否为参考协议;

发送模块,用于在第二判断模块的判断结果为是的情况下,将处理后的目标延播内容文件发送至目标播放端;在第二判断模块的判断结果为否的情况下,将处理后的目标延播内容文件转换为利用参考协议封装的目标延播内容文件,并将转换后的目标延播内容文件发送至目标播放端。

可选的,每一延播内容文件的延播时间为该延播内容文件的接收时间与延播时长之和。

可选的,判断子模块,具体用于获得目标延播内容文件的接收时间和时长;将目标延播内容文件的接收时间与播放时长之和,作为目标延播内容文件的截止时间;判断目标延播内容文件的目标时间段是否与所获得的禁播时间段之间存在重叠,如果存在重叠,则判定不推送目标延播内容文件,如果不存在重叠,则判定推送延播内容文件;其中,目标时间段为从目标延播内容文件的接收时间开始到目标延播内容文件的截止时间结束的时间段。

第三方面,为了达到上述目的,本发明实施例还提供了一种流媒体服务器,包括处理器和存储器,其中,

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现第一方面的推送方法。

第四方面,为了达到上述目的,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现第一方面的推送方法。

第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面的推送方法。

第六方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行第一方面的推送方法。

本发明实施例提供的推送方法、装置、流媒体服务器及计算机可读存储介质,可以通过流媒体服务器的系统时间和针对数据流预设的延播时间,在确定目标数据流满足推送条件的情况下,推送数据流中的数据包,可以实现对数据进行延播直播。当然,实施本发明的任一产品或方法必不一定需要同时达到以上的所有优点。

附图说明

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

图1为本发明实施例提供的推送方法的第一种流程示意图;

图2为本发明实施例提供的推送方法的第二种流程示意图;

图3为本发明实施例中推送延播流的功能的实现的示意图;

图4为本发明实施例中将延播内容文件放入延播推送缓冲区的原理示意图;

图5为本发明实施例提供的推送方法的第三种流程示意图;

图6为本发明实施例中延播直播技术实现的原理图;

图7为本发明实施例提供的推送装置的结构示意图;

图8为本发明实施例提供的流媒体服务器的结构示意图。

具体实施方式

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

为了解决现有的流媒体服务器不进行延时直播的问题,本发明实施例提供了一种推送方法、装置、流媒体服务器及计算机可读存储介质。

下面首先对本发明实施例提供的推送方法进行说明。

本发明实施例提供的推送方法优选应用于流媒体服务器,流媒体服务器的主要功能是以流式协议将音视频文件传输到客户端,供用户在线观看;也可接收实时视频流,再以流式协议直播给客户端。流式协议包括rtp(real-timetransportprotocol,实时传输协议)/rtsp(realtimestreamingprotocol,即时串流协定)、mms(microsoftmediaserver,微软媒体服务器)、rtmp(realtimemessageprotocol,实时信息传输协议)等。流媒体指以流方式在网络中传送音频、视频和多媒体文件的媒体形式。在本发明实施例中,流媒体可以是kvs(kingsoftvideoondemandservice,金山云点播服务)或kls(kingsoftlivevideoservice,金山云直播服务)中的流媒体服务器。

图1为本发明实施例提供的推送方法的第一种流程示意图,方法包括:

s101:根据流媒体服务器的系统时间和针对获得的数据流中的目标数据流预设的延播时长,判断目标数据流是否满足预设的推送条件。

目标数据流是指流媒体服务器所获得的数据流中的一个,数据流指的是音视频数据,一个数据流中可以包含多个数据包。示例性的,服务器a发送视频1到服务器b,可以认为服务器a传输给服务器b的就是视频流。本发明实施例所说的数据流是指需要延时直播的数据对应的流,例如,竞技游戏直播时,需要将直播画面发送给观众,此时发送给观众的画面对应的流不是这里所说的数据流,而为了防止作弊,竞技游戏对战双方是不能观看到实时画面,此时发送给对战双方的画面对应的流可以认为是这里所说的数据流。

流媒体服务器所获得的每一数据流均对应唯一的数据流标识,该数据流标识可以包括文字、数据、字母和字符中的至少一种。示例性的,数据流标识可以为用户的账号、用户录制视频所使用的应用名称和视频标识的组合。视频标识可以为视频的名称、也可以为视频的编号、也可以根据标识生成算法所生成的,在此不进行限定。

延播时长可以是延时直播服务需求方预先设置的,针对不同的数据流可以设置不同的延播时长,也可以是相同的延播时长。延播时长由延时直播服务需求方自己设置,可以满足不同的延时直播服务需求方的需求,为延时直播服务需求方提供高质量且人性化的服务。延时直播服务需求方是用户的服务方,用户的音视频数据在延时直播服务需求方的播放器中播放。在延时直播服务需求方确定对某个数据流进行延播处理、但并未设置延播时长的情况下,流媒体服务器可以将预设的延播时长作为该数据流的延播时长。需要强调的是,在一般情况下,延播时长一般会大于20秒,但不会大于5个小时,不然就变成了实况录像了,而不是延时直播。这里所说的延时服务需求方可以是上述所说的用户,也可以为上述用户提供直播服务的服务方。

在本发明实施例中,为了防止流媒体服务器的系统时间出现偏差对判断结果的影响,可以定时或实时对流媒体服务器的系统时间进行校正,示例性的,流媒体服务器的系统时间可以通过ntp(networktimeprotocol,网络时间协议)与ntp服务器的系统时间保持同步,具体的是,流媒体服务器获取ntp服务器的系统时间,在所获取的ntp服务器的系统时间的基础上增加从流媒体服务器到ntp的通信时延,作为流媒体服务器的系统时间。流媒体服务器的系统时间准确,可以保证推送时间的准确性,进而可以准确控制延播时长。

判断目标数据流是否满足预设的推送条件,可以理解为判断目标数据流的延播时长是否已经到时,也可以理解为判断开始获得目标数据流的时间与目标数据流的延播时长的总和是否大于流媒体服务器的系统时间。判断出目标数据流满足预设的推送条件,则执行s102。如果不满足,则等待直至目标视频流满足预设的推送时间。需要强调的是,如果针对一个数据流,判断该数据流满足推送条件,则针对该数据流不会再次执行s101。

s102:对已获得的目标数据流的数据包进行处理,推送处理后的数据包。

在本发明实施例中,在判断出目标数据流满足预设的推送条件的情况下,目标数据流可能存在断流和未断流两种状态,断流可以是在判断出目标数据流满足预设的推送条件之前,目标数据流的数据包已经传输完毕,也可以是判断出目标数据流满足预设的推送条件的同时,目标数据流的数据包传输完毕。未断流是指在判断目标数据流满足预设地推送条件时,目标数据流的数据包尚未传输完毕。示例性的,以数据流为视频流a为例,视频流a的延播时长是1个小时,如果流媒体服务器推送视频流a用时为30分钟,则在视频流a未满足预设的推送条件时,已经断流;如果流媒体服务器推送视频流a用时为1小时,则在视频流a满足预设的推送条件时,视频流a才断流;如果流媒体服务器推送视频流a用时为2小时,则在视频流a满足预设的推送条件时,视频流a尚未断流。

不管在目标数据流在满足预设条件时,目标视频流是否断流,均可以是按照获得目标数据流的数据包的先后顺序,对数据包进行处理,并推送处理后的数据包。数据流是否断流是说明数据流的状态,对数据流是否满足推送条件不存在影响。对数据包进行处理可以是数据包进行解封装,还可以对解封装后的数据包采用预先设置的封装格式再次进行封装。

现有技术中,流媒体服务器获得目标数据流的数据包之后,直接将数据包推送出去,变成了同期直播,而在本发明实施例中,流媒体服务器可以通过自身的系统时间和针对数据流预设的延播时间,在确定目标数据流满足推送条件的情况下,推送数据流中的数据包,从而实现对数据的延时直播。

图2为本发明实施例提供的推送方法的第二种流程示意图,方法包括:

s201:获得目标数据流的数据包。

在本发明实施例中,用户可以利用数据采集设备采集数据,这里所说的数据采集设备可以是采集音视频数据的设备,具体的,可以是专业设备,也可以是具有数据采集功能的移动设备。示例性的,移动设备可以为手机、平板电脑等等,在此不进行一一列举。

在传统的广电直播领域中,用户使用专业设备采集音视频数据,专业设备需要被部署在现场,采集现场的音视频数据。同时,用户使用专业设备提供的操作接口对延播内容(即音视频数据)进行编辑和裁剪。专业设备通常会将采集到的数据存储在磁盘内,并在延播时长到达后将数据发送出去。上述延时直播就是的实现主要依赖于专业设备,会因为专业设备价格昂贵增加延时直播的成本。而本发明实施例中可以使用专业设备采集数据,也可以使用非专业设备采集数据,从而降低了延时直播的成本。另外,上述延时直播技术是应用与传统的广电直播领域,而本发明实施例中,延时直播技术可以应用于互联网直播技术,因此,两种延时直播技术的应用范围不同。

数据采集设备在采集到数据之后,会将采集的数据进行编码压缩,编码是指在满足一定质量(信噪比的要求或主观评价得分)的条件下,以较少比特数表示图像或图像中所包含信息的技术。对数据进行编码后,就实现了对数据压缩。具体的,可以采用h.265或h.264对数据进行编码。h.264是一种高性能的视频编解码技术。h.265是继h.264之后所制定的新的视频编码标准,h.265标准围绕着现有的视频编码标准h.264,保留原来的某些技术,同时对一些相关的技术加以改进。

在对数据进行编码后,采用流式协议对编码后的数据进行封装,通过互联网将封装后的数据传输至流媒体服务器,可以理解为数据采集设备向流媒体服务器推流。推流是指通过流将数据推送至服务器,推流实际上是推送数据包。

s202:存储所获得的数据包,作为延播内容文件。

在本发明实施例中,采用流式协议对编码中的数据进行封装,是以gop(groupofpictures,画面组)为单位进行封装,可以理解为一个gop就是一组音/视频数据包。一个gop就是一组连续的画面。流媒体服务器获得数据包后,将所获得的数据包采用预设的协议格式保存数据包,具体的,可以将采用预设的协议格式保存后的数据包写入本地存储,作为延播内容文件,一个延播内容文件与一个gop对应。这里所说的预设的协议格式可以为mpeg(movingpictureexpertsgroup,动态图像专家组)-ts(transportstream,传输流)格式。

s203:记录目标数据流对应的每一延播内容文件的延播时间,其中,延播时间是基于针对目标数据流设置的延播时长确定的。

延时内容文件的延播时间可以理解为延播内容文件的实际播出时间,具体的,延播内容文件的延播时间可以是延播内容文件的首帧实际播出时间。在本发明实施例中,可以将延播内容文件的首帧实际播出时间作为该延播内容文件的文件名。

延播时间可以是延播内容文件首帧的采集时间与延播时长之和。延播内容文件中所包含的数据是以帧的形式存储的,每一帧数据在采集的时候均对应一个时间戳,所对应的时间戳就是该帧数据的采集时间,数据的采集时间是和数据封装在一起的,获得了数据包就获得了数据的采集时间。

数据经过互联网传输的时候,由于互联网的特性,可能会存在丢包重传,传输时间不确定的问题,因此,为了记录准确地延时时间,提供能精准控制延播时间的服务,还可以将为延播内容文件的接收时间与延播时长之和,作为该延播内容文件的延播时间,其中,延播内容文件的接收时间为接收到该延播内容文件对应的数据包时流媒体服务器的系统时间。

在本发明实施例中,流媒体服务器在执行s202-s203的同时,也会维护延播索引文件,流媒体服务器可以根据所记录的信息,判断是否推送数据流的文件,还可以获取数据流的状态。延播索引文件中记录了当前可用于延播推送的延播内容文件的信息,具体的,延播索引文件记录有每一延播内容文件的文件名、每一延播内容文件的播放时长,还记录有每一延播内容文件的存储位置,其中,延播内容文件的播放时长是该延播内容文件的最后一帧的时间戳与首帧的时间戳之间的差值。延播索引文件存储在本地,可以是以m3u8格式封装延播索引文件,即延播索引文件是m3u8文件,m3u8文件是指utf-8编码格式的m3u,其中,m3u是记录了一个索引纯文本文件,utf(unicodetransformationformat)-8是unicode的一种变长字符编码,unicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等。

延播索引文件还记录有延播内容文件对应的数据流的状态和预设的延播时长。数据流的状态包括未达延播时长并未断流、未达延播时长断流、已达延播时长并未断流以及已达延播时长断流这四种状态。未达延播时长并未断流是指数据流未满足推送条件,且数据采集设备的推流未结束。未达延播时长断流是指数据流未满足推送条件,但数据采集设备的推流已经结束。已达延播时长并未断流是指数据流满足推送条件,但数据采集设备的推流并未结束。已达延播时长断流是指数据流满足推送条件,且数据采集设备的推流已经结束。通过这四中状态可以清楚地反应了数据流的状态,流媒体服务器可以根据所记录的数据流的状态确定每一数据流的状态。延播时长也可以称之为延播时间窗口,延播索引文件中还记录中延播时间窗口状态,延播时间窗口的状态包括延播时间窗口已满和延播时间窗口未满。如果延播时长与数据流的接收时间之和大于或等于流媒体服务器的系统时间,则说明延播时间窗口已满,否则,说明延播时间窗口未满。延播时间窗口已满可以理解为数据流满足推送条件,延播时间窗口未满以理解为数据流不满足推送条件。延播时间窗口的状态可以用预设的状态标识表示,状态标识可以为文字、数字和字母中的至少一种。示例性的,数据流a的延播时间窗口状态用1标识,说明数据流a的延播时间窗口已满,如果数据流a的延播时间窗口状态用1之外其他标识或者未记录标识,则可以认为数据流a的延播时间窗口未满。

流媒体服务器中运行的lmss(livemediastreamingservice,直播流媒体服务)可以执行s201-s203的步骤。

s204:判断针对获得的数据流中的目标数据流所记录的延播时间中最小的延播时间是否大于或等于流媒体服务器的系统时间,如果是,执行s205,否则,结束。

最小的延播时间对应的数据包是所获得的目标数据流中的第一个数据包,如果最小的延播时间大于或等于流媒体服务器自身的系统时间,说明此时目标数据流的延播时间窗口已满,即目标数据流满足推送条件;否则,说明目标数据流不满足推送条件。在本发明实施例中,如果针对一个数据流记载了多个延播时间,只需要判断所记录的延播时间中最小的延播时间是否大于或等于流媒体服务器的系统时间,因为最小的延播时间大于或等于流媒体服务器的系统时间,说明目标数据流满足推送条件,则会依次推送处理后的延播内容文件,完成整个目标数据流对应的延播内容文件的推送操作。

流媒体服务器中运行的延播内容推送服务扫描并读取本地存储中的延播索引文件,具体的是,延播内容推送服务监听本地存储延播索引文件,一旦延播索引文件中的数据存在更改,则立即更新各延播任务中的延播内容文件列表。延播内容文件列表是延播内容推送服务提取延播索引文件中记录的延播内容文件的信息,并将所提取的信息记载在文件列表中得到的。需要说明的是,一个延播内容文件列表与一个数据流对应。延播内容推送服务可以是gout(uploadtoolkitpowerbygolang)是go语言实现的上传工具。go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。

延播内容推送服务还具有推送延播流的功能,推送延播流的功能的实现原理可以如图3所示,延播内容推送服务读取延播内容文件列表,判断该延播内容文件列表中延播时长是否已满,如果是,则推送处理后的延播内容文件,如果不是,超时等待推送处理后的延播内容文件。

s205:按照所记录的延播时间的先后顺序,依次对延播内容文件进行处理,并推送处理后的延播内容文件。

延播时间与接收延播内容文件对应的数据包的接收时间成正比,数据包的接收时间与数据包的采集时间成正比,按照延播时间的先后顺序,先从本地存储中读取延播时间最小的延播内容文件,对所读取的延播内容文件进行处理,推送处理后的延播内容文件;然后本地中读取延播时间次小的延播内容文件,对所读取的延播内容文件进行处理,推送处理后的延播内容文件,……,依此类推,直至目标数据流对应的延播内容文件全部推送完毕。

在本发明实施例中,为了减少网络抖动对播放端的画面产生的影响,可以先将从本地中读取延播时间比较小的延播内容文件,将读取的延播内容文件存储至延播推送缓冲区,延播推送缓冲区存储的所有延播内容文件的总时长在预设的范围内,然后将延播推送缓冲区的延播内容文件进行处理并推送,减少推送处理后的延播内容文件的等待时间。示例性的,图4为将延播内容文件放入延播推送缓冲区的原理示意图,延播推送缓冲区可以存储总时长5秒左右的延播内容文件,从本地中读取延播时间最小的延播内容文件,存储至延播推送缓冲区,然后,针对除已经存储至延播推送缓冲区的延播内容文件之外延播内容文件,判断当前延播时间最小的延播内容文件的播放时长是否大于目标时长,其中,目标时长是存储总时长与已存储的延播文件播放总时长之差,如果是,结束,如果不是,将该延播内容文件存储至延播推送缓冲区,然后执行针对除已经存储至延播推送缓冲区的延播内容文件之外延播内容文件,判断当前延播时间最小的延播内容文件的播放时长是否大于目标时长。延播内容推送服务对延播内容缓冲区中的延播内容文件进行处理,并对处理后的延播内容文件推送至lmss,即延播内容推送服务将延播流推送至lmss。需要说明的是,延播内容缓冲区的延播内容文件推送出去之后,会有新的延播内容文件存储至延播内容缓冲区。这样提前将本地将延播内容文件存储至延播推送缓冲区,可以减少读取延播内容文件的时间。

在本发明实施例中,流媒体服务器在判断除针对目标数据流所记录的延播时间中最小的延播时间是否大于或等于流媒体服务器的系统时间,则推送处理后的延播内容文件,从而实现对数据的延时直播。

图5为本发明实施例提供的推送方法的第三种流程示意图,方法包括:

s501:获得目标数据流的数据包。

s502:存储所获得的数据包,作为延播内容文件。

s503:记录目标数据流对应的每一延播内容文件的延播时间,其中,延播时间是基于针对目标数据流设置的延播时长确定的。

需要说明的是,s501-s503与上述实施例中的s201-s203相同在此不进行赘述。

s504:定时查询是否针对目标数据流设置了禁播时间段,如果是,执行s505,否则,结束。

审核人员会观看目标数据流所包含的数据,并检查数据的合法性,如果数据不合法,说明该数据的播出有可能违反相关法律法规,需要阻止该数据的播出。在确定该数据不合法之后,可以确定该数据的接收时间段,将所确定的接收时间段就是禁播时间段,具体的,可以确定不合法的数据的最小的接收时间和最大的接收时间,将最小的接收时间与最大的接收时间所在的时间段设置为禁播时间段。示例性的,确定时间在9点10分20秒-9点10分25秒之间的数据不合法,则将9点10分20秒-9点10分25秒设置为禁播时间段。一个数据流可以不存在禁播时间段,也可以存在一个禁播时间段,也可以存在多个禁播时间段,具体是根据数据流所包含的数据确定的。在对一个数据流设置了禁播时间段后,将所设置的禁播时间段存储至数据库中。该数据库可以是运行有lmds(livemediadispatchservice,直播媒体调度服务)的服务器。

数据库中存储的禁播时间段与数据流标识之间的关联关系,延播内容推送服务根据数据流的标识定定时从数据库中查询该数据流是否存在禁播时间段。禁播时间段会随着审核人员的观看而被设置,有可能上一次查询针对一个数据流未设置禁播时间段,下一次查询的时候有可能针对该数据流就设置了禁播时间段,为了避免因不合法的数据播出而违反相关的法律法规的情况的出现,需要定时查询针对一个数据流是否存在禁播时间。如果查询到针对目标数据流设置了禁播时间段,则执行s505,否则,从当前开始计时,当计时到达定时的时长,再次执行s504。

s505:获取目标数据流的禁播时间段。

根据目标数据流的数据流标识,从数据库中读取目标数据流的禁播时间段的。

s506:判断针对获得的数据流中的目标数据流所记录的延播时间中最小的延播时间是否大于或等于流媒体服务器的系统时间,如果是,执行s507,否则,结束。

s507:基于所获取的禁播时间段,判断是否推送目标延播内容文件,如果是,执行s508,如果否,则结束,其中,目标延播内容文件为目标数据流对应的未被推送且未被禁播的延播内容文件中,延播时间最小的延播内容文件。

在获取了禁播时间段之后,需要基于所获取时间段,根据目标延播内容文件的延播时间以及播放时间,判断是否推送目标延播内容文件,具体的判断方式可以包括以下步骤:

步骤a:获得目标延播内容文件的接收时间和播放时长。

目标延播内容文件的接收时间是目标延播内容文件对应的数据包的接收时间。目标延播内容文件的接收时间可以从延播索引文件或数据库中读取;也可以是计算得到的,具体的可以计算该目标延播内容文件的延播时间与延播时长的差值,作为目标延播内容文件的接收时间。

在本发明实施例中,可以从延播索引文件中获得目标延播内容文件的播放时长。

步骤b:将目标延播内容文件的接收时间与播放时长之和,作为目标延播内容文件的截止时间。

示例性的,目标延播内容文件为文件a,文件a的接收时间为9点30分30秒,文件a的播放时长为5秒,文件a的截止时间为9点30分35秒。

步骤c:判断目标延播内容文件的目标时间段是否与所获得的禁播时间段之间存在重叠,如果存在重叠,则判定不推送目标延播内容文件,如果不存在重叠,则判定推送目标延播内容文件;其中,目标时间段为从目标延播内容文件的接收时间开始到目标延播内容文件的截止时间结束的时间段。

在本发明实施例中,目标时间段是一个闭合的时间段,具体的,可以表示为[接收时间,截止时间]。禁播时间段也是一个闭合的时间段。判断目标延播内容文件的目标时间段索和所获得的禁播时间段是否存在重叠,可以理解为目标时间段是否与禁播时间段包含相同的数据。示例性的,目标时间段为9点30分30秒-9点30分35秒,禁播时间段为9点30分25秒-9点30分32秒,目标时间段与禁播时间段存在重叠,重叠的部分为9点30分30秒-9点30分32秒,判定不推送目标时间段对应的目标延播内容文件;如果禁播时间段为9点30分25秒-9点30分28秒,则目标时间段与禁播时间段不存在重叠,判定推送目标时间段对应的目标延播内容文件。

如果针对目标数据流的禁播时间段不止一个的情况下,可以对比目标时间段与每一禁播时间段是否存在重叠,或者,先从禁播时间段中挑选一个时间与目标时间段最接近的禁播时间段,再判断挑选出的禁播时间段与目标时间段是否存在重叠,如果存在,则不推送目标延播内容文件,否则,推送该目标延播内容文件。

s508:对目标延播内容文件进行处理。

在本发明实施例中,在确定目标延播内容文件的目标时间段不与禁播时间段重叠,则对目标延播内容文件进行处理,具体的对目标延播内容文件进行处理的方式为:

解除目标延播内容文件的封装;

利用预设的目标协议对解除封装后的目标延播内容文件进行封装,作为处理后的目标延播内容文件。

封装是将数据映射到某个封装协议的净荷中,然后填充对应协议的包头,形成封装协议的数据包。解封装,就是封装的逆过程,拆解协议包,处理包头中的信息,取出净荷中的数据。封装可以将数据包可靠和准确地传输至目的地,并且可以高效地利用传输资源。解封装是为了获取数据,按照实际需要对数据进行操作。

解封装是指逐层去掉协议控制信息的过程,是去掉目标延播内容文件所携带的协议的信息。示例性的,目标延播内容文件通过mpeg-ts协议封装得到的,目标延播内容文件中携带mpeg-ts协议的信息,将目标延播内容文件所协议的信息去掉,就是对目标延播内容文件解封装。对目标延播内容文件解除封装后,利用预设的目标协议对解除封装后的目标延播内容文件进行封装。

s509:推送处理后的目标延播内容文件,在存在未推送且未禁播的延播内容文件的情况下,执行s507。

当推送处理后的目标延播内容文件后,检测到目标数据流还存在未推送且未禁播的延播内容文件时,则执行s507,如果不存在未推送且未禁播的延播内容文件,则说明该目标数据流的所有延播内容文件已经推送结束。

这里所说的禁播的延播内容文件是指目标时间段与禁播时间段重叠的延播内容文件。在推送当前处理后的目标延播内容文件时,可能存在禁播的延播内容文件还存储在本地的情况,为了防止重复确定一个延播内容文件是否为禁播的延播内容文件,可以从未推送且未禁播的延播内容文件中选择目标延播内容文件。

在本发明实施例中,在判断出目标延播内容文件的目标时间段与禁播时间段不重叠的时间,推送处理后的目标延播内容文件,这样可以尽量避免因处理后的目标延播内容文件不合法而违反相关法律法规事件的发生。

为了防止推送数据过慢造成的播放端卡顿,或者为了防止推送数据过快造成的播放缓冲溢出丢帧,则需要采用获得目标数据流的数据包时的码率,推送处理后的目标延播内容文件。

采用获得目标数据流的数据包时的码率,推送处理后的目标延播内容文件,并不是说一定要采用获得目标流的数据包时相同的码率,推送处理后的目标延播内容文件。而是推送处理后的目标延播内容文件的码率与获得目标数据流的数据包时的码率尽量相同,即可以理解为模拟获得目标数据流的数据包时的码率,推送处理后的目标延播内容文件。

码率控制是在直播流中的推流端控制的,而延播流需要从本地中读取并推送,因此,码率可以说是由延播内容推送服务控制。这里所说的推流端就是延播内容推送服务,对于流媒体服务器来说,目标数据流就是直播流,流媒体服务器将目标数据流进行延播处理后,直播流变成了延播流,推送延播流。播放端就能获得该延播流,对于播放端来说所获得延播流就是直播流。

为了减少流媒体服务器的存储空间的浪费,同时为了将存储后续的延播内容文件,尽量避免最新的延播内容文件丢失,在判断出不推送目标延播内容文件的情况下,删除目标延播内容文件,并在存在未推送且未禁播的延播内容文件的情况下,返回执行基于所获取的禁播时间段,判断是否推送目标延播内容文件的步骤。

另外,在推送处理后的目标延播内容文件之后,删除目标延播内容文件。

删除目标延播内容文件的方式可以为根据延播索引文件或延播内容文件列表中记录的目标延播内容文件的存储位置,将本地中该存储位置中存储的目标延播内容文件删除。

为了满足不同的延播服务需求方的需求,发送给延播服务需求方的播放端的文件所使用的协议播放端预设的协议一致,因此,在推送处理后的目标延播内容文件之后,该方法还可以包括以下步骤:

步骤1:获取针对目标播放端设置的参考协议,其中,目标播放端为播放目标延播内容文件对应的数据的播放端。

目标播放端是播放目标延播内容文件对应的数据的播放端,即目标播放端播放目标延播内容文件对应的画面。目标数据流对应有数据流标识,在数据流标识包含延时直播需求方的标识的情况下,可以根据预先建立的延时直播需求方的标识与播放端关联关系,确定目标播放端,当然,还存在其他的方式确定目标播放端,在这里不进行一一列举。

延播内容推送服务将处理后的目标延播内容文件推送至lmss。在数据库中存储有延播服务需求方预先设置的目标播放端的参考协议的情况下,lmss可以从数据库中获取针对目标播放端设置的参考协议;在本地存储有存储有延播服务需求方预先设置的目标播放端的参考协议的情况下,lmss可以从本地中获取针对目标播放端设置的参考协议。当然,lmss还可以通过其他的方式获取参考协议。这里所说的参考协议是预先设置的、播放端所使用的协议。

参考协议可以为rtmp、http(hypertexttransferprotocol,超文本传输协议)+flv(flashvideo,流媒体格式)或hls。hls是一个由苹果公司提出的基于http的流媒体网络传输协议。

步骤2:判断目标协议是否为参考协议,如果是,执行步骤3,如果不是,执行步骤4。

目标协议是处理后的目标延播内容文件所使用的协议,具体的,将处理后的延播内容文件所携带的协议标识对应的协议作为目标协议,如果判断出目标协议为参考协议,则执行步骤3,否则,执行步骤4。

步骤3:将处理后的目标延播内容文件发送至目标播放端。

步骤3简单地理解可以是流媒体服务器通过cdn(contentdeliverynetwork,内容分发网络)系统将处理后的目标延播内容文件发送至目标播放端。目标播放端播放处理后的目标延播内容文件对应的音视频数据,具体的为:cdn系统从流媒体服务器处回源延播流,目标播放端从cdn系统中拉流。回源可以理解为目标播放端从cdn系统中拉流,cdn系统中如果没有存储延播流对应的处理后的延播内容文件,则从源站中的流媒体服务器获取。拉流是指从指定地址中拉取数据流。

步骤4:将处理后的目标延播内容文件转换为利用参考协议封装的目标延播内容文件,并将转换后的目标延播内容文件发送至播放端。

将处理后的目标延播内容文件转换为利用参考协议封装的目标延播内容文件,具体可以是对处理后的目标延播内容文件解封装,将封装后的目标延播内容文件利用参考协议进行封装。也可以利用预设的协议转换算法,转换封装目标延播内容文件所使用的协议。

在本发明实施例中,对封装目标延播内容文件的协议进行转换,可以满足不同的延时直播服务需求方的需求,还可以兼容互联网中的流媒体直播协议。

下面通过一个具体实例对基于发明实施例提供的推送方法的延时直播技术进行介绍。

如图6所示,pusher(数据采集设备)向流媒体服务器中的lmss推流,可以理解为lmss获得数据流中的数据包,流媒体服务器中运行有lmss和gout,流媒体服务器和lmds组成源站。lmss在获得数据流的第一个数据包之后,从lmds获取预先针对该数据流设置的延播时长,然后,lmss对数据包进行处理,获得延播内容文件,lmss将延播内容文件和延播索引文件保存至本地。gout读取延播索引文件中的延播内容文件的信息,将读取的信息存储至延播内容文件列表中,gout会定时读取lmds中存储的禁播时间段,在判断出延播内容文件列表中的延播时长已满,从本地读取延播内容文件,在基于禁播时间段判断出推送该延播内容文件后,对延播内容文件进行处理,并将处理后的延播内容文件推送至lmss,即gout向lmss推送延播流。cdn系统从流媒体服务器中回源延播流,puller(播放端)从cdn系统中拉流。

图7为本发明实施例提供的推送装置的结构示意图,该推送装置包括第一判断模块701和推送模块702,其中,

第一判断模块701,用于根据流媒体服务器的系统时间和针对获得的数据流中的目标数据流预设的延播时长,判断目标数据流是否满足预设的推送条件;

推送模块702,用于在第一判断模块701的判断结果为满足的情况下,对已获得的目标数据流的数据包进行处理,推送处理后的数据包。

现有技术中,流媒体服务器获得目标数据流的数据包之后,直接将数据包推送出去,变成了同期直播,而在本发明实施例中,流媒体服务器可以通过自身的系统时间和针对数据流预设的延播时间,在确定目标数据流满足推送条件的情况下,推送数据流中的数据包,从而实现对数据的延时直播。

在本发明的一种实施方式中,该装置还可以包括:

获得模块,用于获得目标数据流的数据包;

存储模块,用于存储所获得的数据包,作为延播内容文件;

记录模块,用于记录目标数据流对应的每一延播内容文件的延播时间,其中,延播时间是基于针对目标数据流设置的延播时长确定的;

第一判断模块701,具体用于判断针对获得的数据流中的目标数据流所记录的延播时间中最小的延播时间是否大于或等于流媒体服务器的系统时间,当最小的延播时间大于等于流媒体服务器的系统时间,判定目标数据流满足预设的推送条件;

推送模块702为文件推送模块,

文件推送模块,用于按照所记录的延播时间的先后顺序,依次对延播内容文件进行处理,并推送处理后的延播内容文件。

在本发明的一种实施方式中,该装置还可以包括:

查询模块,用于定时查询是否针对目标数据流设置了禁播时间段;

第一获取模块,用于在查询模块的查询结果为是的情况下,获取目标数据流的禁播时间段;

文件推送模块,包括:

判断子模块,用于基于所获取的禁播时间段,判断是否推送目标延播内容文件,其中,目标延播内容文件为目标数据流对应的未被推送且未被禁播的延播内容文件中,延播时间最小的延播内容文件;

处理子模块,用于在判断子模块的判断结果是的情况下,对目标延播内容文件进行处理;

推送子模块,用于推送处理后的目标延播内容文件,在存在未推送且未禁播的延播内容文件的情况下,返回执行判断子模块。

在本发明的一种实施方式中,该装置还可以包括:

删除模块,用于在判断子模块的判断结果为否的情况下,删除目标延播内容文件,并在存在未推送且未禁播的延播内容文件的情况下,返回执行判断子模块;

删除模块,还用于在推送子模块推送处理后的目标延播内容文件之后,删除目标延播内容文件。

在本发明的一种实施方式中,处理子模块,具体用于解除目标延播内容文件的封装;利用预设的目标协议对解除封装后的目标延播内容文件进行封装,作为处理后的目标延播内容文件。

在本发明的一种实施方式中,推送子模块,具体用于采用获得目标数据流的数据包时的码率,推送处理后的目标延播内容文件。

在本发明的一种实施方式中,该装置还可以包括:

第二获取模块,用于获取针对播放端设置的参考协议,其中,目标播放端为播放目标延播内容文件对应的数据的播放端;

第二判断模块,用于判断目标协议是否为参考协议;

发送模块,用于在第二判断模块的判断结果为是的情况下,将处理后的目标延播内容文件发送至目标播放端;在第二判断模块的判断结果为否的情况下,将处理后的目标延播内容文件转换为利用参考协议封装的目标延播内容文件,并将转换后的目标延播内容文件发送至目标播放端。

在本发明的一种实施方式中,每一延播内容文件的延播时间为该延播内容文件的接收时间与延播时长之和。

在本发明的一种实施方式中,判断子模块,具体用于获得目标延播内容文件的接收时间和时长;将目标延播内容文件的接收时间与播放时长之和,作为目标延播内容文件的截止时间;判断目标延播内容文件的目标时间段是否与所获得的禁播时间段之间存在重叠,如果存在重叠,则判定不推送目标延播内容文件,如果不存在重叠,则判定推送延播内容文件;其中,目标时间段为从目标延播内容文件的接收时间开始到目标延播内容文件的截止时间结束的时间段。

本发明实施例还提供了一种流媒体服务器,如图8所示,包括处理器801、存储器802,其中,

存储器802,用于存放计算机程序;

处理器801,用于执行存储器802上所存放的程序时,实现如下步骤:

根据流媒体服务器的系统时间和针对获得的数据流中的目标数据流预设的延播时长,判断目标数据流是否满足预设的推送条件;

如果满足,对已获得的目标数据流的数据包进行处理,推送处理后的数据包。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一的推送方法。

现有技术中,流媒体服务器获得目标数据流的数据包之后,直接将数据包推送出去,变成了同期直播,而在本发明实施例中,流媒体服务器可以通过自身的系统时间和针对数据流预设的延播时间,在确定目标数据流满足推送条件的情况下,推送数据流中的数据包,从而实现对数据的延时直播。

在本发明的又一实施例中,还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述实施例中任一的推送方法。

现有技术中,流媒体服务器获得目标数据流的数据包之后,直接将数据包推送出去,变成了同期直播,而在本发明实施例中,流媒体服务器可以通过自身的系统时间和针对数据流预设的延播时间,在确定目标数据流满足推送条件的情况下,推送数据流中的数据包,从而实现对数据的延时直播。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/流媒体服务器/计算机可读存储介质/计算机程序产品/计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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

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