Re: [問題] 請問iPhone有辦法將接收道的聲音直接放 …
借這個標題問個錄音問題
現在在做一個一邊錄音後馬上撥出的程式
當我sample rate 選44100時 結果是正確的
可是當我選 8000/16000 當我錄長音時(約10秒鐘長的連續聲音)
中間就會聽到中斷聲
可是如果我把他存成檔案再撥出 就沒事了
之前在android , MS 也有遇到類似的問題
有人有相關經驗可以分享指點嗎
謝謝
※ 引述《zonble (zonble)》之銘言:
: ※ 引述《tocute (小飄)》之銘言:
: : 剛好也需要類似的功能
: : 謝謝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
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.220.52.43
推
05/17 12:35, , 1F
05/17 12:35, 1F
→
05/17 12:36, , 2F
05/17 12:36, 2F
討論串 (同標題文章)
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章