使用FAAC進行AAC編碼

2021-06-10 08:49:31 字數 1408 閱讀 7395

faac和faad有win32的編譯工程,相對其他開源專案來說,win32的編譯很簡單了

faac,faad的編碼和解碼也封裝的非常好,使用上很簡單。

開啟faac編碼器

m_faachandle = faacencopen(isamplerate, ichannels, &m_usampleinput, &m_uoutputbytes);

if( 0 == m_faachandle )

return false ;

faacencconfigurationptr faaccfg;

faaccfg = faacencgetcurrentconfiguration(m_faachandle);

if (faaccfg->version != faac_cfg_version)

//* 設定配置引數

faaccfg->aacobjecttype = low;    //lc編碼

faaccfg->mpegversion = mpeg4;  //

faaccfg->usetns   = 1 ;                   //時域噪音控制,大概就是消爆音

faaccfg->allowmidside = 0 ;            //

faaccfg->bitrate  = m_nbitrate/m_uchannelnums;

faaccfg->bandwidth  = 0 ;              //頻寬

faaccfg->outputformat = isadts;  //輸出是否包含adts頭

faaccfg->inputformat = faac_input_16bit;

//faaccfg->shortctl = 0 ;

faaccfg->quantqual = 50 ;

//* 獲取解碼資訊.

//unsigned char* ucbuffer = null;

//unsigned long uldecoderspecificinfosize;

//faacencgetdecoderspecificinfo(m_faachandle, &ucbuffer, &uldecoderspecificinfosize);

if (!faacencsetconfiguration(m_faachandle, faaccfg))

m_usampleinput這個引數要注意,需要在編碼時使用。是faac所使用的音訊樣片數量

隨後就可以解碼了

int ibyteswritten = faacencencode(m_faachandle, (int32_t*)input, m_usampleinput , output, outlen );

判斷下ibyteswritten初始編碼的幾幀資料會返回0,0是資料被緩衝,並不是錯誤。

解碼相對編碼更簡單。

使用FAAC進行AAC編碼

faac和faad有win32的編譯工程,相對其他開源專案來說,win32的編譯很簡單了 faac,faad的編碼和解碼也封裝的非常好,使用上很簡單。開啟faac編碼器 m faachandle faacencopen isamplerate,ichannels,m usampleinput,m u...

使用FAAC進行AAC編碼

faac和faad有win32的編譯工程,相對其他開源專案來說,win32的編譯很簡單了 faac,faad的編碼和解碼也封裝的非常好,使用上很簡單。開啟faac編碼器 m faachandle faacencopen isamplerate,ichannels,m usampleinput,m u...

利用faac進行編碼

利用faac直接對pcm進行aac編碼 下面是我在faac fronted main.c中抽出來 對pcm進行aac編碼的例子 希望對大家有用。片源資訊 output.pcm 44100 2 16 include include include include include include def...