簡體   English   中英

將音頻直接錄制到NSData

[英]Record audio straight to NSData

我需要記錄音頻並將其直接發送到NSData,我嘗試對AVAudioRecorder進行同樣的操作,但是不幸的是,它會將記錄保存到文件中,並且此過程需要花費大量時間將音頻保存到文件中,然后再將其讀取到NSData中,請提前提供一些編碼幫助,可以將音頻直接保存到NSData對象。

我的錄音代碼:

printf("\nstart recording ...");
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryRecord error:nil];
NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] initWithCapacity:10];
[recordSettings setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[recordSettings setValue:[NSNumber numberWithFloat:11400.0] forKey:AVSampleRateKey]; 
[recordSettings setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
[recordSettings setValue :[NSNumber numberWithInt:8] forKey:AVLinearPCMBitDepthKey];
[recordSettings setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSettings setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
NSArray *arrayTempDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *soundFilePath = [[arrayTempDir objectAtIndex:0] stringByAppendingString: @"/sound.caf"];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtPath:soundFilePath error:nil];
NSLog(@"\n%@",soundFilePath);
NSURL *newURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
NSError *error = nil;
audioRecorder = [[ AVAudioRecorder alloc] initWithURL:newURL settings:recordSettings error:&error];
NSLog(@"%@",error);
[audioRecorder setDelegate:self];
if ([audioRecorder prepareToRecord] == YES)
{
    audioRecorder.meteringEnabled = YES;
    [audioRecorder record];
    [NSTimer scheduledTimerWithTimeInterval:RECORDING_METERING target:self selector:@selector(stopRecording) userInfo:nil repeats:NO];
}
[recordSettings release];

`

我現在想做同樣的事情。 我偶然發現了Audio Queue Services-這個API顯然可以將音頻直接錄制到對象中。

Docs引用:
使用Audio Queue Services進行錄制時,目標幾乎可以是任何東西-磁盤文件,網絡連接, 內存中的對象等。

查看文件:
http://developer.apple.com/library/ios/#documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQRecord/RecordingAudio.html#//apple_ref/doc/uid/TP40005343-CH4-SW1

該API不允許您執行此操作。 您閱讀文件需要多長時間? 我看到的唯一方法是定期記錄文件並將記錄中添加的所有內容添加到NSMutableData中(每次添加size_of_file-size_of_mutable_data)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM