失效链接处理 |
Android音频基础知识_V1.9 PDF 下载
本站整理下载:
相关截图:
主要内容:
音频指人耳可以听到的声音频率在20Hz~20kHz之间的声波,高保真系统会处理10Hz~90KHz的音频,通常SOC主芯片和PA功放芯片的音频后处理post-processing会对此范围的音频做带通滤波。
常见基本参数包括:
采样频率sample rate
指每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时占的资源也多,尤其是存储和计算方面的资源。通常声音回放的采样率取44.1KHz或者48KHz,某些HiFi高保真系统会上到96KHz,大部分Android系统的vendor hal native sample rate是48KHz。录音的采样率主要由app根据实际场景自己选择,比如录制music之类的一般选择44.1KHz或者48KHz,人声对话选择8KHz或者16KHz就足够。
采样位数sample bit-depth
采样值,用来衡量样本量化的动态范围。也可理解为采样分辨率,位数越大越精细,声音的细节表现力就越强,同时在计算过程中精度丢失越少。通常媒体文件、声音回放源数据使用16bit有符号整数或者32bit signed float表示,一些中间处理过程的计算可能会采用20bit signed int、24bit signed int、32bit signed float数,以防止计算过程中丢失精度。
通道数channel count
声音通道的数目,常见的为单声道Mono、立体声Stereo、3.1ch、3.1.2ch、5.1ch、7.1ch,带宽大的音频系统能处理到32个声道。
帧大小frame size
单个音频采样的数据大小,也是计算过程能够处理的最小单元。
frame_size = sample_bits * channel_count
16bits * 2ch = 32 bits
帧块frame block
一定数量的帧序列。对vendor hal层以下的libtinyalsa、card driver和hardware DMA操作来说,以帧块作为单次处理的数据单元,通常以能够回放10ms~20ms的时间所需要的数据作为帧块大小。
frame_block_size = 20ms/1000ms * 48K * frame_size = 960 * frames = 960 * 4B = 3840 B
对于一些要求low latency的场合来说,通常以5ms作为帧块大小,
frame_block_size = 5ms/1000ms * 48K * frame_size = 240 * frames = 240 * 4B = 960 B
从libtinyalsa往下传递数据参数时都应当是帧块大小的整数倍。
各场景音频输出数据流路径
Speaker输出,PCM format数据流
|