一种HLS流媒体分片的拼接方法及系统技术方案

技术编号:14767329 阅读:220 留言:0更新日期:2017-03-08 11:44
一种HLS流媒体分片的拼接方法,包括步骤:建立M3U8文件;读取音视频数据并将读取的音视频数据封装成TS Packet;将TS Packet追加拼接形成TS大片段文件;判断追加拼接的TS Packet的时间片长是否达到第一预设时间,若达到,将第一预设时间的片长生成TS小片段文件;将TS小片段的数据信息及所在TS大片段的位置信息更新至TS大片段索引文件;判断TS大片段文件的拼接是否达到结束条件,若达到,则TS大片段文件拼接完成。由于直接将封装的TS Packet追加拼接成TS大片段文件,省去了单独的合并程序,极大地减少了进程数目,降低了系统资源占用率。

【技术实现步骤摘要】

本专利技术涉及OTT(OverTheTop)TV
,具体涉及一种HLS(HTTPLiveStreaming)流媒体分片的虚拟拼接方法及系统。
技术介绍
OTTTV是指通过公共互联网面向联网设备(电视、PC、移动终端)传输IP视频和互联网应用融合的一种服务,是以交互式音视频服务为主体,集互联网、多媒体通讯等多种技术为一体的服务集合体,可在任何时间、向任意地点的任意终端用户提供视频、资讯、游戏等各种服务。随着Apple公司iPhone、iPad、iPodtouch等终端的迅速普及,由其带来的HTTP实时流媒体技术成为了OTTTV的主流事实标准。标准HLS协议将视频切成连续、很短时长(我们此处假设10s)的MPEG-TS片段(为了区分我们称为小片段),并不断更新M3U8文件,M3U8文件是M3U格式文件的一种,其格式是utf-8格式,M3U格式的文件只是存储多媒体播放列表,提供了一个指向其他位置的音频视频文件的索引。有时,为了支持回看,需要在存储上存放较多的很长时间的小片段,这就容易导致存储上的小文件比较多,造成磁盘碎片,降低磁盘读写速度。为了解决这种问题,现有方法是采用将多个小片段进行合并的方式来减少小文件数量,例如可以将18个10s小片段合成一个3分钟的大片段。这样就解决了小文件存储带来的问题,由于合并TS小片段的同时生成了相应的索引文件,所以仍然支持回看功能。现有合并小片段的流程图如图1所示,具体方式是:先由转码器将视频切成连续、短时长的TS小片段,每个TS小片段由TSPaclet叠加而成,且TS小片段的时长为10s,将叠加成的TS小片段的文件名(后缀为.ts)存储至M3U8文件中,同时,将TS小片段进行临时存储,然后,根据利用Merger程序将临时存储的多个TS小片段合并成一个大片段,如,将18个TS小片段合并成一个3分钟时长的大片段,将合并的大片段的文件名和索引名更新至M3U8文件中,如,1454048928.ts和1454048928.idx,并将索引名更新至normal.idx中。但是这种方式存在如下问题:(1)需要Merger程序单独对多个小片段进行合并,耗费资源,而纵观整个过程,可以发现这种方式实际相当于进行了一些多余的切片工作。(2)Merger程序合并小片段的同时还需要将合并的大片段存储于M3U8中相应的三个不同的目录中,如,1454048928.ts、1454048928.idx和normal.idx三个不同目录,所以每一个Merger程序的进程同时会产生另外三个进程,如果有多个输出时,相应的会增加多个合并进程,但进程数以3倍速增加,过多的进程数极大占用了系统资源,严重影响了系统的稳定性,如果管理不好或任务启动过于频繁,容易导致进程失控。
技术实现思路
由于现有流媒体分片的合并技术需要增加相应的进程数目,而过多的进程数目严重影响了系统的稳定性,针对该问题,本申请提供一种HLS流媒体分片的虚拟拼接方法及系统。根据第一方面,一种实施例中提供一种HLS流媒体分片的虚拟拼接方法,包括步骤:建立M3U8文件,M3U8文件包括TS大片段文件和TS大片段索引文件;读取音视频数据并将读取的音视频数据封装成TSPacket;将TSPacket叠加拼接至TS大片段文件;判断叠加拼接的TSPacket的时间片长是否达到第一预设时间,若达到,将第一预设时间的片长生成TS小片段文件;将TS小片段的数据信息及所在TS大片段的位置信息更新至TS大片段索引文件;判断TS大片段文件的拼接是否达到结束条件,若达到,则TS大片段文件拼接完成。一种实施例中,结束条件为TS大片段文件内的所有TSPacket时间片长是否达到第二预设时间,判断TS大片段文件是否拼接完成的步骤包括:统计TS大片段文件内的叠加拼接的所有TSPacket时间片长;判断时间片长是否达到第二预设时间,若达到,则完成TS大片段文件的拼接。一种实施例中,结束条件为TS大片段文件内生成的TS小片段数目是否达到预设阀值,判断TS大片段文件是否拼接完成,包括步骤:TS大片段文件内每生成一个TS小片段文件时累计计数;判断累计的数值是否达到预设阀值,若达到,则完成TS大片段文件的拼接。一种实施例中,读取音视频数据并将读取的音视频数据封装成TSPacket,包括步骤:读取音视频数据;将音视频数据解复用为音数据和视频数据;分别对音数据和视频数据编码;将编码后的音数据和视频数据复用;将复用后的音视频数据封装成TSPacket。一种实施例中,M3U8文件还包括TS小片段存储文件,在TS小片段文件生成之前或之后还包括生成所述TS小片段的名称,并将TS小片段文件的名称更新至TS小片段存储文件。一种实施例中,M3U8文件还包括总索引文件,当TS大片段文件拼接完成后,还包括将TS大片段索引文件更新至总索引文件的步骤。根据第二方面,一种实施例中提供一种HLS流媒体分片的虚拟拼接系统,包括建立模块、封装模块、叠加拼接模块、第一判断模块、生成模块、更新模块和第二判断模块;建立模块用于建立M3U8文件,M3U8文件包括TS大片段文件和TS大片段索引文件;封装模块用于读取音视频数据并将读取的音视频数据封装成TSPacket;叠加拼接模块用于叠加拼接TSPacket至所述TS大片段文件;第一判断模块用于判断叠加拼接的TSPacket的时间片长是否达到第一预设时间,若达到,产生模块将第一预设时间的片长生成TS小片段文件,并生成TS小片段文件的名称;更新模块用于将TS小片段文件的名称更新至M3U8文件,并将TS小片段的数据信息及所在TS大片段的位置信息更新至TS大片段索引文件;第二判断模块用于判断TS大片段文件的拼接是否达到结束条件,若达到,则TS大片段文件拼接完成。一种实施例中,还包括统计模块,统计模块用于统计TS大片段文件内的叠加拼接的所有TSPacket时间片长,或者,统计模块用于累计TS大片段文件内生成的TS小片段文件数目。一种实施例中,封装模块包括:读取单元、解复用单元、编码单元、复用器和封装单元读取单元用于读取音视频数据;解复用单元用于将所述音视频数据解复用为音数据和视频数据;编码单元用于分别对所述音数据和视频数据编码;复用器用于将编码后的音数据和视频数据复用;封装单元用于将复用后的音视频数据封装成TSPacket。一种实施例中,M3U8文件还包括TS小片段存储文件,生成模块还用于在TS小片段文件生成之前或之后生成TS小片段的名称,更新模块还用于将TS小片段文件的名称更新至TS小片段存储文件。依据上述实施例的虚拟拼接方法,由于根据直接将封装的TSPacket叠加拼接成TS大片段文件,省去了单独的合并程序,减少了合并程序的进程数目及合并程序产生的其他进程数目,降低了系统资源占用率,而且,在合并TS大片段文件的过程中还对生成的TS小片段的名称进行更新,进一步,还保证了M3U8文件的原有特性。附图说明图1为现有流媒体分片的拼接流程图;图2为本例的流媒体分片的虚拟拼接流程图;图3为本例的流媒体分片的虚拟拼接系统原理图。具体实施方式下面通过具体实施方式结合附图对本专利技术作进一步详细说明。实施例一:本例提供一种HLS流媒体分片的虚拟拼接方法,具体包括如下步骤,其流程图如图1所示。S100本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/62/201610941581.html" title="一种HLS流媒体分片的拼接方法及系统原文来自X技术">HLS流媒体分片的拼接方法及系统</a>

【技术保护点】
一种HLS流媒体分片的虚拟拼接方法,其特征在于,包括步骤:建立M3U8文件,所述M3U8文件包括TS大片段文件和TS大片段索引文件;读取音视频数据并将所述读取的音视频数据封装成TS Packet;将所述TS Packet叠加拼接至TS大片段文件;判断所述叠加拼接的TS Packet的时间片长是否达到第一预设时间,若达到,将所述第一预设时间的片长生成TS小片段文件;将所述TS小片段的数据信息及所在TS大片段的位置信息更新至TS大片段索引文件;判断所述TS大片段文件的拼接是否达到结束条件,若达到,则所述TS大片段文件拼接完成。

【技术特征摘要】
1.一种HLS流媒体分片的虚拟拼接方法,其特征在于,包括步骤:建立M3U8文件,所述M3U8文件包括TS大片段文件和TS大片段索引文件;读取音视频数据并将所述读取的音视频数据封装成TSPacket;将所述TSPacket叠加拼接至TS大片段文件;判断所述叠加拼接的TSPacket的时间片长是否达到第一预设时间,若达到,将所述第一预设时间的片长生成TS小片段文件;将所述TS小片段的数据信息及所在TS大片段的位置信息更新至TS大片段索引文件;判断所述TS大片段文件的拼接是否达到结束条件,若达到,则所述TS大片段文件拼接完成。2.如权利要求1所述的虚拟拼接方法,其特征在于,所述结束条件为所述TS大片段文件内的所有TSPacket时间片长是否达到第二预设时间,判断TS大片段文件是否拼接完成的步骤包括:统计所述TS大片段文件内的叠加拼接的所有TSPacket时间片长;判断所述时间片长是否达到第二预设时间,若达到,则完成所述TS大片段文件的拼接。3.如权利要求1所述的虚拟拼接方法,其特征在于,所述结束条件为所述TS大片段文件内生成的TS小片段数目是否达到预设阀值,判断TS大片段文件是否拼接完成,包括步骤:所述TS大片段文件内每生成一个TS小片段文件时累计计数;判断所述累计的数值是否达到预设阀值,若达到,则完成所述TS大片段文件的拼接。4.如权利要求2或3所述的虚拟拼接方法,其特征在于,所述读取音视频数据并将读取的音视频数据封装成TSPacket,包括步骤:读取音视频数据;将所述音视频数据解复用为音数据和视频数据;分别对所述音数据和视频数据编码;将编码后的音数据和视频数据复用;将复用后的音视频数据封装成TSPacket。5.如权利要求4所述的虚拟拼接方法,其特征在于,所述M3U8文件还包括TS小片段存储文件,在所述TS小片段文件生成之前或之后还包括生成所述TS小片段的名称,并将所述TS小片段文件的名称更新至所述TS小片段存储文件。6.如权利要求5所述的虚拟拼接方法,其...

【专利技术属性】
技术研发人员:唐杰胡方振唐昆鹏
申请(专利权)人:上海网达软件股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1