录制1秒音频ios

时间:2015-01-30 09:53:28

标签: ios objective-c iphone

如何在不使用文件系统的情况下仅录制一秒音频声音并将其转换为字节数组以通过JSON发送?

NSDictionary *recordSettings = [NSDictionary
                                        dictionaryWithObjectsAndKeys:
                                        [NSNumber numberWithInt:AVAudioQualityMin],
                                        AVEncoderAudioQualityKey,
                                        [NSNumber numberWithInt:16],
                                        AVEncoderBitRateKey,
                                        [NSNumber numberWithInt: 1],
                                        AVNumberOfChannelsKey,
                                        [NSNumber numberWithFloat:16000.0], AVSampleRateKey,
                                        [NSNumber numberWithInt:8], AVLinearPCMBitDepthKey,
                                        nil];

recorder = [[AVAudioRecorder alloc] initWithURL:recordedFile settings:recordSettings error:nil];

否则,我想知道这一秒的声音大小和时间。

1 个答案:

答案 0 :(得分:0)

采样率= 16,000 Hz(每秒采样数)
比特率= 16(每个样本的比特)
因此,1秒样本的大小= 16K×16 = 256Kbits

要记录一秒钟,您可以使用
- (BOOL)recordForDuration:(NSTimeInterval)duration

如果您想快速启动,可以使用
预先准备录音 - (void)prepareToRecord

要在特定时间录制,请使用
- (BOOL)recordAtTime:(NSTimeInterval)time forDuration:(NSTimeInterval)duration
(隐含地调用prepareToRecord

要获得准确的录制时间,您需要使用较低级别的API。如果您不担心准确性,可以记录调用上述方法的时间或写入文件系统的时间。

如果您不想使用文件系统,则需要使用较低级别的API,您可以使用回调来获取比特流。 Apple的Core Audio,或许多C ++音频引擎之一(例如PortAudioFModNovocaine)将允许您这样做。