1

以下の設定で録音できます-最初は動作しますが、再試行すると、ファイルは常に8192バイトになります。つまり、正しく録音されません。

-(void) startRecording
{

    NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
                          [NSNumber numberWithFloat: 11025.0f],                     AVSampleRateKey,
                          [NSNumber numberWithInt: kAudioFormatMPEG4AAC],           AVFormatIDKey,
                          [NSNumber numberWithInt: 2],                              AVNumberOfChannelsKey,
                          [NSNumber numberWithInt: AVAudioQualityLow],              AVEncoderAudioQualityKey,
                          nil];

    NSString *filenameBasedOnTime = [[NSDate date] description];

    if (_recordedFileURL) _recordedFileURL = nil;

   _recordedFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:filenameBasedOnTime]];

   NSError* error;

   if (_audioRecorder) _audioRecorder = nil;

   _audioRecorder = [[AVAudioRecorder alloc] initWithURL:_recordedFileURL settings:settings error:&error];
   _audioRecorder.delegate = self;

   if (error)
   {    
     return;
   }

   [_audioRecorder prepareToRecord];
   _audioRecorder.meteringEnabled = YES;
   [_audioRecorder record];
}

-(void) stopRecord
{
   [_audioRecorder stop];
}

- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag
{
    [self saveRecording];
}

-(void) saveRecording
{   
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:_recordedFileURL.relativeString]];

    NSLog(@"Recording data size = %i", [data length]);
}

それが役立つ場合は、UIPopoverController内で呼び出されます...

4

1 に答える 1

1

問題が私が行方不明だったことがわかったので

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:NULL];

ここからiPhone SDK: [AVPlayer play] を呼び出した後に AVAudioRecorder が録音しない

于 2013-02-07T01:59:56.437 に答える