看板 MacDev 關於我們 聯絡資訊
請問 如果我 buffer size 設為 320 希望他每次出來的資料都是 320 byte 這樣我該在哪裡做設定呢?? 因為我直接改 buffer size 出來的聲音都是noise 謝謝回覆 ※ 引述《tocute (小飄)》之銘言: : 借這個標題問個錄音問題 : 現在在做一個一邊錄音後馬上撥出的程式 : 當我sample rate 選44100時 結果是正確的 : 可是當我選 8000/16000 當我錄長音時(約10秒鐘長的連續聲音) : 中間就會聽到中斷聲 : 可是如果我把他存成檔案再撥出 就沒事了 : 之前在android , MS 也有遇到類似的問題 : 有人有相關經驗可以分享指點嗎 : 謝謝 : ※ 引述《zonble (zonble)》之銘言: : : 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
ryanliang:320這數字怎麼來的? 舉個例子給你 假設取樣為44.4K每秒 05/19 18:08
ryanliang:又是立體聲 所以每秒的資料量是88200Bytes 像我的Buffer 05/19 18:10
ryanliang: 上面錯了 我重算一次~ 05/19 18:14
ryanliang:每秒資料量=44100(樣本/秒)*4(Byte/樣本)/0.5(取半秒) 05/19 18:15
ryanliang:所以我Buffer會設為88200這個大小 以上為LPCM的錄音品質 05/19 18:17
ryanliang:若是用AAC的Codec話 又是另一個數字了 05/19 18:17
zonble:不太懂為什麼要把 buffer 弄這麼小… 05/19 18:35
ryanliang:Z大 我是用你的範例去改的 你裡面設定了好像也是這個值 05/19 18:40
ryanliang:我只是去試著了解這值怎麼來的 不大懂為什麼要設這魔小 05/19 18:41
ryanliang:希望有更有效率的方法 我也感覺小了點 但是太大太小會有 05/19 18:43
ryanliang:雜訊出來 不知道是甚麼樣的問題? 05/19 18:43
tocute:因為我要作編碼 編碼的最小單位就是 16000/50 = 320 05/19 20:18
tocute:另原因是錄音後 在撥出來 兩者時間差一秒多 猜想是buffer大 05/19 20:20
tocute:請問有沒有使用 Audio Unit 做錄音 波音的程式呢?? 05/20 17:46