传输流媒体文件处理方法、装置、计算机设备和存储介质与流程

文档序号:25731139发布日期:2021-07-02 21:19阅读:128来源:国知局
传输流媒体文件处理方法、装置、计算机设备和存储介质与流程

本申请涉及多媒体技术领域,特别是涉及一种传输流媒体文件处理方法、装置、计算机设备、存储介质和计算机程序产品。



背景技术:

随着多媒体技术的发展,出现了传输流媒体技术,传输流媒体技术常用于高清视频的在线播放。其中,较为常见的传输流媒体技术是通过mpeg2-ts(transportstream)的封装格式进行视频数据的传输。mpeg2-ts可以使得视频流中的任意一段数据包独立解码并播放,无须完整的视频流。

在进行视频在线播放的应用场景中,用户可能会通过拖动视频进度条的操作,请求跳转至指定进度时间的视频片段开始播放。

针对于视频进度的跳转请求,传统技术中,是通过所请求的进度时间与视频总时长,预估出该进度时间所关联的关键帧,然后再根据该关键帧进行解码得到图像帧,当图像帧并非所请求跳转的进度时间的图像帧时,则需要根据解码得到的图像帧实际的进度时间与所请求进度时间的误差,进行反复多次的预估和解码处理,才能得到正确的图像帧,视频进度跳转的处理效率较低。

因此,目前的在线视频播放方式存在着进度跳转的处理效率较低的问题。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够提升进度跳转的处理效率的传输流媒体文件处理方法、装置、计算机设备、存储介质和计算机程序产品。

一种传输流媒体文件处理方法,包括:

获取传输流媒体文件;

生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道;

获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧;

将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

在一个实施例中,所述自定义数据媒体轨道处于所述中间媒体文件的文件头部,所述方法还包括:

获取所述中间媒体文件的媒体总时长;

将所述媒体总时长写入至所述中间媒体文件中的所述自定义数据媒体轨道。

在一个实施例中,所述生成中间媒体文件,包括:

生成空白传输流媒体文件;

将所述自定义数据媒体轨道写入至所述空白传输流媒体文件的文件头部;

将所述传输流媒体文件中的媒体数据写入至所述空白传输流媒体文件的文件主体;

将写入有所述自定义数据媒体轨道和所述传输流媒体文件中的媒体数据的空白传输流媒体文件,作为所述中间媒体文件。

在一个实施例中,所述获取所述中间媒体文件的关键帧索引,包括:

获取所述中间媒体文件中的各个媒体关键帧的时间偏移量,以及,获取所述中间媒体文件中的各个媒体关键帧的文件偏移量;

统计所述中间媒体文件中的至少一个媒体关键帧和与其上一个媒体关键帧各自的时间偏移量之间的差值,得到时间偏移量差值,以及,统计所述中间媒体文件中的所述至少一个媒体关键帧与所述上一个媒体关键帧各自的文件偏移量之间的差值,得到文件偏移量差值;

建立所述至少一个媒体关键帧的时间偏移量差值和所述至少一个媒体关键帧的文件偏移量差值之间的对应关系,得到所述关键帧索引。

在一个实施例中,还包括:

在进行在线播放的过程中,根据所述关键帧索引中的首帧媒体关键帧的时间偏移量和文件偏移量,确定所述上一个媒体关键帧的时间偏移量和文件偏移量;

根据所述上一个媒体关键帧的时间偏移量和文件偏移量以及所述至少一个媒体关键帧的所述时间偏移量差值和所述文件偏移量差值,还原出所述至少一个媒体关键帧的时间偏移量和文件偏移量,以在用户请求跳转至所述至少一个媒体关键帧的所述目标时间偏移量时确定对应的所述目标文件偏移量,根据所述目标文件偏移量请求媒体服务器反馈对应的目标媒体数据。

在一个实施例中,还包括:

确定所述目标文件偏移量在所述关键帧索引中所对应的目标媒体关键帧;

采用所述目标媒体关键帧对所述目标媒体数据进行解码,并播放解码后的所述目标媒体数据。

一种传输流媒体文件处理装置,包括:

文件获取模块,用于获取传输流媒体文件;

中间文件模块,用于生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道;

索引获取模块,用于获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧;

索引写入模块,用于将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取传输流媒体文件;

生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道;

获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧;

将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取传输流媒体文件;

生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道;

获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧;

将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现以下步骤:

获取传输流媒体文件;

生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道;

获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧;

将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

上述传输流媒体文件处理方法、装置、计算机设备、存储介质和计算机程序产品,利用传输流媒体文件的自定义数据轨道可以存放自定义数据的特点,将原始的传输流媒体文件转封装并加入自定义数据媒体轨道,然后将记录媒体关键帧的时间偏移量和文件偏移量的关键帧索引写入至自定义数据媒体轨道,对所得到的目标媒体文件进行在线播放时,根据时间偏移量即可快速地定位正确的文件偏移量,无须多次预估和解码,提升了在线媒体播放过程中进行进度跳转的处理效率。

而且,通过将自定义数据媒体轨道加入至文件头部,然后将媒体总时长写入至该自定义数据媒体轨道,使得在进度跳转过程中无须进行两次的文件偏移即可以得到媒体总时长,进一步提升了进度跳转的处理效率。

附图说明

图1为一个实施例中传输流媒体文件处理方法的应用环境图;

图2为一个实施例中传输流媒体文件处理方法的流程示意图;

图3是一个实施例的一种mpeg2-ts格式的媒体文件生成流程的示意图;

图4为一个实施例中传输流媒体文件处理装置的结构框图;

图5为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的传输流媒体文件处理方法,可以应用于如图1所示的应用环境中。其中,用户终端102通过网络与媒体服务器104进行通信。其中,用户终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,媒体服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

用户可以通过用户终端102向媒体服务器104请求某个媒体数据,以在用户终端102上进行媒体播放。媒体服务器104可以响应于用户终端102的请求,将相应的传输流媒体文件中的多个媒体数据按照特定顺序传输至用户终端102,用户终端102可以在接收到媒体数据后进行播放,以实现媒体实时的在线播放。

对于视频在线播放的场景,在现有技术中,当用户在用户终端102上拖动视频进度条,以发起进度跳转请求,请求跳转至指定进度时间的视频片段。用户终端可以确定相应的时间偏移量(timeoffset),即传输流媒体文件中某个图像帧的进度时间与起始图像帧的进度时间之间在时间上的距离。用户终端102利用时间偏移量(timeoffset),可以通过以下公式计算文件偏移量fileoffset=(timeoffset/mediaduration)*filesize;

其中,filesize为传输流媒体文件的数据总量,文件偏移量(fileoffset),即传输流媒体文件中某个图像帧的数据包与起始图像帧的数据包之间在数据位置上的距离,媒体总时长(mediaduration),即媒体文件的播放时长。

然后,用户终端102根据确定的文件偏移量向媒体服务器104请求相应的媒体数据,以跳转至播放对应的进度时间的视频片段。

然而,计算得到的文件偏移量fileoffset是一个预估值,根据该预估值得到的图像帧,可能并非所请求的时间偏移量timeoffset对应的图像帧,如果未能命中,则需要根据误差再次预估,实际应用中,可能需要多次的预估(平均需要5次左右),才能命中正确的文件偏移量fileoffset,由此导致在线视频播放过程中视频进度跳转的处理效率较低。

在一个实施例中,如图2所示,提供了一种传输流媒体文件处理方法,以该方法应用于图1中的媒体服务器104为例进行说明,包括以下步骤:

步骤202,获取传输流媒体文件。

其中,传输流媒体文件可以为传输流媒体封装格式的文件。例如,mpeg2-ts视频文件。

具体地,媒体服务器104可以获取到原始的传输流媒体文件,以对原始的传输流媒体文件进行后续的封装处理。实际应用中,用户可以通过用于制作传输流媒体文件的摄录设备制作出上述的传输流媒体文件,并将其上传至媒体服务器104。

步骤204,生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道。

其中,自定义数据媒体轨道可以为传输流媒体格式支持的、用于存放自定义数据的媒体轨道。媒体轨道可以为传输流媒体文件中的用于实现特定功能的数据区间。

首先需要说明的是,如mpeg2-ts文件等的传输流媒体文件,可以支持视频(video)、音频(audio)、字幕(subtitle)、数据(data)等至少四种的媒体轨道(track)。其中,数据媒体轨道(datatrack)可以用于存放自定义的私有数据。

具体地,利用传输流媒体文件的上述特点,媒体服务器104可以将传输流媒体文件转封装成新的传输流媒体文件。为了区分说明,新的传输流媒体文件命名为中间媒体文件。

在转封装新的传输流媒体文件时,可以在新的传输流媒体文件中写入自定义数据媒体轨道,由此,得到了封装有原始的传输流媒体文件和自定义数据媒体轨道的中间媒体文件。

步骤206,获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧。

其中,时间偏移量(timeoffset)可以为传输流媒体文件中某个图像帧的进度时间与起始图像帧的进度时间之间在时间上的距离,单位可以为s(秒)。

其中,文件偏移量(fileoffset)可以为传输流媒体文件中某个图像帧的数据包与起始图像帧的数据包之间在数据位置上的距离,单位可以为字节。

其中,关键帧可以为在解码时无需依赖前后图像帧、依据自身的数据即可解码出完整图像帧的数据,通常也称为i帧。

具体地,媒体服务器104可以根据中间媒体文件中各个关键帧对应的进度时间和对应的数据包,得到中间媒体文件中的各个关键帧的时间偏移量和文件偏移量,并根据各个关键帧的时间偏移量和文件偏移量,形成一个索引列表,作为上述的关键帧索引。

步骤208,将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

具体地,媒体服务器104可以将关键帧索引写入至已封装在中间媒体文件中的自定义数据媒体轨道,得到了上述的目标媒体文件。

例如,对于原始的mpeg2-ts文件_0,可以转封装为mpeg2-ts文件_1,在mpeg2-ts文件_1中加入一条固定长度(如3000byte)的data轨道,然后将关键帧索引存入至该data轨道,由此得到了包含有关键帧索引的mpeg2-ts文件。

在针对目标媒体文件进行在线播放时,当用户发起进度跳转请求,用户终端102可以根据跳转请求所指定的目标时间偏移量timeoffset以及目标媒体文件中的关键帧索引,即可查找到对应的目标文件偏移量fileoffset,并向媒体服务器104请求所确定的目标文件偏移量fileoffset对应的关键帧及其相应的媒体数据包,然后根据该关键帧及其相应的媒体数据包进行解码,得到了多个图像帧、音频数据等媒体数据,用户终端102即可从当前进度跳转至播放该多个图像帧和音频数据。

上述的传输流媒体文件处理方法,利用传输流媒体文件的自定义数据轨道可以存放自定义数据的特点,将原始的传输流媒体文件转封装并加入自定义数据媒体轨道,然后将记录媒体关键帧的时间偏移量和文件偏移量的关键帧索引写入至自定义数据媒体轨道,对所得到的目标媒体文件进行在线播放时,根据时间偏移量即可快速地定位正确的文件偏移量,无须多次预估和解码,提升了在线媒体播放过程中进行进度跳转的处理效率。

在一个实施例中,所述自定义数据媒体轨道处于所述中间媒体文件的文件头部,上述的传输流媒体文件处理方法还包括:

获取所述中间媒体文件的媒体总时长;将所述媒体总时长写入至所述中间媒体文件中的所述自定义数据媒体轨道。

其中,媒体总时长(mediaduration)可以为中间媒体文件的播放时长。

需要说明的是,在根据关键帧及其相关联的媒体数据包进行视频、音频的解码时,需要首先获取传输流媒体文件的媒体总时长,视频、音频的编码类型等信息,然后创建视频、音频的解码器,通过解码器解码出图像、音频等媒体数据。

然而,根据传输流媒体格式,传输流媒体文件的媒体总时长记录在整个传输流媒体文件中的最后一个完整数据包,因此,如果响应于进度跳转请求而读取获取媒体总时长时,则需要从当前的文件位置偏移至最后一个完整数据包的文件位置,以读取到媒体总时长,然后再文件偏移至原有的文件位置。

在该进度跳转过程中,产生了两次的文件偏移,影响了对进度跳转的处理效率。针对于此,本实施例提出了一种将媒体总时长写入至传输流媒体的文件头部的方法,以提升进度跳转的处理效率。

具体地,在将传输流媒体文件转封装时,媒体服务器104可以首先生成空白的传输流媒体格式的文件,然后,将自定义数据媒体轨道优先写入至该文件的文件头部,然后再在该文件的文件主体写入传输流媒体文件中的视频、音频等的媒体数据,由此得到的中间媒体文件的文件头部包含有自定义数据媒体轨道。

下一步,媒体服务器104可以打开该中间媒体文件,得到中间媒体文件的媒体总时长,然后,利用自定义数据媒体轨道可以存放用户自定义的私有数据的特性,将该媒体总时长写入至位于中间媒体文件的文件头部的自定义数据媒体轨道。

上述传输流媒体文件处理方法中,通过将自定义数据媒体轨道加入至文件头部,然后将媒体总时长写入至该自定义数据媒体轨道,使得在进度跳转过程中无须进行两次的文件偏移即可以得到媒体总时长,进一步提升了进度跳转的处理效率。

在一个实施例中,步骤204,具体可以包括:

生成空白传输流媒体文件;将所述自定义数据媒体轨道写入至所述空白传输流媒体文件的文件头部;将所述传输流媒体文件中的媒体数据写入至所述空白传输流媒体文件的文件主体;将写入有所述自定义数据媒体轨道和所述传输流媒体文件中的媒体数据的空白传输流媒体文件,作为所述中间媒体文件。

其中,空白传输流媒体文件可以为传输流媒体格式的、且未包含视频音频等媒体数据的文件。

具体地,在将传输流媒体文件转封装时,媒体服务器104可以首先生成空白传输流媒体文件,然后,将自定义数据媒体轨道优先写入至该空白传输流媒体文件的文件头部。

下一步,媒体服务器104可以将传输流媒体文件中的视频、音频等的媒体数据写入至空白传输流媒体文件的文件主体。

由此,写入有自定义数据媒体轨道和传输流媒体文件中的媒体数据的传输流媒体文件,可以作为上述的中间媒体文件。

上述的传输流媒体文件处理方法中,通过将自定义数据媒体轨道写入至空白传输流媒体文件的文件头部,再将原始的传输流媒体文件的媒体数据写入至文件主体,使得将媒体总时长写入至该自定义数据媒体轨道时,保证媒体总时长该信息处于最终的传输流媒体文件的文件头部,以提升进度跳转的处理效率。

在一个实施例中,步骤206,包括:

获取所述中间媒体文件中的各个媒体关键帧的时间偏移量,以及,获取所述中间媒体文件中的各个媒体关键帧的文件偏移量;统计所述中间媒体文件中的至少一个媒体关键帧和与其上一个媒体关键帧各自的时间偏移量之间的差值,得到时间偏移量差值,以及,统计所述中间媒体文件中的所述至少一个媒体关键帧与所述上一个媒体关键帧各自的文件偏移量之间的差值,得到文件偏移量差值;建立所述至少一个媒体关键帧的时间偏移量差值和所述至少一个媒体关键帧的文件偏移量差值之间的对应关系,得到所述关键帧索引。

其中,时间偏移量差值可以为两个连续的媒体关键帧的时间偏移量的差值。类似地,文件偏移量差值可以为两个连续的媒体关键帧的文件偏移量的差值。

具体地,在需要获取中间媒体文件的关键帧索引时,可以基于任意一个媒体关键帧与其连续的上一帧媒体关键帧各自的时间偏移量、文件偏移量之间的差值,建立起媒体关键帧的多个相关图像帧、音频数据所对应的时间偏移量、文件偏移量之间的对应关系。

在后续进行在线播放的过程中,则可以在首帧媒体关键帧的时间偏移量和文件偏移量的基础上,根据后续各帧媒体关键帧的时间偏移量差值和文件偏移量差值,依次还原出后续各帧媒体关键帧的时间偏移量和文件偏移量。

以下表1为一个实施例的一种关键帧索引列表示例。如下表所示,第一列为列表信息的字段大小,第三列为各个媒体关键帧的标识,第二列则为该媒体关键帧的时间偏移量差值(timeoffset[n-1]-timeoffset[n-2])和文件偏移量差值(fileoffset[n-2]-fileoffset[n-3])。

表1

上述的传输流媒体文件处理方法中,通过建立各个媒体关键帧的时间偏移量差值、文件偏移量差值和媒体关键帧之间的对应关系,从而可以通过少量的数据内容来记录该对应关系,从而压缩了索引内容,提升了关键帧的索引速度,进一步提升了进度跳转的处理效率。

在一个实施例中,上述的传输流媒体文件处理方法还包括:

在进行在线播放的过程中,根据所述关键帧索引中的首帧媒体关键帧的时间偏移量和文件偏移量,确定所述上一个媒体关键帧的时间偏移量和文件偏移量;根据所述上一个媒体关键帧的时间偏移量和文件偏移量以及所述至少一个媒体关键帧的所述时间偏移量差值和所述文件偏移量差值,还原出所述至少一个媒体关键帧的时间偏移量和文件偏移量,以在用户请求跳转至所述至少一个媒体关键帧的所述目标时间偏移量时确定对应的所述目标文件偏移量,根据所述目标文件偏移量请求媒体服务器反馈对应的目标媒体数据。

具体地,在进行在线播放的过程中,媒体服务器104或用户终端102可以在首帧媒体关键帧的时间偏移量和文件偏移量的基础上,根据后续各帧媒体关键帧的时间偏移量差值和文件偏移量差值,依次还原出后续各帧媒体关键帧的时间偏移量和文件偏移量。例如,首帧媒体关键帧的时间偏移量为to0,文件偏移量为fo0,而第二帧媒体关键帧的时间偏移量差值为δto0,文件偏移量差值为δfo0,由此可得第二帧媒体关键帧的时间偏移量为(to0+δto0),第二帧媒体关键帧的文件偏移量为(fo0+δfo0),如此类推,即可还原出各个媒体关键帧的时间偏移量和文件偏移量,以在用户请求跳转时,则可以根据所请求的目标时间偏移量,确定对应的目标文件偏移量,并向媒体服务器104请求与目标文件偏移量对应的目标媒体数据。

具体地,当用户通过用户终端102请求进度跳转时,媒体服务器104或用户终端102可以根据请求确定用户请求的进度时间所对应的时间偏移量。例如,从传输流媒体起始的第0秒跳转至20秒的进度时间,目标时间偏移量则为20秒。

媒体服务器104或用户终端102可以根据该目标进度跳转请求,在关键帧索引中查找出其所处于的目标时间偏移量区间,然后根据关键帧索引,即可以确定对应的目标文件偏移量区间,根据该目标文件偏移量区间,即可以得到相应的目标媒体数据,并提供给用户终端102进行在线媒体播放的进度跳转,而无须如现有技术中进行多次的文件偏移量预估,提升了进度跳转的处理效率。

在一个实施例中,可以还包括:

确定所述目标文件偏移量在所述关键帧索引中所对应的目标媒体关键帧;采用所述目标媒体关键帧对所述目标媒体数据进行解码,并播放解码后的所述目标媒体数据。

具体地,媒体服务器104或用户终端102在确定目标文件偏移量后,可以根据关键帧索引确定对应的目标媒体关键帧,采用该目标媒体关键帧,对根据目标文件偏移量所请求得到的目标媒体数据进行解码,然后在用户终端102上播放解码后的目标媒体数据(图像帧和音频数据),由此,用户终端102实现了在线媒体播放的进度跳转,整个进度跳转过程无须反复多次的文件偏移量的预估和进行多次的媒体数据包的解码,提升了进度跳转的处理效率。

为了便于本领域技术人员深入理解上述实施例,以下将结合附图的具体示例进行说明。

图3是一个实施例的一种mpeg2-ts格式的媒体文件生成流程的示意图。如图所示,在步骤301中,首先获取到原始的mpeg2-ts格式的ts文件_0。

在步骤302中,将ts文件_0转封装为新的ts文件_1,并在转封装时加入一条data媒体轨道,优先加入一段固定长度(如3000字节)data数据流的空包在data媒体轨道中,同时,将ts文件_0中的视频数据包、音频数据包,写入至ts文件_1的文件主体中。

然后,在步骤303中,获取ts文件_1的mediaduration和关键帧索引。

最后,在步骤304中,将mediaduration和关键帧索引,写入至ts文件_1的data媒体轨道中,得到了在文件头部的data媒体轨道中包含有mediaduration和关键帧索引的ts文件。

应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种传输流媒体文件处理装置,包括:

文件获取模块402,用于获取传输流媒体文件;

中间文件模块404,用于生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道;

索引获取模块406,用于获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧;

索引写入模块408,用于将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

在一个实施例中,所述自定义数据媒体轨道处于所述中间媒体文件的文件头部,所述装置还包括:

总时长获取模块,用于获取所述中间媒体文件的媒体总时长;

时长写入模块,用于将所述媒体总时长写入至所述中间媒体文件中的所述自定义数据媒体轨道。

在一个实施例中,中间文件模块404,具体用于:

生成空白传输流媒体文件;将所述自定义数据媒体轨道写入至所述空白传输流媒体文件的文件头部;将所述传输流媒体文件中的媒体数据写入至所述空白传输流媒体文件的文件主体;将写入有所述自定义数据媒体轨道和所述传输流媒体文件中的媒体数据的空白传输流媒体文件,作为所述中间媒体文件。

在一个实施例中,索引获取模块406,具体用于:

获取所述中间媒体文件中的各个媒体关键帧的时间偏移量,以及,获取所述中间媒体文件中的各个媒体关键帧的文件偏移量;统计所述中间媒体文件中的至少一个媒体关键帧和与其上一个媒体关键帧各自的时间偏移量之间的差值,得到时间偏移量差值,以及,统计所述中间媒体文件中的所述至少一个媒体关键帧与所述上一个媒体关键帧各自的文件偏移量之间的差值,得到文件偏移量差值;建立所述至少一个媒体关键帧的时间偏移量差值和所述至少一个媒体关键帧的文件偏移量差值之间的对应关系,得到所述关键帧索引。

在一个实施例中,所述传输流媒体文件处理装置,还具体用于:

在进行在线播放的过程中,根据所述关键帧索引中的首帧媒体关键帧的时间偏移量和文件偏移量,确定所述上一个媒体关键帧的时间偏移量和文件偏移量;根据所述上一个媒体关键帧的时间偏移量和文件偏移量以及所述至少一个媒体关键帧的所述时间偏移量差值和所述文件偏移量差值,还原出所述至少一个媒体关键帧的时间偏移量和文件偏移量,以在用户请求跳转至所述至少一个媒体关键帧的所述目标时间偏移量时确定对应的所述目标文件偏移量,根据所述目标文件偏移量请求媒体服务器反馈对应的目标媒体数据。

在一个实施例中,所述传输流媒体文件处理装置,还具体用于:

确定所述目标文件偏移量在所述关键帧索引中所对应的目标媒体关键帧;采用所述目标媒体关键帧对所述目标媒体数据进行解码,并播放解码后的所述目标媒体数据。

关于传输流媒体文件处理装置的具体限定可以参见上文中对于传输流媒体文件处理方法的限定,在此不再赘述。上述传输流媒体文件处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储传输流媒体文件、中间媒体文件、关键帧索引、自定义数据媒体轨道等的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种传输流媒体文件处理方法。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

获取传输流媒体文件;

生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道;

获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧;

将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

在一个实施例中,所述自定义数据媒体轨道处于所述中间媒体文件的文件头部,处理器执行计算机程序时还实现以下步骤:获取所述中间媒体文件的媒体总时长;将所述媒体总时长写入至所述中间媒体文件中的所述自定义数据媒体轨道。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:生成空白传输流媒体文件;将所述自定义数据媒体轨道写入至所述空白传输流媒体文件的文件头部;将所述传输流媒体文件中的媒体数据写入至所述空白传输流媒体文件的文件主体;将写入有所述自定义数据媒体轨道和所述传输流媒体文件中的媒体数据的空白传输流媒体文件,作为所述中间媒体文件。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取所述中间媒体文件中的各个媒体关键帧的时间偏移量,以及,获取所述中间媒体文件中的各个媒体关键帧的文件偏移量;统计所述中间媒体文件中的至少一个媒体关键帧和与其上一个媒体关键帧各自的时间偏移量之间的差值,得到时间偏移量差值,以及,统计所述中间媒体文件中的所述至少一个媒体关键帧与所述上一个媒体关键帧各自的文件偏移量之间的差值,得到文件偏移量差值;建立所述至少一个媒体关键帧的时间偏移量差值和所述至少一个媒体关键帧的文件偏移量差值之间的对应关系,得到所述关键帧索引。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:在进行在线播放的过程中,根据所述关键帧索引中的首帧媒体关键帧的时间偏移量和文件偏移量,确定所述上一个媒体关键帧的时间偏移量和文件偏移量;根据所述上一个媒体关键帧的时间偏移量和文件偏移量以及所述至少一个媒体关键帧的所述时间偏移量差值和所述文件偏移量差值,还原出所述至少一个媒体关键帧的时间偏移量和文件偏移量,以在用户请求跳转至所述至少一个媒体关键帧的所述目标时间偏移量时确定对应的所述目标文件偏移量,根据所述目标文件偏移量请求媒体服务器反馈对应的目标媒体数据。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:确定所述目标文件偏移量在所述关键帧索引中所对应的目标媒体关键帧;采用所述目标媒体关键帧对所述目标媒体数据进行解码,并播放解码后的所述目标媒体数据。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取传输流媒体文件;

生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道;

获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧;

将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

在一个实施例中,所述自定义数据媒体轨道处于所述中间媒体文件的文件头部,计算机程序被处理器执行时还实现以下步骤:获取所述中间媒体文件的媒体总时长;将所述媒体总时长写入至所述中间媒体文件中的所述自定义数据媒体轨道。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:生成空白传输流媒体文件;将所述自定义数据媒体轨道写入至所述空白传输流媒体文件的文件头部;将所述传输流媒体文件中的媒体数据写入至所述空白传输流媒体文件的文件主体;将写入有所述自定义数据媒体轨道和所述传输流媒体文件中的媒体数据的空白传输流媒体文件,作为所述中间媒体文件。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取所述中间媒体文件中的各个媒体关键帧的时间偏移量,以及,获取所述中间媒体文件中的各个媒体关键帧的文件偏移量;统计所述中间媒体文件中的至少一个媒体关键帧和与其上一个媒体关键帧各自的时间偏移量之间的差值,得到时间偏移量差值,以及,统计所述中间媒体文件中的所述至少一个媒体关键帧与所述上一个媒体关键帧各自的文件偏移量之间的差值,得到文件偏移量差值;建立所述至少一个媒体关键帧的时间偏移量差值和所述至少一个媒体关键帧的文件偏移量差值之间的对应关系,得到所述关键帧索引。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在进行在线播放的过程中,根据所述关键帧索引中的首帧媒体关键帧的时间偏移量和文件偏移量,确定所述上一个媒体关键帧的时间偏移量和文件偏移量;根据所述上一个媒体关键帧的时间偏移量和文件偏移量以及所述至少一个媒体关键帧的所述时间偏移量差值和所述文件偏移量差值,还原出所述至少一个媒体关键帧的时间偏移量和文件偏移量,以在用户请求跳转至所述至少一个媒体关键帧的所述目标时间偏移量时确定对应的所述目标文件偏移量,根据所述目标文件偏移量请求媒体服务器反馈对应的目标媒体数据。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:确定所述目标文件偏移量在所述关键帧索引中所对应的目标媒体关键帧;采用所述目标媒体关键帧对所述目标媒体数据进行解码,并播放解码后的所述目标媒体数据。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现以下步骤:

获取传输流媒体文件;

生成中间媒体文件;所述中间媒体文件封装有所述传输流媒体文件和自定义数据媒体轨道;

获取所述中间媒体文件的关键帧索引;所述关键帧索引用于记录媒体关键帧的时间偏移量和文件偏移量之间的对应关系;所述媒体关键帧为所述中间媒体文件中的关键帧;

将所述关键帧索引写入至所述中间媒体文件中的所述自定义数据媒体轨道,得到目标媒体文件;所述目标媒体文件用于在进行在线播放过程中,根据所述目标媒体文件中的所述关键帧索引,确定用户所请求的目标时间偏移量所对应的目标文件偏移量,并根据所述目标文件偏移量及其对应的媒体关键帧播放所述目标媒体文件。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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