音頻幾個很重要的參數(shù)!
采樣率:每秒采集數(shù)據(jù)的次數(shù)
采樣精度:每次采集數(shù)據(jù)的位數(shù)
通道數(shù):存在幾路音頻
比特率:針對編碼格式,表示壓縮編碼后每秒的音頻數(shù)據(jù)量大小。
音頻的幀的概念沒有視頻幀那么清晰,幾乎所有視頻編碼格式都可以簡單的認(rèn)為一幀就是編碼后的一副圖像。
但音頻幀跟編碼格式相關(guān),它是各個編碼標(biāo)準(zhǔn)自己實現(xiàn)的。因為如果以PCM(未經(jīng)編碼的音頻數(shù)據(jù))來說,它根本就不需要幀的概念,根據(jù)采樣率和采樣精度就可以播放了。比如采樣率為44.1HZ,采樣精度為16位的音頻,你可以算出bitrate(比特率)是44100*16kbps,每秒的音頻數(shù)據(jù)是固定的44100*16/8 字節(jié)。
amr幀比較簡單,它規(guī)定每20ms的音頻是一幀,每一幀音頻都是獨立的,有可能采用不同的編碼算法,以及不同的編碼參數(shù)。
mp3幀較為復(fù)雜一點,包含了更多的信息,比如采樣率,比特率,等各種參數(shù)。
AT測試前設(shè)定音頻參數(shù)
這里主要是說明一個從C語言調(diào)用AudioSystem::SetParameter封裝的過程。
新增一個audio_hw_interface.cpp文件
#include 《media/AudioSystem.h》
namespace android {
extern “C” void send_audio_calibration(int acdb_id, int capability, int app_id, int sample_rate)
{
char param[50];
String8 paramValue;
snprintf(param, sizeof(param), “send_audio_calibraTIon=%d-%d-%d-%d”,acdb_id, capability, app_id, sample_rate);
paramValue.setTo(param);
AudioSystem::setParameters(paramValue);
return;
}
}; // namespace android
在Android.mk中添加需要頭文件搜索目錄和動態(tài)庫
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
$(TOP)/frameworks/av/include/media
LOCAL_SHARED_LIBRARIES := libcuTIls liblog libc libmedia libuTIls
在調(diào)用該封裝函數(shù)的C語言中。
extern void send_audio_calibraTIon(int acdb_id, int capability, int app_id, int sample_rate);
send_audio_calibration(acdb_id, 2,14, 48000);
這樣就可以了。