MP3关于计算duration

先简单介绍一下基本概念:
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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值