一种flv到mp4的文件容器转换方法

文档序号:9792226阅读:440来源:国知局
一种flv到mp4的文件容器转换方法
【技术领域】
[0001 ]本发明设及一种FLV到MP4的文件容器转换方法。
【背景技术】
[0002] 很多移动终端、上载系统、CDN等都只支持MP4格式而不支持化V的格式,但市面上 有很多存量化V文件,如果通过编码的方式转成MP4格式,不仅会降低视频质量,同时还会增 加运营成本,降低工作效率。
[0003] 同时,对于MP4文件,为了提高用户体验,减少点播缓冲时间,加载文件要快速,需 要做成逐行下载的模式(Progressive Downloading Profile),即'moov' box必须在文件 起始处,并且越小越好。在MP4的spec( 14496-12)中,描述时间戳的字段是由SttS ((decoding)time-to-sample)及Ctts((composition)time to sample)组成,其中sample_ de;Ua,sample_offset都是W 'nKlhd'的' timescale'为单位的。通常情况下,为了增加精度, audio的 ' timescale'都是 W采样率为主,如48000,而 video的 ' timescale' 为90000。
[0004] 但是对于FLV文件来说,描述时间戳的字段是由TimeStamp (即DTS )与 CompositionTime(即Ctts)组成,而且是W毫秒为单位,运样对于非整数毫秒的时间戳,如 当video的帖率为23.976fps、30fps等,特别是audio流,其时间戳是有精度损失的。举个例 子,对于采样率为48000hz的AAC LC来说,其每帖的时间间隔为1024.0/48 = 21.333333ms, 写到化V文件里面,就会是21,22,21,22,21,22 ...,运样转换成对应的MP4的SttS就会是 1023,1024,1023,1024,1023,1024...,最终生成的SttS大小就会增加很多。

【发明内容】

[0005] 基于此,有必要提供一种不需要编码器,可直接做从化V到MP4的容器转换,且在有 限的精度损失下,可W使得转换后的'moov'box长度有效降低,从而减少文件加载时间的 FLV到MP4的文件容器转换方法。
[0006] 根据本发明的一方面,提供了一种FLV到MP4的文件容器转换方法,包括如下步骤:
[0007] 从原文件读取时间戳信息并获得每一帖的SttS;
[000引将连续的Stts合并为一个entry。
[0009] 在其中一个实施例中,从原文件读取时间戳信息并获得每一帖的SttS步骤中,具 体方法如下:
[0010] 读取原文件每帖的时间戳信息,第n帖的时间戳信息记为化s(n);
[00川根据stts(n)=化S(n+1)-化s(n)公式,换算得每一帖的stts。
[0012] 在其中一个实施例中,将连续的SttS合并为一个entiy的步骤中,具体方法如下:
[0013] 计算每帖的DT值,并预设一个常量T皿,当连续两帖的DT值的差值小于预设的常量 THR,则连续的两帖合并为一个entry。
[0014] 运种化V到MP4的文件容器转换方法,提供了一种高效的转换方法,在有限的精度 损失下,可W使得转换后的'moov'box长度有效降低,从而减少文件的加载时间。
【具体实施方式】
[0015] 为了便于理解本发明,下面将用具体实施例对本发明进行更全面的描述。但是,本 发明可W W许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供运实施例 的目的是使对本发明的公开内容的理解更加透彻全面。
[0016] 本发明一实施例的FLV到MP4的文件容器转换方法,包括如下步骤:
[0017] 步骤S1、从原文件读取时间戳信息并获得每一帖的stts。
[001引具体地,通过化V Splitter读取源文件内容,将源文件的每帖Audio/Video数据, 包括解码时间戳信息(DTS)送给后端的MP4 Muxer。
[0019] 步骤S2、将连续的SttS合并为一个entry。
[0020] 具体地,计算每帖的DT值,并预设一个常量T皿,当连续两帖的DT值的差值小于预 设的常量THR,则连续的两帖合并为一个entry。
[0021 ] DT值计算方法如下:
[0022] 假设MP4文件共有N个entry,每个entry的sample count分别记为Stts sample count(n),每个entry的sample offset记为stts sample offset(n),n = I~N。
[0023] 设F(n)为第n个entiy的第一帖的帖序号n: I~N,
[0024] 则F(O)=O, F(I) = I,
[002引 当n>l,n<^l时,
[0027]设文件的总帖数为M,贝ljM=F(N)+stts sample COimt(N) =F(Pf^l)-I
[002引对于第m(m> l,m<N)帖,一定有一个唯一的m',使得m>F(m')且m<F(m'+l),那么 第m帖的DT值如下:
[0030] 在写入文件之前,分别对所有连续的audio帖和video帖进行分组,每一组一个 en化y,且对应一个使得总ent巧数尽量少并且保证由MP4文件得到的每帖的DT和原始化V的 DT的误差在一个很小的范围。
[0031 ]具体地,分组的步骤如下:
[0032] 步骤AU假设原始文件共有的帖数为M。先计算每帖的原始SttS,
[0033] Stts org(n)=DT org(n+l)-DT org(n)
[0034] 步骤A2、先令n = l,m=l,其中n为帖序号,m为从当前第n帖之前共有的ent巧个数。 [00巧]然后令n = 2,继续步骤A3。
[0036] 步骤A3、判断第n帖是否可W与第n-1帖合为一组,令
[0037]
[0038] 由此,根据上述DT值的计算方法,可W计算帖序号为n'的帖(n':F(N)~n)的DT (n')。
[0039] 如果所有的DT(n')与DT org(n')的差值都小于一个预设的常量T皿(典型的T皿为 Ims),那么表示第n帖可W和之前的帖合为一个entry。
[0040] 此时令n = n+1,如果n < N,分组完毕;否则继续A3。
[0041 ]反之,则表示第n帖不能和之前的帖合为一个entry,运样就可W确定第m个entry,
[0042] stts sample count(m)=n-1-F(m-l)
[0043] stts sample offset=(DT org(n)-DT org(F(m)))/stts sample count(m)
[0044] 然后令m=m+l,n = n+l,如果n<N,分组完毕;否则继续步骤A3。
[0045] 运种化V到MP4的文件容器转换方法,提供了一种高效的转换方法,在有限的精度 损失下,可W使得转换后的'moov'box长度有效降低,从而减少文件的加载时间。根据本实 施例方法转换后的'moov'box长度可降低约30%。
[0046] 如对于一个内容2小时的FLV文件,Video是30巧S ,audio是4800化Z的AAC文件,
[0047] 那么 audio 的帖数=巧 3600/( 1024/48000) =337500 [004引 Video 的帖数=巧 3600*30 = 216000
[0049] 如果没有进行精度补偿,那么生成出来的audio和video的SttS大小大约为
[0050] Audio = 337500*8 = 2700000
[0051] Video = 216000*8 = 1728000
[0052] 其中8代表的是每个stts占有的字节数。
[0053] 经过精度补偿后,audio和video的SttS在理想状态下(即输入源没有丢包的情况 下)只会占用12个字节。
[0化4]减少的字节数(BYTES) = (2700000+1728000) =4428000。
[0化5] 对于平均1OM的带宽,可W减少加载的时间(4428000*8/10000000 )= 3.5424s [0056] W上所述实施例仅表达了本发明的个别实施方式,其描述较为具体和详细,但并 不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员 来说,在不脱离本发明构思的前提下,还可W做出若干变形和改进,运些都属于本发明的保 护范围。因此,本发明专利的保护范围应W所附权利要求为准。
【主权项】
1. 一种FLV到MP4的文件容器转换方法,其特征在于,包括如下步骤: 从原文件读取时间戳信息并获得每一帧的stts; 将连续的stts合并为一个entry。2. 根据权利要求1所述的一种FLV到MP4的文件容器转换方法,其特征在于,所述从原文 件读取时间戳信息并获得每一帧的stts步骤中,具体方法如下: 读取原文件每帧的时间戳信息,第η帧的所述时间戳信息记为dts(n); 根据stts(n)=dts(n+l)-dts(n)公式,换算得每一帧的stts。3. 根据权利要求1所述的一种FLV到MP4的文件容器转换方法,其特征在于,所述将连续 的stts合并为一个entry的步骤中,具体方法如下: 计算每帧的DT值,并预设一个常量THR,当连续两帧的所述DT值的差值小于预设的所述 常量THR,则所述连续的两帧合并为一个所述entry。
【专利摘要】本发明公开了一种FLV到MP4的文件容器转换方法,先从原文件读取时间戳信息并获得每一帧的stts,然后将连续的stts合并为一个entry,通过这种高效的转换方法,在有限的精度损失下,可以使得转换后的’moov’box长度有效降低,从而减少文件的加载时间。
【IPC分类】H04N21/854, H04N21/8547
【公开号】CN105554593
【申请号】CN201510902768
【发明人】王雪辉, 谢亚光, 叶 武
【申请人】杭州当虹科技有限公司
【公开日】2016年5月4日
【申请日】2015年12月10日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1