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

看板MacDev作者 (小飄)時間14年前 (2011/05/19 15:57), 編輯推噓0(0014)
留言14則, 3人參與, 最新討論串18/19 (看更多)
請問 如果我 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

05/19 18:08, , 1F
320這數字怎麼來的? 舉個例子給你 假設取樣為44.4K每秒
05/19 18:08, 1F

05/19 18:10, , 2F
又是立體聲 所以每秒的資料量是88200Bytes 像我的Buffer
05/19 18:10, 2F

05/19 18:14, , 3F
上面錯了 我重算一次~
05/19 18:14, 3F

05/19 18:15, , 4F
每秒資料量=44100(樣本/秒)*4(Byte/樣本)/0.5(取半秒)
05/19 18:15, 4F

05/19 18:17, , 5F
所以我Buffer會設為88200這個大小 以上為LPCM的錄音品質
05/19 18:17, 5F

05/19 18:17, , 6F
若是用AAC的Codec話 又是另一個數字了
05/19 18:17, 6F

05/19 18:35, , 7F
不太懂為什麼要把 buffer 弄這麼小…
05/19 18:35, 7F

05/19 18:40, , 8F
Z大 我是用你的範例去改的 你裡面設定了好像也是這個值
05/19 18:40, 8F

05/19 18:41, , 9F
我只是去試著了解這值怎麼來的 不大懂為什麼要設這魔小
05/19 18:41, 9F

05/19 18:43, , 10F
希望有更有效率的方法 我也感覺小了點 但是太大太小會有
05/19 18:43, 10F

05/19 18:43, , 11F
雜訊出來 不知道是甚麼樣的問題?
05/19 18:43, 11F

05/19 20:18, , 12F
因為我要作編碼 編碼的最小單位就是 16000/50 = 320
05/19 20:18, 12F

05/19 20:20, , 13F
另原因是錄音後 在撥出來 兩者時間差一秒多 猜想是buffer大
05/19 20:20, 13F

05/20 17:46, , 14F
請問有沒有使用 Audio Unit 做錄音 波音的程式呢??
05/20 17:46, 14F
文章代碼(AID): #1DrCs7wU (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1DrCs7wU (MacDev)