【发布时间】:2010-10-04 13:57:35
【问题描述】:
我正在使用 AVAudioRecorder 录制来自 iphone 麦克风的音频,但我想放弃静音时段:在检测到声音时开始录制,并在下次静音时停止录制。
不知道怎么做
有什么建议吗?
谢谢!
【问题讨论】:
标签: ios avaudiorecorder
我正在使用 AVAudioRecorder 录制来自 iphone 麦克风的音频,但我想放弃静音时段:在检测到声音时开始录制,并在下次静音时停止录制。
不知道怎么做
有什么建议吗?
谢谢!
【问题讨论】:
标签: ios avaudiorecorder
也许您可以使用 AVAudioRecorder 对音频电平测量的支持来跟踪音频电平并在电平高于给定阈值时启用录制。您需要启用计量:
[anAVAudioRecorder setMeteringEnabled:YES];
然后你可以定期调用:
[anAVAudioRecorder updateMeters];
power = [anAVAudioRecorder averagePowerForChannel:0];
if (power > threshold && anAVAudioRecorder.recording==NO) {
[anAVAudioRecorder record];
} else if (power < threshold && anAVAudioRecorder.recording==YES) {
[anAVAudioRecorder stop];
}
或者类似的东西。
【讨论】:
我找到了基于音频队列服务的方法。当您为传入的音频数据包定义队列缓冲区时,它更复杂但也更有趣。
如果缓冲区已满,您需要定义回调,因此缓冲区中充满了您可以根据需要处理的数据包,在我的情况下是为了检测静音和其他一些事情。
稍后有更多时间发布解决方案。如果有人催促,那就等不及给我发电子邮件,我很乐意提供帮助。
在此处查看此处的示例:http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html
【讨论】:
在开始真正录制之前,您可以通过录制到垃圾文件来确定背景音频电平:
AVAudioRecorder stops working when writing to /dev/null on iPhone 5s with iOS 7
【讨论】: