[mp3]声音播放太快 问题解析

问题:播放音频文件发现声音变快了

audio

分析

MPEG 组织 官方介绍
基本介绍可以参考 https://www.cnblogs.com/ranson7zop/p/7655474.html
mp3 协议 属于mpeg 范畴

一个mp3 文件由 TAG_V2(ID3V2),Frame, TAG_V1(ID3V1) 组成
TAG_V2 包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量
Frame1 FRAME由分为帧头和数据实体两部分,帧头记录了mp3的位率,采样率,版本等信息
Frame2 FRAME由分为帧头和数据实体两部分,帧头记录了mp3的位率,采样率,版本等信息
Frame 3 FRAME由分为帧头和数据实体两部分,帧头记录了mp3的位率,采样率,版本等信息
Frame … FRAME由分为帧头和数据实体两部分,帧头记录了mp3的位率,采样率,版本等信息
ID3V1 包含了作者,作曲,专辑等信息,长度为128BYTE

看出来每个帧可以设置 VBR 动态码率 和 CBR 静态码率,因为问题是音频问题,所以不用看 曲目信息
只要看帧 解析帧头信息

frame 的帧头包含 32bit 4个字节
名称 占bit值 说明
CRC 同步信息 11 bit 11位 全是1
version 版本ID 2 bit 00:mpeg 2.5   01:保留   10:mpeg2   11:mepg1
layer 层 2 bit 00:保留   01: layer3   10: layer2   11: layer1
protect 位 1 bit 0: 会增加16bit 校验 1: 不校验
bit 率 4 bit 看bit率表
采样率 2 bit 看 采样率表
填充bit 1 bit 设置1 增加一个slot layer1 是4字节,其他 layer 是1字节
保留位 1bit 一般设置0
声道模式 2bit 就是声道数 00:立体声 01:联合立体声 10:双声道 2 11 单声道 1
扩增模式 2bit 未使用
版权 1bit 一直为1
原版标志 1bit 为1
强调方式 2bit 为使用
采样率表格
采样率索引 MPEG-1 (Hz) MPEG-2 (Hz) MPEG-2.5 (Hz)
00 44100 22050 11025
01 48000 24000 12000
10 32000 16000 8000
11 保留 保留 保留
比特率表格

[mp3]声音播放太快 问题解析
懒得自己整,官网截图了 注意1000bps =1kbps

其实是因为没有正确获取 channel num ,sample rate, bit 值 需要根据比特率计算出来,填充给alsa 接口就可以