音頻AAC編碼淺析


/*
*    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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM