一种基于NAS存储分片转码后直写TS文件的方法与流程

文档序号:24497153发布日期:2021-03-30 21:25阅读:155来源:国知局
一种基于NAS存储分片转码后直写TS文件的方法与流程

本发明涉及新媒体及广电行业相关技术领域,尤其是指一种基于nas存储分片转码后直写ts文件的方法。



背景技术:

随着超高清视频技术的不断发展,一方面超高清视频提升了用户的感官体验,同时码率也相对增长。面对后续超高清视频的快速处理,需要不断提升转码系统的处理文件的能力。目前普遍使用的分片转码系统需要先将视频切片,再分发给不同的机器同时转码生成中间临时文件,完成后由合成器将所有分片文件进行合并。合成器先读取临时文件里面的数据进行处理后写入目标存储。这个中间存在一次文件的拷贝,对存储的压力会很大,特别是文件码率比较大时对存储压力更大。

现有分片转码系统一般流程如下。一个超高清视频文件可以用多台机器进行分片转码。比如一个60分钟的视频,可以用6台机器,每台转10分钟,转码完成后生成中间文件。最后合成器进行合成这些中间文件并写到目标存储。这个过程中每台机器生成的中间文件是临时生成的,合并完成后文件需要删除。这里存在一次中间文件的读取和写入。如果文件的码率比较大,这个会影响转码的效率,特别是存储读写有瓶颈的时候。而且还要将存储划出一块来作为中间临时存储。



技术实现要素:

本发明是为了克服现有技术中存在上述的不足,提供了一种提高转码效率的基于nas存储分片转码后直写ts文件的方法。

为了实现上述目的,本发明采用以下技术方案:

一种基于nas存储分片转码后直写ts文件的方法,具体包括如下步骤:

(1)根据源文件时长和设置的切片时长信息进行切片,并计算目标文件写入的起始位置,将源文件切片并计算每片目标文件要写入的偏移位置;

(2)转码切片生成后,从上一步计算出来的偏移位置开始写入目标文件,其它同时开始转码的分片也执行相同的操作;

(3)等所有切片生成完后,转码的目标文件也就完成了,可以进行分发使用。

为了解决现有系统对中间存储的依赖同时提高超高清视频文件转码效率,本发明提供一种基于nas存储直写文件的方法,充分利用tscbr文件的特性,实现每个转码节点直接将文件写入目标存储,这样设计明显的节省了中间存储的写入和合成过程,提高文件的合成效率,具有高效用,易于维护的显著优点。

作为优选,在步骤(1)中,具体为:第一个切片从0开始写,第二个切片开始计算要写入的偏移位置,根据转码器配置的码率和时间,计算每个切片文件的大小,这样第二个切片的开始偏移位置为第一个切片文件的大小,以此类推。

作为优选,在步骤(1)中,由于需要将下一个切片的cc计数从0开始,所以当前这个切片文件大小需要为188x16的倍数,即对当前这个切片文件大小进行调整为m,如果音视频数据填充后还有不够的地方,填上ts空包数据,这样第二个切片的开始偏移为1*m,以此类推,第n个切片写入位置为(n-1)*m,保证生成的每一个切片都是固定大小。

作为优选,由于tscbr文件码率是恒定的,所以一个切片文件大小可以用下面公式计算出来,切片文件大小mb=文件码率bps*时间s/8,为了生成的ts文件满足规范,需要确保最终生成的ts文件cc计数连续,在发送端对所有包都做0-15的循环计数,在接收端,如发现循环计数器的值有中断,表明数据在传输中有丢失,为了保证ts连续计数正确,所以需要将每个切片大小固定为188*16,即每个ts包的大小为188,连续计数为16个ts包一个循环,这样拼接起来的文件不会有cc不连续的情况。

本发明的有益效果是:充分利用tscbr文件的特性,实现每个转码节点直接将文件写入目标存储,明显的节省了中间存储的写入和合成过程,提高文件的合成效率,具有高效用,易于维护的显著优点。

附图说明

图1是本发明的方法框图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步的描述。

如图1所述的实施例中,一种基于nas存储分片转码后直写ts文件的方法,具体包括如下步骤:

(1)根据源文件时长和设置的切片时长信息进行切片,并计算目标文件写入的起始位置,将源文件切片并计算每片目标文件要写入的偏移位置;具体为:第一个切片从0开始写,第二个切片开始计算要写入的偏移位置,根据转码器配置的码率和时间,计算每个切片文件的大小,这样第二个切片的开始偏移位置为第一个切片文件的大小,以此类推。

由于需要将下一个切片的cc计数从0开始,所以当前这个切片文件大小需要为188x16的倍数,即对当前这个切片文件大小进行调整为m,如果音视频数据填充后还有不够的地方,填上ts空包数据,这样第二个切片的开始偏移为1*m,以此类推,第n个切片写入位置为(n-1)*m,保证生成的每一个切片都是固定大小。

比如,转码输出文件路径为/mnt/output/test.ts,第一片从0开始写,第二片开始计算要写入的偏移位置。比如一个文件按300秒来切片,根据转码器配置的码率和时间(比如输出文件的码率是8mbps,每片文件的时长是300秒),可以估算一个300秒文件的大小是300mb,由于需要将下一个切片的cc计数从0开始,所以当前这个切片文件大小需要为188x16的倍数,大小需要调整为314573632。如果音视频数据填充后还有不够的地方,填上ts空包数据。这样第二个切片的开始偏移为1*314573632,以此类推,第n个切片写入位置为(n-1)*314573632。保证生成的每一个切片都是固定大小。

由于tscbr文件码率是恒定的,所以一个切片文件大小可以用下面公式计算出来,切片文件大小mb=文件码率bps*时间s/8(1byte=8bit,码率是bit单位),切片文件大小=8mbps*300s/8=300mb=314,572,800字节。

同时为了生成的ts文件满足规范,需要确保最终生成的ts文件cc计数连续。cc:continuitycounter的缩写,用于对传输误码进行检测。在发送端对所有包都做0-15的循环计数,在接收端,如发现循环计数器的值有中断,表明数据在传输中有丢失。为了保证ts连续计数正确,所以需要将每个切片大小固定为188*16,即每个ts包的大小为188,连续计数为16个ts包一个循环,这样拼接起来的文件不会有cc不连续的情况。调整的每一片的大小为:因为314,572,800不能被188*16整除,商是104578余2176。所以需要调整为:104579*188*16=314573632。

因为nas存储是顺序存储的,如果不对每个ts切片进行处理,则需要在转码完成后,分别对每个切片进行顺序调整cc字段的值后再写入目标存储,也就不能够直接写入存储。

(2)转码切片生成后,从上一步计算出来的偏移位置开始写入目标文件,其它同时开始转码的分片也执行相同的操作;

(3)等所有切片生成完后,转码的目标文件也就完成了,可以进行分发使用。

为了解决现有系统对中间存储的依赖同时提高超高清视频文件转码效率,本发明提供一种基于nas存储直写文件的方法,充分利用tscbr文件的特性,实现每个转码节点直接将文件写入目标存储,这样设计明显的节省了中间存储的写入和合成过程,提高文件的合成效率,具有高效用,易于维护的显著优点。将本发明应用到实际转码系统中,可以提高转码效率,节省存储带宽,大大提高节目制作效率。

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