您的位置:首页 > 其它

MP3关于计算duration

2012-01-18 13:44 435 查看
先简单介绍一下基本概念:

Sampling rate: 每秒采样的次数

Sample size : 每次彩样的大小 比如16位8位

Audio Channels: 采样的通道个数

Bit rate : 每秒采样的kilo bit,这里要注意的是,BIT RATE的单位kilo bit表示1000BIT,而不是1024,例如32kbit为32000kbit

SPF: sample per frame每帧的采样次数

所以原始未解压的大小可以用公式计算文件大小如:SAMPLING RATE * SAMPLE SIZE * CH = ORIGINAL FILE SIZE

在做DURATION之前,我查了FFMPEG的做法,是用一个timebase结合sample rate, spf, frame去rescale算的,不过因为无法理解timebase的值为什么是一个很奇怪的14112000,对为什么rescale也没理解。如果有高手能指点一下,则非常感谢。

这里讲一下我的做法,总体测试下来还是非常准确的:

1. 对于CBR的计算,通过固定的BIT RATE与文件大小,注意这里的文件大小必须是STREAM开始以后的大小

duration = ((file_size / (bit_rate/8)) * 1000) + ((file_size % (bit_rate/8) * 1000)/bit_rate)

乘1000是为了得到毫秒的结果

2. 对于VBR的计算,通过SPF(每帧采样次数),frame(帧数),sample rate(每秒采样次数)计算

即: spf * frame = total_sample(总采样数)

duration = total_sample / sample_rate

测试下来发现我们的7000多种MP3都能通过测试,想要SAMPLE CODE的同学可以留下EMAIL
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: