CN105554593A - 一种flv到mp4的文件容器转换方法 - Google Patents

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

Info

Publication number
CN105554593A
CN105554593A CN201510902768.2A CN201510902768A CN105554593A CN 105554593 A CN105554593 A CN 105554593A CN 201510902768 A CN201510902768 A CN 201510902768A CN 105554593 A CN105554593 A CN 105554593A
Authority
CN
China
Prior art keywords
frame
stts
flv
conversion method
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510902768.2A
Other languages
English (en)
Other versions
CN105554593B (zh
Inventor
王雪辉
谢亚光
叶�武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dang Hong Polytron Technologies Inc
Original Assignee
Hangzhou Arcvideo Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Arcvideo Technology Co ltd filed Critical Hangzhou Arcvideo Technology Co ltd
Priority to CN201510902768.2A priority Critical patent/CN105554593B/zh
Publication of CN105554593A publication Critical patent/CN105554593A/zh
Application granted granted Critical
Publication of CN105554593B publication Critical patent/CN105554593B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/85406Content authoring involving a specific file format, e.g. MP4 format

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

本发明公开了一种FLV到MP4的文件容器转换方法,先从原文件读取时间戳信息并获得每一帧的stts,然后将连续的stts合并为一个entry,通过这种高效的转换方法,在有限的精度损失下,可以使得转换后的’moov’box长度有效降低,从而减少文件的加载时间。

Description

一种FLV到MP4的文件容器转换方法
技术领域
本发明涉及一种FLV到MP4的文件容器转换方法。
背景技术
很多移动终端、上载系统、CDN等都只支持MP4格式而不支持FLV的格式,但市面上有很多存量FLV文件,如果通过编码的方式转成MP4格式,不仅会降低视频质量,同时还会增加运营成本,降低工作效率。
同时,对于MP4文件,为了提高用户体验,减少点播缓冲时间,加载文件要快速,需要做成逐行下载的模式(ProgressiveDownloadingProfile),即’moov’box必须在文件起始处,并且越小越好。在MP4的spec(14496-12)中,描述时间戳的字段是由stts((decoding)time-to-sample)及ctts((composition)timetosample)组成,其中sample_delta,sample_offset都是以’mdhd’的’timescale’为单位的。通常情况下,为了增加精度,audio的’timescale’都是以采样率为主,如48000,而video的’timescale’为90000。
但是对于FLV文件来说,描述时间戳的字段是由TimeStamp(即DTS)与CompositionTime(即ctts)组成,而且是以毫秒为单位,这样对于非整数毫秒的时间戳,如当video的帧率为23.976fps、30fps等,特别是audio流,其时间戳是有精度损失的。举个例子,对于采样率为48000hz的AACLC来说,其每帧的时间间隔为1024.0/48=21.333333ms,写到FLV文件里面,就会是21,22,21,22,21,22...,这样转换成对应的MP4的stts就会是1023,1024,1023,1024,1023,1024...,最终生成的stts大小就会增加很多。
发明内容
基于此,有必要提供一种不需要编码器,可直接做从FLV到MP4的容器转换,且在有限的精度损失下,可以使得转换后的’moov’box长度有效降低,从而减少文件加载时间的FLV到MP4的文件容器转换方法。
根据本发明的一方面,提供了一种FLV到MP4的文件容器转换方法,包括如下步骤:
从原文件读取时间戳信息并获得每一帧的stts;
将连续的stts合并为一个entry。
在其中一个实施例中,从原文件读取时间戳信息并获得每一帧的stts步骤中,具体方法如下:
读取原文件每帧的时间戳信息,第n帧的时间戳信息记为dts(n);
根据stts(n)=dts(n+1)-dts(n)公式,换算得每一帧的stts。
在其中一个实施例中,将连续的stts合并为一个entry的步骤中,具体方法如下:
计算每帧的DT值,并预设一个常量THR,当连续两帧的DT值的差值小于预设的常量THR,则连续的两帧合并为一个entry。
这种FLV到MP4的文件容器转换方法,提供了一种高效的转换方法,在有限的精度损失下,可以使得转换后的’moov’box长度有效降低,从而减少文件的加载时间。
具体实施方式
为了便于理解本发明,下面将用具体实施例对本发明进行更全面的描述。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这实施例的目的是使对本发明的公开内容的理解更加透彻全面。
本发明一实施例的FLV到MP4的文件容器转换方法,包括如下步骤:
步骤S1、从原文件读取时间戳信息并获得每一帧的stts。
具体地,通过FLVSplitter读取源文件内容,将源文件的每帧Audio/Video数据,包括解码时间戳信息(DTS)送给后端的MP4Muxer。
步骤S2、将连续的stts合并为一个entry。
具体地,计算每帧的DT值,并预设一个常量THR,当连续两帧的DT值的差值小于预设的常量THR,则连续的两帧合并为一个entry。
DT值计算方法如下:
假设MP4文件共有N个entry,每个entry的samplecount分别记为sttssamplecount(n),每个entry的sampleoffset记为sttssampleoffset(n),n=1~N。
设F(n)为第n个entry的第一帧的帧序号n:1~N,
则F(0)=0,F(1)=1,
当n>1,n≤N+1时,
F ( n ) = F ( n - 1 ) + s t t s _ s a m p l e _ c o u n t ( n - 1 ) = 1 + &Sigma; i = 1 i < n - 1 s t t s _ s a m p l e _ c o u n t ( i )
设文件的总帧数为M,则M=F(N)+sttssamplecount(N)=F(N+1)-1
对于第m(m≥1,m≤N)帧,一定有一个唯一的m’,使得m≥F(m’)且m<F(m’+1),那么第m帧的DT值如下:
D T ( m ) &Sigma; i = 0 i < m , s t t s _ s a m p l e _ o f f s e t ( i ) * s t t s _ s a m p l e _ c o u n t ( i ) + ( m - m , ) * s t t s _ s a m p l e _ o f f s e t ( m , )
在写入文件之前,分别对所有连续的audio帧和video帧进行分组,每一组一个entry,且对应一个使得总entry数尽量少并且保证由MP4文件得到的每帧的DT和原始FLV的DT的误差在一个很小的范围。
具体地,分组的步骤如下:
步骤A1、假设原始文件共有的帧数为M。先计算每帧的原始stts,
sttsorg(n)=DTorg(n+1)-DTorg(n)
步骤A2、先令n=1,m=1,其中n为帧序号,m为从当前第n帧之前共有的entry个数。
然后令n=2,继续步骤A3。
步骤A3、判断第n帧是否可以与第n-1帧合为一组,令
s t t s _ s a m p l e _ o f f s e t ( m ) = ( &Sigma; i = F ( N ) i < n s t t s ( i ) ) / ( n - F ( m ) )
由此,根据上述DT值的计算方法,可以计算帧序号为n’的帧(n’:F(N)~n)的DT(n’)。
如果所有的DT(n’)与DTorg(n’)的差值都小于一个预设的常量THR(典型的THR为1ms),那么表示第n帧可以和之前的帧合为一个entry。
此时令n=n+1,如果n<N,分组完毕;否则继续A3。
反之,则表示第n帧不能和之前的帧合为一个entry,这样就可以确定第m个entry,
sttssamplecount(m)=n-1-F(m-1)
sttssampleoffset=(DTorg(n)-DTorg(F(m)))/sttssamplecount(m)
然后令m=m+1,n=n+1,如果n<N,分组完毕;否则继续步骤A3。
这种FLV到MP4的文件容器转换方法,提供了一种高效的转换方法,在有限的精度损失下,可以使得转换后的’moov’box长度有效降低,从而减少文件的加载时间。根据本实施例方法转换后的’moov’box长度可降低约30%。
如对于一个内容2小时的FLV文件,Video是30fps,audio是48000hz的AAC文件,
那么audio的帧数=2*3600/(1024/48000)=337500
Video的帧数=2*3600*30=216000
如果没有进行精度补偿,那么生成出来的audio和video的stts大小大约为
Audio=337500*8=2700000
Video=216000*8=1728000
其中8代表的是每个stts占有的字节数。
经过精度补偿后,audio和video的stts在理想状态下(即输入源没有丢包的情况下)只会占用12个字节。
减少的字节数(BYTES)=(2700000+1728000)=4428000。
对于平均10M的带宽,可以减少加载的时间(4428000*8/10000000)=3.5424s
以上所述实施例仅表达了本发明的个别实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (3)

1.一种FLV到MP4的文件容器转换方法,其特征在于,包括如下步骤:
从原文件读取时间戳信息并获得每一帧的stts;
将连续的stts合并为一个entry。
2.根据权利要求1所述的一种FLV到MP4的文件容器转换方法,其特征在于,所述从原文件读取时间戳信息并获得每一帧的stts步骤中,具体方法如下:
读取原文件每帧的时间戳信息,第n帧的所述时间戳信息记为dts(n);
根据stts(n)=dts(n+1)-dts(n)公式,换算得每一帧的stts。
3.根据权利要求1所述的一种FLV到MP4的文件容器转换方法,其特征在于,所述将连续的stts合并为一个entry的步骤中,具体方法如下:
计算每帧的DT值,并预设一个常量THR,当连续两帧的所述DT值的差值小于预设的所述常量THR,则所述连续的两帧合并为一个所述entry。
CN201510902768.2A 2015-12-10 2015-12-10 一种flv到mp4的文件容器转换方法 Active CN105554593B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510902768.2A CN105554593B (zh) 2015-12-10 2015-12-10 一种flv到mp4的文件容器转换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510902768.2A CN105554593B (zh) 2015-12-10 2015-12-10 一种flv到mp4的文件容器转换方法

Publications (2)

Publication Number Publication Date
CN105554593A true CN105554593A (zh) 2016-05-04
CN105554593B CN105554593B (zh) 2019-04-02

Family

ID=55833493

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510902768.2A Active CN105554593B (zh) 2015-12-10 2015-12-10 一种flv到mp4的文件容器转换方法

Country Status (1)

Country Link
CN (1) CN105554593B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090232220A1 (en) * 2008-03-12 2009-09-17 Ralph Neff System and method for reformatting digital broadcast multimedia for a mobile device
CN102256162A (zh) * 2011-07-22 2011-11-23 网宿科技股份有限公司 基于实时文件格式转换的优化流媒体点播的方法和系统
US20110292229A1 (en) * 2010-05-25 2011-12-01 Deever Aaron T Ranking key video frames using camera fixation
CN102883189A (zh) * 2012-10-16 2013-01-16 北京千橡网景科技发展有限公司 视频提供方法和系统
CN103020297A (zh) * 2012-12-31 2013-04-03 传聚互动(北京)科技有限公司 兼容多种平台的视频文件编解码方法和系统
CN103905841A (zh) * 2014-03-18 2014-07-02 深圳市云宙多媒体技术有限公司 自适应网络带宽的多协议多播放器视频播放方法和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090232220A1 (en) * 2008-03-12 2009-09-17 Ralph Neff System and method for reformatting digital broadcast multimedia for a mobile device
US20110292229A1 (en) * 2010-05-25 2011-12-01 Deever Aaron T Ranking key video frames using camera fixation
CN102256162A (zh) * 2011-07-22 2011-11-23 网宿科技股份有限公司 基于实时文件格式转换的优化流媒体点播的方法和系统
CN102883189A (zh) * 2012-10-16 2013-01-16 北京千橡网景科技发展有限公司 视频提供方法和系统
CN103020297A (zh) * 2012-12-31 2013-04-03 传聚互动(北京)科技有限公司 兼容多种平台的视频文件编解码方法和系统
CN103905841A (zh) * 2014-03-18 2014-07-02 深圳市云宙多媒体技术有限公司 自适应网络带宽的多协议多播放器视频播放方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王华青: "MP4文件流化方法与流媒体系统开发", 《中国优秀硕士学位论文全文数据库》 *

Also Published As

Publication number Publication date
CN105554593B (zh) 2019-04-02

Similar Documents

Publication Publication Date Title
CN102724551A (zh) 一种视频编码系统和方法
CN103200425B (zh) 一种多媒体处理装置及方法
CN102595114B (zh) 一种在低端嵌入式产品上播放视频的方法及终端
CN106303379B (zh) 一种视频文件逆序播放方法及系统
RU2010135724A (ru) Многоканальный аудиокодек без потерь, который использует адаптивную сегментацию с возможностями точек произвольного доступа (rap) и множества наборов параметров предсказания (mpps)
JP2003114845A (ja) メディア変換方法およびメディア変換装置
CN105074821A (zh) 音频编码器和解码器
CN103581678A (zh) 由量化控制改良解码器性能的方法与系统
CN104575547A (zh) 多媒体文件制作方法、播放方法及系统
CN100369481C (zh) 代码变换方法及其装置
WO2011021239A1 (ja) オーディオ・ストリームを合成する装置、方法及びプログラム
CN102971788A (zh) 音频信号无缝播放的方法及编码器和解码器
CN109640162B (zh) 码流转换方法及系统
CN102243615B (zh) 一种支持音视频帧存储的内存缓冲管理方法
CN103475900A (zh) 手机电视业务视频帧的封装方法、装置及前端系统
CN113271467B (zh) 一种支持高效编辑的超高清视频分层编解码方法
US20130064308A1 (en) Coding and decoding synchronized compressed video bitstreams
US8543230B2 (en) Optimizing seek functionality in media content
JP3890299B2 (ja) スケーラブルデータストリームを生成する方法と装置およびスケーラブルデータストリームを復号化する方法と装置
CN106817584A (zh) 一种基于fpga的mjpeg压缩实现方法和fpga
CN103024394A (zh) 视频文件剪辑方法和装置
CN105554593A (zh) 一种flv到mp4的文件容器转换方法
CN102811380A (zh) 多媒体文件中音视频数据的解复用方法及装置
US20160226517A1 (en) Modified Huffman Decoding
CN114710629A (zh) 一种实现超高清视频格式转换和图文叠加的装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 310000 A Block, 16th Floor, E Building, Paradise Software Park, No. 3 Xidoumen Road, Hangzhou City, Zhejiang Province

Patentee after: Hangzhou Dang Hong Polytron Technologies Inc

Address before: 310000 B2010, two floor, North (two), six and 368 Road, Binjiang District, Hangzhou, Zhejiang.

Patentee before: HANGZHOU DANGHONG TECHNOLOGY CO., LTD.

CP03 Change of name, title or address