作者tocute (小飘)
看板MacDev
标题Re: [问题] 请问iPhone有办法将接收道的声音直接放 …
时间Thu May 19 15:57:56 2011
请问 如果我 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
1F:→ ryanliang:320这数字怎麽来的? 举个例子给你 假设取样为44.4K每秒 05/19 18:08
2F:→ ryanliang:又是立体声 所以每秒的资料量是88200Bytes 像我的Buffer 05/19 18:10
3F:→ ryanliang: 上面错了 我重算一次~ 05/19 18:14
4F:→ ryanliang:每秒资料量=44100(样本/秒)*4(Byte/样本)/0.5(取半秒) 05/19 18:15
5F:→ ryanliang:所以我Buffer会设为88200这个大小 以上为LPCM的录音品质 05/19 18:17
6F:→ ryanliang:若是用AAC的Codec话 又是另一个数字了 05/19 18:17
7F:→ zonble:不太懂为什麽要把 buffer 弄这麽小… 05/19 18:35
8F:→ ryanliang:Z大 我是用你的范例去改的 你里面设定了好像也是这个值 05/19 18:40
9F:→ ryanliang:我只是去试着了解这值怎麽来的 不大懂为什麽要设这魔小 05/19 18:41
10F:→ ryanliang:希望有更有效率的方法 我也感觉小了点 但是太大太小会有 05/19 18:43
11F:→ ryanliang:杂讯出来 不知道是甚麽样的问题? 05/19 18:43
12F:→ tocute:因为我要作编码 编码的最小单位就是 16000/50 = 320 05/19 20:18
13F:→ tocute:另原因是录音後 在拨出来 两者时间差一秒多 猜想是buffer大 05/19 20:20
14F:→ tocute:请问有没有使用 Audio Unit 做录音 波音的程式呢?? 05/20 17:46