你好
我被要求做一个项目,其中包括一个STM32和VS1003,FAT32 USB主机MP3播放器。 所有的部分都完成了,但是现在,我需要知道一首歌的持续时间
不幸的是,TLEN并不是所有的歌曲都有,所以我不能指望它。 我的理解是mp3是由帧组成的,每帧为0.026秒,每帧以0XFF 0xFX开始(X可以是任意的),因此我需要在2个单独的字节中搜索0xFFFx并对其进行计数,然后乘以0.026并获得持续时间
由于微控制器限制SRAM文件需要从USB读取2048字节到2048字节,因此我决定先用Python在计算机上测试这一理论,然后在微控制器上将其更改为C(以便于测试算法),但我得到的数字比预期的要多得多
例如,一个mp3给我25300个0XFF 0XFX,转换为657.5秒,但我知道它实际上是187秒
<0>似乎0xff0xfx也在歌曲的中间有没有可靠的方法来计算标题?或者有没有其他方法可以在不计算页眉的情况下获得长度? 任何注释或基本代码(python、c或js)都会提前收到
帧同步标记不是0xFFFx,其中x是任意四位,它是0xFFFx或0xFFEx。由于音频数据中可能会出现相同的模式,因此对这些模式的强制搜索将不起作用。您必须找到同步标记的第一个实例,然后根据帧头中的比特率计算每个帧的字节长度。关于这个计算已经有帖子了,这里:
Formula from mp3 Frame Length
相关问题 更多 >
编程相关推荐