一种流媒体的播放方法与流程

文档序号:12379148阅读:来源:国知局

技术特征:

1.一种流媒体的播放方法,其特征在于,该方法的步骤包括:

步骤S1,对播放的数据文件进行存储以及查找;

步骤S2,对所述步骤S1的存储的文件进行目录创建操作;

步骤S3,将所述步骤S2中的存储的文件存储到缓存中;

步骤S4,对所述步骤S3中的缓存的文件进行回看播放。

2.根据权利要求1所述的一种流媒体的播放方法,其特征在于,所述步骤S1中,包括如下步骤:

步骤S11,定义循环数组来存放每一组GOP,存储GOP的数据结构是由先定义的抽象帧的结构和循环数组中元素的结构组成;

步骤S12,把解析完完整的一帧数据以GOP为单位存储在循环数组中;

步骤S13,若是直播请求查找,直接取最新更新的GOP发送到请求直播数据的程序中;若是时移请求,则要查找时移的发送点,发送点是根据时移时间与现在缓存数组中的最早时间的差值,然后在循环数组中直接定位时移的发送点。

3.根据权利要求1所述的一种流媒体的播放方法,其特征在于,所述步骤S2中,目录创建操作包括:创建目录规则,主机名-文件目录-存储文件的日期;文件目录的命名规则,命名规则是按照年、月、日、小时、分钟、秒共14位,若月日时分秒不足两位的在左边用零补够,若文件切片存储时长为x,则文件名的命令规则为x的整数倍;删除目录操作,在创建新文件时,若是当前的目录为空,则删除;文件的删除操作,判断文件的删除的条件是该文件超过了回看时长;删除规则是每次删除一个小时的视频文件,这个小时是以10分钟切片的时长为标准的一个设定值。

4.根据权利要求1所述的一种流媒体播放的方法,其特征在于,所述步骤S3包括切片流程,该切片流程的步骤为:

步骤S31,在程序中读取磁盘的块的大小,定义缓存大小为块的大小的整数倍;

步骤S32,当接收到已经解析的帧数据时,先判断是否要创建新文件,即判断是否当前帧为关键帧并且帧数据的时间已经大于存储时长,若创建,则执行步骤S33,若不创建,则执行步骤S34;

步骤S33,判断缓存中的数据是否有要写入磁盘中的数据,若有,则先写入切片文件中再关闭旧文件并创建新文件,若无,则直接创建新文件;

步骤S34,判断缓存区是否满,若没有空间,则先把缓存内容即帧数据写入磁盘,再把帧数据复制到缓存区,若有空间,则把缓存内容直接写进缓存区。

5.根据权利要求4所述的一种流媒体播放的方法,其特征在于,所述步骤S3还包括:切片索引数据算法,根据文件时长每秒存储一个关键帧索引结构,结构中存储关键帧的播放时间、在文件中的位置、是否为该秒内的关键帧;切片的异常处理,若本存储服务器上的切片不完整时,删除本服务器上不完整的切片,并向网中其他的相同的节点发送查找命令,若其他服务器上有完整的则下载该切片,下载文件采用断点续传的方法;若没有,则记录在异常日志中,并以电邮的形式返给运维人员。

6.根据权利要求1所述的一种流媒体的播放方法,其特征在于,步骤S4中,所述播放为回看播放,回看播放的流程步骤如下:

步骤S41,收到回看的请求,根据开始时间查找回看的第一个文件;

步骤S42,判断是否找到符合回看播放时间要求的切片文件,若找到,则执行步骤S44,否则执行步骤S43;

步骤S43,切片文件没有找到,返回错误码;

步骤S44,发送切片文件,成功发送切片文件后执行步骤S45,否则执行纪步骤S43;

步骤S45,判断有没有end参数,若有,则执行步骤S47,否则,执行步骤S46;

步骤S46,先生成下一个文件名,其文件名是代表时间的字符串,然后查找下一个切片文件,执行步骤S42;

步骤S47,先生成下一个文件名,其文件名是代表时间的字符串,并根据文件名字代表的时间判断是否大于end参数,若大于,则执行步骤S48,否则,执行步骤S46;

步骤S48,结束回看流程。

7.根据权利要求2所述的一种流媒体的播放方法,其特征在于,所述的流媒体的播放方法是基于非多码率协议的或基于多码率协议的。

8.根据权利要求7所述的一种流媒体的播放方法,其特征在于,基于多码率协议的流媒体在所述步骤S12中增加一层hls文件逻辑切片层,解析完完整的一个逻辑切片后,按照逻辑切片为单位存储在循环数组中,在请求切片文件时,则要查找逻辑切片的位置;循环数组是虚拟切片的信息,数组中的大小为切片的个数,以及增加了m3u8格式文件,其中直播是直接读取内存中的m3u8格式文件,而时移是先查找逻辑切片,再生成m3u8格式文件。

9.根据权利要求7-8中任一权利要求所述的一种流媒体的播放方法,其特征在于,基于多码率协议采用存储方式为切片存储。

10.根据权利要求7或8所述的一种流媒体的播放方法,其特征在于,基于多码率协议的回看的流程步骤为:

步骤1,收到请求回看m3u8格式文件的请求,判断有无end参数,若有end参数,执行步骤2,若没有,则给end参数赋予当前的时间值,然后执行步骤2;

步骤2,组成m3u8格式文件,判断是否生成正确的m3u8格式文件内容,若是,则执行步骤3,若否,则直接返回;

步骤3,发送m3u8格式文件后返回。

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