一 概念
1.24bit音频:
24bit 指使用 3 个字节记录振幅值,意味可以记录 16,777,216 种声音振幅的变化,动态范围可达 144 dB(人耳听觉的动态范围是120dB,超过 120dB 人耳会痛,所以 120dB 又称痛阀)。下面是三种常见的音频采样比对表:

2.24位一般是采样深度的概念,还有一个采样率的概念,比如,16k,48k等。这两者的关系下图可以清晰的展现:
二 实例解析:
下面直接给出两份源码,就是24bit和16bit的相互转换实例:
#include <stdio.h> typedef unsigned char uint8_t; typedef unsigned int uint32_t; short array_16bit[] = {0,22618,31999,22654,50,-22582,-31999,-22690,-114}; uint8_t pcm24[200]; void dump8(uint8_t *data,uint32_t len) { for (uint32_t i = 0; i < len; i++) { /* code */ printf("0x%x,",data[i]); } printf("\n\r"); } uint32_t pcm16_to_pcm24(short *data,uint32_t len) { uint32_t j = 0; for(uint32_t iss = 0;iss < len; iss++) { int value = ((float)data[iss]/0x7fff)*16777216; printf("value is:%d \n\r",value); pcm24[j++] = value & 0xff; pcm24[j++] = (value & 0xff00)>>8; pcm24[j++] = (value & 0xff0000)>>16; } return j; } int main() { uint32_t len = pcm16_to_pcm24(array_16bit,9); printf("pcm16_to_24bit len is:%d \n\r",len); dump8(pcm24,len); return 0; }
三 总结
24bit音频在实际应用中十分广泛。作为一个音频解决方案商,研究和应用它是一个非常重要的任务。
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2023-07-03 基于python的生理电信号采集的数据转换和处理软件
2018-07-03 免费开源的diff软件“meld”-替代beyond compare的神器