AVAudioRecorder не сохраняет файл

Я борюсь с AVAudioRecorder (и Player) сейчас. У меня есть приложение, в котором есть три простые кнопки для записи / воспроизведения / остановки вызовов, и я использую AVAudioRecorder и AVAudioPlayer для записи и воспроизведения звука. Прямо сейчас, когда я тестирую приложение (как на iPhone, так и в симуляторе), я получаю Cocoa 260 - файл не найден, исключение при попытке воспроизвести то, что я только что записал. При печати пути к URL-адресу файла AVAudioRecorder, я получаю URL-адрес файла в папке, которая не существует на моем компьютере (работает на симуляторе. Мой код выглядит следующим образом:

- (void)viewDidLoad
{
    [super viewDidLoad];

    _plyBtn.enabled = NO;
    _stopBtn.enabled = NO;

    NSArray *dirPaths;
    NSString *docsDir;

    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    docsDir = dirPaths[0];

    NSString *soundFilePath = [docsDir stringByAppendingPathComponent:@"test.caf"];

    NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

    NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                    [NSNumber numberWithInt:AVAudioQualityMin],
                                    AVEncoderAudioQualityKey,
                                    [NSNumber numberWithInt:16],
                                    AVEncoderBitRateKey,
                                    [NSNumber numberWithInt:2],
                                    AVNumberOfChannelsKey,
                                    [NSNumber numberWithFloat:44100.0],
                                    AVSampleRateKey,
                                    nil];

    NSError *error = nil;
    _rec = [[AVAudioRecorder alloc] initWithURL:soundFileURL settings:recordSettings error:&error];

    if(error){
        NSLog(@"error: %@", [error localizedDescription]);
    } else {
        [_rec prepareToRecord];
    }

    NSLog(@"path: %@", soundFileURL);
}

Я понятия не имею, почему этот NSLog внизу печатает неверный путь к файлу... Как я уже сказал, я не получаю сообщение об ошибке при записи, но при попытке воспроизвести звук, который я записал позже. Вот моя игровая функция:

- (IBAction)playAudio:(id)sender {
    if(!_rec.recording){
        _recBtn.enabled = NO;
        _stopBtn.enabled = YES;

        NSError *error1;
        NSError *error2;

        NSData *soundFile = [[NSData alloc] initWithContentsOfURL:_rec.url options:NSDataReadingMappedIfSafe error:&error1];
        _ply = [[AVAudioPlayer alloc] initWithData:soundFile error:&error2];

        //_ply = [[AVAudioPlayer alloc] initWithContentsOfURL:_rec.url error:&error];

        _ply.delegate = self;

        if(error1){
            NSLog(@"error: %@", [error1 localizedDescription]);
        } else if (error2) {
            NSLog(@"error: %@", [error2 localizedDescription]);
        } else {
            [_ply play];
        }
    }
}

Это не похоже на работу:

- (IBAction)recordAudio:(id)sender {
    NSLog(@"recordAudio called");
    _plyBtn.enabled = NO;
    _stopBtn.enabled = YES;
    [_rec record];
}

Спасибо за любую помощь заранее:)

1 ответ

Решение

Возможно, путь записи был неверным.

NSDocumentationDirectory... Разве это не должно быть NSDocumentDirectory?

Другие вопросы по тегам