Re: [問題] 請問iPhone有辦法將接收道的聲音直接放 …
※ 引述《tocute (小飄)》之銘言:
: ※ 引述《zonble (zonble)》之銘言:
: 剛好也需要類似的功能
: 謝謝Z大提供的AudioStudy 教學
: 因為是研究之初 所以有些地方看不懂想請教一下各位板友
: 我最大的疑惑是
: 我找到的範例 幾乎都是在
: AudioQueueNewOutput 的 callback function 讀檔
: 根據我以前在ms, android 的經驗
: audio data 不是應該在 callback function 傳進來的參數嗎
: ex :AudioQueueBufferRef inBuffer
: 在callback function 內再把 audio data: inBuffer 傳給 speaker
: 而Z大提供的AudioStudy 裡面的OutptBufferHandler
: 似乎只有做 NSLog 這動作
: 即使註解掉 也能跑
audio queue 的 callback function 是在目前的 audio queue
資料已經放完之後,才會去觸發。所以,你一般看到的範例在做
的事情是,因為目前的資料已經放完了,需要繼續要資料,可能
是去讀檔案,或是已經在記憶體的 data,所以會在 callback
function 中繼續讀資料。
但是這個範例的狀況是,由於是把錄音進來的資料直接放出來,
所以,在放出聲音之後,就沒去做這件繼續讀資料的事情,反正
Input 有什麼資料,就往 Output 送。
實際上在把聲音丟到 Output 工作的,就是 88 到 94 行這段,
把 Input 進來的 buffer,用 memcpy 把資料直接複製到新的
buffer,然後在 94 行的 AudioQueueEnqueueBuffer,丟到
Output queue 去。
比較需要注意的是,Input Queue 在一直不斷重複使用同一個
buffer,然後每次都產生新的 buffer 給 output queue。
這個範例寫得比較隨便 :p
--
zonble.net
cocoa.zonble.net
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.195.12
討論串 (同標題文章)