一种使流媒体服务器支持HLS协议的方法与流程

文档序号:14594531发布日期:2018-06-05 03:42阅读:275来源:国知局

技术领域

本发明涉及流媒体技术领域,尤其涉及一种使流媒体服务器支持HLS(HTTP Live Streaming,超文本直播流;由苹果公司提出的基于HTTP实现实时流媒体传输的协议)协议的方法及装置。



背景技术:

随着网络的发展,人们的日常生活与互联网的关系越来越紧密。由于互联网提供的视频资源的丰富性,越来越多的用户通过互联网点播电视剧、电影、综艺节目或其他音/视频信息。

通用的播放方法是用户选择需要获得的音/视频文件之后,从服务器中下载该音/视频文件,等到该文件全部下载完毕后,再在用户设备上对该音/视频文件进行播放。为了突破通用的播放方法需先将文件全部下载后才能播放的局限,开发人员提出了流媒体的概念,即将音/视频文件压缩后存储在服务器上,供用户边下载边播放。

现有技术中实现流媒体传输的协议主要有两种,一种是常规的流媒体直播协议(如RTMP(Real Time Messaging Protocol,实时消息传输协议)、RTSP(Real Time Streaming Protocol,实时流传输协议)、MMS协议(Microsoft Media Server Protocol,微软媒体服务器协议)等),另一种是HLS协议。使用常规的流媒体直播协议的方法中,流媒体服务器将音/视频文件作为一个整体进行存储。相对于常规的流媒体直播协议,支持HLS协议的流媒体服务器把整个音/视频文件分成一个个小的分段文件进行存储,由于分段文件的时长很短,因此,在音/视频文件的播放过程中,客户端可以选择从不同的音/视频源中以不同的速率下载同样的音/视频资源,进行码率的切换,以适应不同带宽条件下的播放。鉴于上述优势,HLS协议越来越广泛的应用于各种音/视频文件的播放。

为了使支持常规流媒体直播协议的流媒体服务器也能够支持HLS协议,现有技术的实现方法可以为:首先将支持常规的流媒体服务器里存储的媒体文件下载,并将下载的媒体文件切割成一个个的小的分段文件,然后将分段文件上传到流媒体服务器,接着将分段文件的文件信息写入一个m3u8(用文本方式对分割后的媒体文件进行描述)文件中,最后将生成的m3u8文件上传到该流媒体服务器。

在实现上述使流媒体服务器支持HLS协议的过程中,发明人发现现有技术中至少存在如下问题:运用上述现有技术,流媒体服务器虽然能够同时支持常规的流媒体直播协议和HLS协议,但是需要存储原始的大文件和切割后的分段文件两种代表同样信息的文件,增加了服务器存储空间的磁盘负载。



技术实现要素:

本发明的实施例提供一种使流媒体服务器支持HLS协议的方法及装置,用以在减少占用服务器存储空间的情况下,使得现有流媒体服务器支持基于HLS协议的实时流媒体传输。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,本发明实施例提供了一种使流媒体服务器支持HLS协议的方法,包括:获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数;媒体文件的特征参数至少包括:媒体文件的文件大小、媒体文件的文件时长;获取片段分割时长和片段分割大小;根据媒体文件的特征参数、片段分割时长、片段分割大小确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造索引文件中的索引项;虚拟片段的特征参数用于在媒体文件中唯一确定出虚拟片段。

第二方面,本发明实施例提供了一种流媒体服务器,包括:获取单元,用于获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数;媒体文件的特征参数至少包括:媒体文件的文件大小、媒体文件的文件时长;获取单元,还用于获取片段分割时长和片段分割大小;处理单元,用于根据媒体文件的特征参数、片段分割时长、片段分割大小确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造索引文件中的索引项;虚拟片段的特征参数用于在媒体文件中唯一确定出虚拟片段。

本发明实施例提供的一种使流媒体服务器支持HLS协议的方法及装置,获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数,并获取片段分割时长和片段分割大小;根据媒体文件的特征参数、片段分割时长、片段分割大小确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造索引文件中的索引项。通过将媒体文件虚拟的划分为虚拟片段,然后在索引文件中构造每一虚拟片段的索引项,这样使得流媒体服务器中存储的整个媒体文件有了对应的索引文件,在点播时只需要根据索引文件就能够分别获取到每一虚拟片段的内容,使得流媒体服务器能够支持HLS协议,同时由于索引文件相对于现有技术中将媒体文件进行分割后的分段文件相比需要的存储空间大大减少,所以较少了占用的服务器的存储空间。

附图说明

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

图1为本发明实施例提供的一种使流媒体服务器支持HLS协议的方法的流程示意图;

图2为本发明实施例提供的另一种使流媒体服务器支持HLS协议的方法的流程示意图;

图3为本发明实施例提供的另一种使流媒体服务器支持HLS协议的方法的流程示意图;

图4为本发明实施例提供的另一种使流媒体服务器支持HLS协议的方法的流程示意图;

图5为本发明实施例提供的一种流媒体服务器的功能示意图;

图6为本发明实施例提供的另一种流媒体服务器的功能示意图。

具体实施方式

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

需要说明的是,HLS协议是用于实时流媒体传输的协议,其特点是将媒体文件进行分段传输,传输的内容包括两部分,一部分是用于存储媒体数据的TS(Transport Stream,传输流;全称MPEG2-TS)媒体文件,另一部分是用于索引TS媒体文件的M3U8索引文件。终端可以通过M3U8文件获取到TS媒体文件。

需要说明的是,本发明所有实施例中的流媒体服务器是指支持常规媒体直播协议(如RTMP、RTSP、MMS协议等),同时不支持HLS协议的流媒体服务器。

本发明实施例提供了一种使流媒体服务器支持HLS协议的方法,如图1所示,包括:

101、获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数。

其中,媒体文件的特征参数至少包括:媒体文件的文件大小、媒体文件的文件时长。

需要说明的是,流媒体服务器的标识信息可以是流媒体服务器的主机号和端口号,还可以是能够唯一确定出流媒体服务器的其他标识,例如,域名、IP地址(Internet Protocol Address,网际协议地址)或节点标识等。本发明对此不做限制。

需要说明的是,流媒体服务器中可以存储有一个或多个媒体文件,且存储的媒体文件是整个文件。本发明的所有实施例都是从任意一个媒体文件的角度进行说明。

还需要说明的是,流媒体服务器的服务器标识用于在互联网中唯一标识一个服务器。媒体文件的文件标识用于在流媒体服务器中唯一标识一个媒体文件。媒体文件的文件大小是指该媒体文件所占的存储空间的大小。媒体文件的文件时长是指播放一遍该媒体文件所需的时间。

具体的,可以从流媒体服务器获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数,也可以是将流媒体服务器的服务器标识、流媒体服务器中存储的媒体文件的文件标识和特征参数存储至存储设备中,从该存储设备获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数。

102、获取片段分割时长和片段分割大小。

需要说明的是,将媒体文件虚拟划分为多个的虚拟片段,其中虚拟片段是对媒体文件逻辑上的划分,实际存储于流媒体服务器中的媒体文件仍然是一个整体的音/视频文件。片段分割时长是指将媒体文件进行划分时,除最后一个虚拟片段之外,其他所有虚拟片段所对应的时长,也就是说片段分割时长是除最后一个虚拟片段之外其他所有虚拟片段的平均时长。示例性的,若一个媒体文件的文件时长是130秒,若片段分割时长为3秒。那么根据片段分割时长可以将该媒体文件划分为44个虚拟片段,其中,前43个虚拟片段的时长都等于片段分割时长3秒,第44个虚拟片段的时长为1秒。

具体的,获取预先设定的片段分割时长,或者获取用户配置的片段分割时长。

需要说明的是,片段分割大小是指片段分割时长对应的文件的大小。片段分割大小是指将媒体文件进行划分时,除最后一个虚拟片段之外,其他所有虚拟片段所对应的文件的大小。

具体的,获取片段分割大小可以是获取预先设定的片段分割大小,也可以是获取用户配置的片段分割大小,还可以是根据媒体文件的特征参数及片段分割时长确定片段分割大小。

一般情况下,预设的片段分割大小为188字节的整数倍。

其中,根据媒体文件的特征参数及片段分割时长确定片段分割大小具体包括:首先根据媒体文件的文件大小和文件时长确定单位时间对应的文件大小,然后根据单位时间对应的文件大小和片段分割时长确定片段分割大小。

需要说明的是,由于划分媒体文件时的最小划分单位为字节(Byte),而根据上述方法算出的片段分割大小不一定是整数个字节,那么在划分虚拟片段时,虚拟片段的第一个字节和最后一个字节可能不是完整的一个字节,这两个字节不完整在播放虚拟片段时对用户观看感受的影响可以忽略不计。

为了消除每一个虚拟片段第一个字节与最后一个字节不是一个完整的字节的影响,可以将计算出的片段分割大小按照字节向下取整,例如,若计算出的片段分割大小为384.125字节,那么按照字节向下取整后得到384字节,那么可以确定分隔片段大小为384字节,那么除了最后一个虚拟片段之外的所有虚拟片段的大小都等于384字节,除最后一个虚拟片段之外的所有虚拟片段累计的误差,都可在最后一个字节进行修正。为了消除每一虚拟片段第一个字节与最后一个字节不是一个完整的字节的影响,还可以在计算出每一字节的结束位置时,按照结束位置的整数部分将字节数加一或者减一,以对每一虚拟片段的第一个字节或者最后一个字节的误差进行修正,例如,若根据计算的片段大小计算出某一虚拟片段的结束位置为第122.875字节,那么按照四舍五入,将该虚拟片段的结束位置设置为第123字节。

需要说明的是,在获取预先设定的片段分割大小或用户配置的片段分割大小得到片段分割大小的情况下,步骤101与步骤102没有先后顺序,可以先执行步骤101,再执行步骤102;也可以先执行步骤102,再执行步骤101;还可以同时执行步骤101和步骤102,本发明对此不作限制。在根据媒体文件的特征参数及片段分割时长确定片段分割大小的情况下,必须先执行步骤101和步骤102中的“获取片段分割时长”,然后才能获取片段分割大小,但是步骤101和步骤102中“获取片段分割时长”之间没有先后顺序。

103、根据媒体文件的特征参数、片段分割时长、片段分割大小确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造索引文件中的索引项。

其中,虚拟片段的特征参数用于在媒体文件中唯一确定出虚拟片段。

需要说明的是,在构造索引文件中的索引项前,还需要创建索引文件并写入基础字符串。索引文件分为基础字符串是索引文件的格式所要求的字符串。

需要说明的是,可以先计算媒体文件中所有虚拟片段的特征参数,并将每一虚拟片段的特征参数进行存储,然后根据流媒体服务器的服务器标识、媒体文件的文件标识和存储的每一虚拟片段的特征参数的构造索引文件;也可以在每计算出一个虚拟片段的特征参数时,就在索引文件中添加该虚拟片段对应的索引项。

需要说明的是,为了唯一确定出一个虚拟片段,所以需要的参数有虚拟片段在媒体文件中的具体位置,媒体文件在服务器中的标识以及存储该媒体文件的服务器在网络中的标识。M3U8文件中使用URL(Uniform Resource Locator, 统一资源定位符)语句构造索引项,其中URL的一般形式是:<URL的访问方式>://<主机>:<端口>/<路径>。

需要说明的是,每一虚拟片段的特征参数包括:每一虚拟片段的片段时长、起始位置和结束位置。相应的,步骤103可以通过如下步骤实现:

S1、初始化虚拟片段的起始位置。

需要说明的是,虚拟片段的起始位置就是需要配置相应索引项对应文件片段的相对于整个文件的位置。一般以整个文件的首地址为0进行偏移。

具体的,在需要制作媒体文件的整体对应的索引文件的情况下,初始化虚拟片段的起始位置相对于整个媒体文件的偏移量为0。所以一般情况下,此时会将该虚拟片段的起始位置设置为0。

S2、判断虚拟片段是否为媒体文件中的最后一个虚拟片段。

需要说明的是,由于需要根据固定的片段分割大小对文件进行划分,所以可能最后划分的一个虚拟片段的大小不等于片段分割大小,相应的,该虚拟片段的时间也可能不等于片段分割时长,那么最后一个虚拟片段的相关参数的确定方法与其他虚拟片段的参数的确定方法不同,所以需要判断当前等待处理的虚拟片段是否为最后一个虚拟片段。

需要说明的是,根据判断的结果不同,执行不同的步骤。若虚拟片段不是媒体文件中的最后一个虚拟片段,则执行步骤S3; 若虚拟片段是媒体文件中的最后一个虚拟片段,则执行步骤S4。

S3、若虚拟片段不是媒体文件中的最后一个虚拟片段,则根据虚拟片段的起始位置及片段分割大小确定虚拟片段的结束位置,将片段分割时长确定为虚拟片段的片段时长,根据流媒体服务器的服务器标识、媒体文件的文件标识和虚拟片段的特征参数构造索引文件中虚拟片段对应的索引项,并更新虚拟片段的起始位置,跳转至判断虚拟片段是否为媒体文件中的最后一个虚拟片段。

需要说明的是,在准备计算特征参数的虚拟片段不是最后一个虚拟片段的情况下,那么这个虚拟片段的片段时长就等于片段分割时长,这个虚拟片段的大小就等于片段分割大小。

需要说明的是,若该虚拟片段是第一个划分的虚拟片段,那么该虚拟片段的起始地址就是初始化时虚拟片段的起始位置;若该虚拟片段不是第一个划分的虚拟片段,那么该虚拟片段的起始位置已经在它前一个虚拟片段划分时确定。

具体的,将虚拟片段的起始位置加上片段分割大小后减一确定为虚拟片段的结束位置,即虚拟片段的结束位置=虚拟片段的起始位置+片段分割大小-1(字节),并且虚拟片段的片段时长=片段分割时长,然后按照索引项的构造规则,根据媒体服务器的服务器标识、媒体文件的文件标识和虚拟片段的特征参数在索引文件中添加该虚拟片段对应的索引项,此时当前虚拟片段的索引项构造完毕,然后就跳到下一虚拟片段,具体为更新虚拟片段的起始地址为虚拟片段的结束地址加上片段分割大小,然后跳装置步骤S2,继续判断下一虚拟片段是否为最后一个虚拟片段。

S4、若虚拟片段是媒体文件中的最后一个虚拟片段,则根据媒体文件的文件大小确定虚拟片段的结束位置,根据媒体文件的特征参数和虚拟片段的起始位置确定虚拟片段的片段时长,根据流媒体服务器的服务器标识、媒体文件的文件标识和虚拟片段的特征参数构造索引文件中虚拟片段对应的索引项。

需要说明的是,在准备计算特征参数的虚拟片段是最后一个虚拟片段的情况下,那么这个虚拟片段的片段时长和片段大小需要根据相关参数具体确定。

具体的,将媒体文件的文件大小对应的值确定为虚拟片段的结束位置,然后根据媒体文件的大小和虚拟片段的起始位置确定最后一个虚拟片段包含多少字节,接着根据媒体文件的文件大小和文件时长确定每一字节所需时长,最后根据最后一个虚拟片段包含的字节数目和每一字节所需时长确定最后一个虚拟片段的片段时长。接着按照索引项的构造规则,根据媒体服务器的服务器标识、媒体文件的文件标识和虚拟片段的特征参数在索引文件中添加该虚拟片段对应的索引项,此时所有虚拟片段的索引项构造完毕。

需要说明的是,判断最后一个虚拟片段的片段时长的方法还可以是将媒体文件的文件时长减去除最后一个虚拟片段外所有虚拟片段的片段时长得到的结果,确定为最后一个虚拟片段的片段时长。

需要说明的是,由于初始化虚拟片段的起始位置时将第一个虚拟片段的起始位置相对于整个媒体文件的偏移量设置为0,所以此时能够将最后一个虚拟片段的结束位置设置为媒体文件大小所对应的值。若第一个虚拟片段的起始位置设置N,那么最后一个虚拟片段的结束位置等于N+媒体文件大小所对应的值。

本发明实施例提供了一种使流媒体服务器支持HLS协议的方法,获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数,并获取片段分割时长和片段分割大小;根据媒体文件的特征参数、片段分割时长、片段分割大小确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造索引文件中的索引项。通过将媒体文件虚拟的划分为虚拟片段,然后在索引文件中构造每一虚拟片段的索引项,这样使得流媒体服务器中存储的整个媒体文件有了对应的索引文件,在点播时只需要根据索引文件就能够分别获取到每一虚拟片段的内容,使得流媒体服务器能够支持HLS协议,同时由于索引文件相对于现有技术中将媒体文件进行分割后的分段文件相比需要的存储空间大大减少,所以较少了占用的服务器的存储空间。

本发明实施例提供了一种使流媒体服务器支持HLS协议的方法,如图2所示,包括:

201、获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数。

其中,媒体文件的特征参数至少包括:媒体文件的文件大小、媒体文件的文件时长。

具体的,可参考步骤101,在此不再赘述。

202、获取片段分割时长和片段分割大小。

具体的,可参考步骤102,在此不再赘述。

203、初始化虚拟片段的起始位置,并根据媒体文件的文件时长初始化剩余播放时长。

需要说明的是,剩余播放时长就是该媒体文件播放至一个虚拟片段时,播放该媒体文件剩下内容所需的时长。

具体的,初始化虚拟片段的起始位置的方法可参考步骤103的S1,在此不再赘述。

具体的,在构造媒体文件的全部内容的索引文件时,第一个虚拟片段对应的剩余播放时长确定为媒体文件的文件时长。

204、判断剩余播放时长是否小于或等于片段分割时长。

需要说明的是,步骤204是判断当前虚拟片段是否为最后一个虚拟片段的一种方法,还可以用其他方法,例如根据剩余未划分的媒体文件大小和分割片段的大小判断。本发明对此不做限制。

需要说明的是,在获取片段分割大小时,如果采用了根据媒体文件的特征参数及片段分割时长确定片段分割大小的方法,并且为了消除每一虚拟片段第一个字节与最后一个字节不是一个完整的字节的影响,将计算出的片段分割大小按照字节向下取整,那么由于除最后一个虚拟片段外的其他虚拟片段的片段大小小于分割时长实际应该对应的片段大小,所以可能会出现当剩余时间小于片段分割时长,但是还未划分的文件大小大于片段分割大小的情况,此时需要根据剩余播放时长和片段分割时长判断是否为最后一个虚拟片段。

205、若剩余播放时长大于片段分割时长,则根据虚拟片段的起始位置及片段分割大小确定虚拟片段的结束位置,将片段分割时长确定为虚拟片段的片段时长,根据流媒体服务器的服务器标识、媒体文件的文件标识和虚拟片段的特征参数构造索引文件中虚拟片段对应的索引项,并更新虚拟片段的起始位置和播放文件剩余时长,跳转至判断虚拟片段是否为媒体文件中的最后一个虚拟片段。

具体的,根据虚拟片段的起始位置及片段分割大小确定虚拟片段的结束位置,将片段分割时长确定为虚拟片段的片段时长,根据流媒体服务器的服务器标识、媒体文件的文件标识和虚拟片段的特征参数构造索引文件中虚拟片段对应的索引项,并更新虚拟片段的起始位置,跳转至判断虚拟片段是否为媒体文件中的最后一个虚拟片段的方法,可参考步骤103中的S3,在此不在赘述。

需要说明的是,由于除最后一个虚拟片段外,其他虚拟片段的时长都等于片段分割时长,所以具体的更新播放文件剩余时长为当前剩余时长减去片段分割时长。

206、若剩余播放时长小于或等于片段分割时长的情况下,则根据媒体文件的文件大小确定虚拟片段的结束位置,根据媒体文件的特征参数和虚拟片段的起始位置确定虚拟片段的片段时长,根据流媒体服务器的服务器标识、媒体文件的文件标识和虚拟片段的特征参数构造索引文件中虚拟片段对应的索引项。

具体的,可参考步骤103中的S4,在此不在赘述。

本发明实施例提供了一种使流媒体服务器支持HLS协议的方法,获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数,并获取片段分割时长和片段分割大小;根据媒体文件的特征参数、片段分割时长、片段分割大小确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造索引文件中的索引项。通过将媒体文件虚拟的划分为虚拟片段,然后在索引文件中构造每一虚拟片段的索引项,这样使得流媒体服务器中存储的整个媒体文件有了对应的索引文件,在点播时只需要根据索引文件就能够分别获取到每一虚拟片段的内容,使得流媒体服务器能够支持HLS协议,同时由于索引文件相对于现有技术中将媒体文件进行分割后的分段文件相比需要的存储空间大大减少,所以较少了占用的服务器的存储空间。

本发明实施例了一种使流媒体服务器支持HLS协议的方法,此时,用户点播的是媒体文件中的部分,可以不用构造媒体文件的所有内容对应的索引文件,只构造点播部分对应的索引文件。相应的如图3所示,包括:

301、获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数。

其中,媒体文件的特征参数至少包括:媒体文件的文件大小、媒体文件的文件时长。

具体的,可参考步骤101,在此不再赘述。

302、获取播放文件的起始时间和结束时间。

其中,播放文件为媒体文件中的部分或全部。

需要说明的是,在用户只对媒体文件中的部分文件进行点播时,媒体文件中用户点播的部分被叫做播放文件,可以只对该部分文件制作索引文件。在用户使用HLS协议进行点播时,只能够对有索引文件的媒体文件中的部分文件进行点播。

需要说明的是,播放文件的起始时间和结束时间的值在0与媒体文件的文件时长之间。

具体的,可以将媒体文件分为几部分,每一部分都可以作为一个播放文件,此时可以从流媒体服务器获取播放文件的起始时间和结束时间。也可以是用户只点播该媒体文件的一部分,此时从终端获取播放文件的起始时间的结束时间。

需要说明的是,一般情况下用户只设定点播的起始时间,所以此时,可以默认结束时间是媒体文件的文件时长。

需要说明的是,在播放文件是媒体文件的全部的情况下,默认播放文件的起始时间为0,播放文件的结束时间为媒体文件的文件时长。

303、根据媒体文件的特征参数和播放文件的起始时间和结束时间确定播放文件的起始位置与结束位置。

具体的,首先根据媒体文件的文件大小和文件时长确定单位时间对应的文件大小,然后根据单位时间对应的文件大小和播放文件的起始时间确定播放文件的起始位置,并根据单位时间对应的文件大小和播放文件的结束时间确定播放文件的结束位置。

需要说明的是,上述具体实现的方式是将媒体文件的首地址的偏移量设置为0进行计算。若设置媒体文件的首地址的偏移量为M,相应 的,播放文件的起始位置和结束位置分别在上述计算的基础上加M。

304、获取片段分割时长和片段分割大小。

具体的,可参考步骤102,在此不再赘述。

305、根据媒体文件的特征参数、播放文件的起始时间和结束时间、片段分割时长、片段分割大小、播放文件的起始位置与结束位置确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造媒体文件中播放文件的索引文件的索引项。

需要说明的是,此时除了初始化虚拟片段的起始位置为播放文件的起始位置、以及判断虚拟片段是否为播放文件中的最后一个虚拟片段,其他都可参考步骤103,在此不再赘述。

本发明实施例提供了一种使流媒体服务器支持HLS协议的方法,获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数,获取播放文件的起始时间和结束时间并计算出播放文件的启示起始位置和结束位置,然后获取片段分割时长和片段分割大小;根据媒体文件的特征参数、播放文件的起始时间和结束时间、片段分割时长、片段分割大小、播放文件的起始位置与结束位置确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造媒体文件中播放文件的索引文件的索引项。通过将媒体文件中的播放文件虚拟的划分为虚拟片段,然后在索引文件中构造每一虚拟片段的索引项,这样使得流媒体服务器中媒体文件中的播放文件有了对应的索引文件,在点播时只需要根据索引文件就能够分别获取到每一虚拟片段的内容,使得流媒体服务器能够支持HLS协议同时由于索引文件相对于现有技术中将媒体文件进行分割后的分段文件相比需要的存储空间大大减少,所以较少了占用的服务器的存储空间。

进一步的,如图4所示,在构造媒体文件的索引文件方法的基础上,还包括如图4所示的查找流程。包括:

401、获取终端的点播指令。

其中,点播指令用于点播流媒体服务器中存储的媒体文件。

需要说明的是,可以先执行步骤401获取点播指令,然后临时动态的构造索引文件;也可以在执行步骤401获取点播指令之前,就已经为流媒体服务器中的媒体文件构造了索引文件。本发明对此不做限制。但是步骤402的执行一定是在构造了需要点播的媒体文件的索引文件后执行。

402、根据点播指令,利用索引文件从媒体文件中查找虚拟片段,并依次将虚拟片段发送至终端。

具体的,终端先访问点播指令指示的需要点播的媒体文件对应的索引文件,依次获得索引项并解析索引项,然后根据索引项中的服务器标识查找到对应的流媒体服务器,根据媒体文件的文件标识在流媒体服务器中查找到对应的媒体文件,根据虚拟片段的特征参数确定媒体文件中的虚拟片段,最后将该虚拟片段中的数据发送至终端。

本发明实施例提供了一种使流媒体服务器支持HLS协议的方法,在制作媒体文件的索引文件之外,还提供了根据索引文件查找媒体文件中的虚拟片段,并依次将虚拟片段发送至终端,这样通过点播指令能够使用索引文件,使流媒体服务器能够支持HLS协议。同时由于索引文件相对于现有技术中将媒体文件进行分割后的分段文件相比需要的存储空间大大减少,所以较少了占用的服务器的存储空间。

如图5所示,其为本发明实施例提供的一种流媒体服务器的功能示意图。参考图5所示,该流媒体服务器包括:获取单元501和处理单元502。

获取单元501,用于获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数。

其中,媒体文件的特征参数至少包括:媒体文件的文件大小、媒体文件的文件时长。

流媒体服务器的标识信息包括:流媒体服务器的主机号和端口号。

获取单元501,还用于获取片段分割时长和片段分割大小。

进一步的,获取单元501,具体用于根据媒体文件的特征参数及片段分割时长确定片段分割大小。

处理单元502,用于根据媒体文件的特征参数、片段分割时长、片段分割大小确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造索引文件中的索引项。

其中,虚拟片段的特征参数用于在媒体文件中唯一确定出虚拟片段。

具体的,每一虚拟片段的特征参数包括:每一虚拟片段的片段时长、起始位置和结束位置。

处理单元502,具体用于初始化虚拟片段的起始位置,以及判断虚拟片段是否为媒体文件中的最后一个虚拟片段;

在虚拟片段不是媒体文件中的最后一个虚拟片段的情况下,处理单元502具体用于根据虚拟片段的起始位置及片段分割大小确定虚拟片段的结束位置,将片段分割时长确定为虚拟片段的片段时长,根据流媒体服务器的服务器标识、媒体文件的文件标识和虚拟片段的特征参数构造索引文件中虚拟片段对应的索引项,并更新虚拟片段的起始位置,跳转至判断虚拟片段是否为媒体文件中的最后一个虚拟片段;

在虚拟片段是媒体文件中的最后一个虚拟片段的情况下,处理单元502具体用于根据媒体文件的文件大小确定虚拟片段的结束位置,根据媒体文件的特征参数和虚拟片段的起始位置确定虚拟片段的片段时长,根据流媒体服务器的服务器标识、媒体文件的文件标识和虚拟片段的特征参数构造索引文件中虚拟片段对应的索引项。

进一步的,处理单元502,还用于根据媒体文件的文件时长初始化剩余播放时长。

相应的,处理单元502,具体用于判断剩余播放时长是否小于或等于片段分割时长;

虚拟片段不是媒体文件中的最后一个虚拟片段包括:若剩余播放时长大于片段分割时长,则判断虚拟片段不是媒体文件中的最后一个虚拟片段;

虚拟片段是媒体文件中的最后一个虚拟片段包括:若剩余播放时长小于或等于片段分割时长,则判断虚拟片段是媒体文件中的最后一个虚拟片段;

处理单元502,还用于更新播放文件剩余时长。

进一步的,获取单元501,还用于获取播放文件的起始时间和结束时间;

其中,播放文件为媒体文件中的部分或全部。

相应的,处理单元502,还用于根据媒体文件的特征参数和播放文件的起始时间和结束时间确定播放文件的起始位置与结束位置。

处理单元502,具体用于根据媒体文件的特征参数、播放文件的起始时间和结束时间、片段分割时长、片段分割大小、播放文件的起始位置与结束位置确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造媒体文件中播放文件的索引文件的索引项。

在图5的基础上,进一步的,如图6所示,该流媒体服务器还包括:发送单元503。

相应的,获取单元501,还用于获取终端的点播指令。

其中,点播指令用于点播流媒体服务器中存储的媒体文件。

处理单元502,还用于根据点播指令,利用索引文件从媒体文件中查找虚拟片段。

发送单元503,用于依次将虚拟片段发送至终端。

本发明实施例提供了一种流媒体服务器,获取流媒体服务器的服务器标识及流媒体服务器中存储的媒体文件的文件标识和特征参数,获取播放文件的起始时间和结束时间并计算出播放文件的起始位置和结束位置,然后获取片段分割时长和片段分割大小;根据媒体文件的特征参数、播放文件的起始时间和结束时间、片段分割时长、片段分割大小、播放文件的起始位置与结束位置确定媒体文件中每一虚拟片段的特征参数,并根据流媒体服务器的服务器标识、媒体文件的文件标识和每一虚拟片段的特征参数构造媒体文件中播放文件的索引文件的索引项。通过将媒体文件中的播放文件虚拟的划分为虚拟片段,然后在索引文件中构造每一虚拟片段的索引项,这样使得流媒体服务器中媒体文件中的播放文件有了对应的索引文件,在点播时只需要根据索引文件就能够分别获取到每一虚拟片段的内容,使得流媒体服务器能够支持HLS协议,同时由于索引文件相对于现有技术中将媒体文件进行分割后的分段文件相比需要的存储空间大大减少,所以较少了占用的服务器的存储空间。

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

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

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

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

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

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