您可以通过将文件大小除以比特率来计算持续时间.您可以从其中一个帧头获取比特率.当然,这对于可变速率的MP3不起作用,在每种帧中你可以有不同的速率.
使用标头布局(它只有四个字节):
在流中打开MP3
通过读取找到第一个帧头的开头,直到找到同步头,其中有11个连续位设置为1.这曾经是12,但它被调整为允许MPEG版本2.5.
确定MPEG版本ID.为了找到比特率,V2.5与V2相同
确定图层描述
读取比特率指数
使用MPEG版本,层描述和比特率索引,从链接头参考中的比特率索引表确定实际比特率
将文件大小以千比特((8*大小,以字节为单位)/ 1000)除以比特率,以秒为单位获得持续时间
我找不到Delphi示例,但这是一个使用此技术进行参考的C#实现.请参阅getLengthInSeconds方法.
| 归档时间: |
|
| 查看次数: |
6042 次 |
| 最近记录: |