/* * unsigned long nSampleRate, // 采樣率,單位是bps * unsigned long nChannels, // 聲道,1為單聲道,2為雙聲道 * unsigned long &samplesInput, // 傳引用,得到每次調用編碼時所應接收的原始數據長度 * unsigned long &maxBytesOutput // 傳引用,得到每次調用編碼時生成的AAC數據的最大長度 */ enc = faacEncOpen(samplerate, channels, &samplesInput, &maxBytesOutput);
在使用aac編碼之前 由已知采樣率和聲道 首先獲取 每次aac編碼所應接收的原始數據長度即上面代碼中第三個參數 samplesInput
還有每次編碼時輸出的aac數據最大長度 即上面代碼中第四個參數 maxBytesOutput
音頻編碼:
int enc_result = faacEncEncode(enc, (int32_t *) pcm_buffer, samplesInput, out, enc_size);
在真正音頻aac編碼時,該接口使用的pcm_buffer[] 也就是輸入的原始數據要等於之前獲取的每次aac編碼所應接收的原始數據長度 也就是上面獲取的 samplesInput 的長度
enc_size 就是上面獲取的每次編碼時輸出的aac數據最大長度 也就是上面獲取的 maxBytesOutput
上面 out[] 大小就是 maxBytesOutput 的長度
備注:在音頻編碼的時候只需要原始的pcm數據,那些時間戳跟真正aac編碼沒有太大關系。時間戳可能會跟音頻aac編碼后的數據一起進行下一步操作。
---------------------------------------------
http://blog.sina.com.cn/s/blog_4d61a75701016j05.html