faac是乙個成熟的aac編碼庫。其提供的主要介面函式如下:
faacencopen
faacenchandle faacapi faacencopen
(unsigned
long samplerate,
unsigned
int numchannels,
unsigned
long *inputsamples,
unsigned
long *maxoutputbytes
);
* samplerate *:取樣率
* numchannels *:聲道數
* inputsamples * :編碼時每次需要輸入的位元組數
* maxoutputbytes * : 編碼時輸出的最大位元組數
該函式主要是建立乙個編碼器,並且返回需要輸入的位元組及編碼返回的最大位元組數
faacencclose
void faacapi faacencclose( faccenchandle hencoder);
與上述介面相對應,關閉編碼器。
faacencgetcurrentconfiguration
faacencconfigurationptr faacapi faacencgetcurrentconfiguration( faccenchandle hencoder);
該函式獲取當前編碼器的配置
faacencgetcurrentconfiguration
faacencconfigurationptr faacapi faacencsetcurrentconfiguration
( faccenchandle hencoder,
faacencconfigurationptr config
);
該函式設定當前編碼器的配置
faacencencode
int faacapi faacencencode
( faacenchandle hencoder,
int32_t *inputbuffer,
unsigned
int samplesinput,
unsigned
char *outputbuffer,
unsigned
int buffersize
);
* hencoder *:編碼器,通過faacencopen函式建立的
* inputbuffer *:輸入資料
* sampleinput *:輸入資料大小,如果為0,則編碼器會把換成的資料都給輸出
* outputbuffer *:存放輸出資料
* buffersize *:存放輸出資料的快取區大小,至少是和maxoutputbytes一樣的大小
該函式進行編碼
faacencconfigurationptr 結構
typedef
struct faacencconfiguration
faacencconfiguration, *faacencconfigurationptr;
簡單的介紹其中的幾個引數
mpegversion :mpeg版本, mpeg2/mpeg4
aacobjecttype:main/low/ltp
allowmidside:mid/side coding
uselfe:低頻增強
usetns:瞬時雜訊定形(temporal noise shaping,tns)濾波器
bitrate :位元速率
bandwidth:占用的頻寬
outputformat:輸出格式,0 =raw, 1 = adts
inputformat:輸入格式,faac_input_null/faac_input_16bit/faac_input_24bit/faac_input_32bit/faac_input_float
**如下/* aac_encode.c */
#include
#include
#include
#include
#include
int main (int argc, char **argv)
else
if (!rfile)
if (argv[2]) else
if (!wfile)
pcm_input = (int16_t *)malloc(inputsample * sizeof(int16_t));
aac_output = (uint8_t *)malloc(maxoutputbytes * sizeof(uint8_t));
/* encode */
while (1) else
if (ret < 0)
readcount += readlen * 2;
writecount += ret;
if (!readlen && !ret)
}free(pcm_input);
free(aac_output);
end:
if (wfile) fclose(wfile);
if (rfile) fclose(rfile);
faacencclose(encoder);
return
0;}
/* makefile */
all: aac
aac: aac_encode.c makefile
gcc -o3
-wall
-werror
-wno
-unused aac_encode.c -lfaac
-o aac_enc
clean:
rm -rf aac_enc
最後編譯,執行即可
make
./aac_enc /tmp/北京北京8k16bits單聲道.pcm /tmp/output.aac
注意:以上**在macos 10.10.4 上編譯並執行通過 編譯faac音訊編碼庫
faac是mpeg 4和mpeg 2的aac編碼器,我們將使用它作為音訊的軟編碼庫。faac官網 sudo wgettar zxvf faac 1.29.9.2.tar.gz1.執行cd faac 1.29.9.2開啟資料夾 2.執行sudo vim generate.sh建立編輯指令碼檔案,並編輯...
利用faac進行編碼
利用faac直接對pcm進行aac編碼 下面是我在faac fronted main.c中抽出來 對pcm進行aac編碼的例子 希望對大家有用。片源資訊 output.pcm 44100 2 16 include include include include include include def...
AAC音訊編碼庫FAAC和解碼庫FAAD移植
編譯faac 1.28時遇到錯誤 mpeg4ip.h 126 error new declaration char strcasestr const char const char 解決方法 common mp4v2 mpeg4ip.h 從123行開始修改此檔案mpeg4ip.h,到129行結束。修...