Re: [問題] 請問iPhone有辦法將接收道的聲音直接放 …

看板MacDev作者 (小飄)時間14年前 (2011/05/13 10:45), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串17/19 (看更多)
借這個標題問個錄音問題 現在在做一個一邊錄音後馬上撥出的程式 當我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
很有可能你的Buffer大小不夠大 導致Context Switch增加
05/17 12:35, 1F

05/17 12:36, , 2F
就感覺會有間斷聲(即時監聽時)存檔聽不會是因有緩衝過了
05/17 12:36, 2F
文章代碼(AID): #1Dp9ivv8 (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1Dp9ivv8 (MacDev)