0
내 아이폰 시뮬레이터에서 Audio를 녹음하고 디렉토리에 저장 한 다음 재생하려고합니다. 녹음 된 오디오를들을 수 없기 때문에 처음 녹음을하고 있는지 확실하지 않습니다. 여기 내 코드입니다 :iPhone에서 오디오 녹음 및 재생 프로그래밍
-(IBAction) playRecording:sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir = [paths objectAtIndex:0];
NSFileManager *filemanager = [NSFileManager defaultManager];
NSArray *files = [filemanager contentsOfDirectoryAtPath:dir error:nil];
NSString *file = [files objectAtIndex:0];
NSString *path = [dir stringByAppendingPathComponent:file];
NSURL *url = [NSURL URLWithString:path]; // url is nil
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
player.volume = 0.3;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[player play];
}
-(IBAction) record:sender
{
if(recorder.recording)
{
[recorder stop];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:nil];
[recordButton setTitle:@"Record" forState:UIControlStateNormal];
}
else
{
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:nil];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *dir = [paths objectAtIndex:0];
NSString *filename = [[NSString alloc] initWithString:@"myfile.caf"];
NSString *path = [dir stringByAppendingPathComponent:filename];
NSMutableDictionary *settings = [[NSMutableDictionary alloc] init];
[settings setValue:[NSNumber numberWithInt:kAudioFormatAppleLossless] forKey:AVFormatIDKey];
[settings setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[settings setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
[settings setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
[recorder release];
recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL fileURLWithPath:path]
settings:settings error:nil];
[recorder prepareToRecord];
recorder.meteringEnabled = YES;
[recorder record];
[recordButton setTitle:@"Stop" forState:UIControlStateNormal];
}
}
UPDATE 1 :
playRecording의 url 변수는 항상 전무로 평가했다.