Запись вывода AVAudioPlayer с помощью AVAudioRecorder

В моем приложении пользователь воспроизводит звук, нажимая кнопку. Есть несколько кнопок, которыми можно пользоваться одновременно. Звуки воспроизводятся с использованием экземпляров AVAudioPlayer. Я хочу записать вывод этих экземпляров с помощью AVAudioRecorder. Я все это настроил, файл создается и записывается, но когда я его воспроизводю, он не воспроизводит никакого звука. Это просто файл без звука, равный длине записи. Кто-нибудь знает, есть ли параметр, который мне не хватает в AVAudioPlayer или AVAudioRecorder? Спасибо


person Community    schedule 09.06.2009    source источник


Ответы (4)


Невозможно записать выходные данные AVAudioPlayer как входные данные для AVAudioRecorder для записи. Вы можете использовать аудиобуфер для хранения воспроизводимых файлов и сохранения их в файл.

person Warewolf    schedule 13.12.2012
comment
Не могли бы вы поделиться ссылкой на документацию, в которой показано, как захватить и сохранить выходной буфер AVAudioPlayer? - person jangelo42; 06.02.2013
comment
вы можете получить ссылку здесь developer.apple .com / library / mac / # documentation / MusicAudio /. - person Warewolf; 06.02.2013
comment
Мне придется работать на более высоком уровне и использовать что-то вроде * - (void) captureOutput: (AVCaptureOutput *) captureOutput didOutputSampleBuffer: (CMSampleBufferRef) sampleBuffer fromConnection: (AVCaptureConnection *) connection { - person jangelo42; 07.02.2013

Наверное, было бы легче помочь, если бы мы увидели ваш код.

Вы также должны проверить следующую ссылку, чтобы узнать, правильно ли вы настроили AVAudioRecorder: Как записать звук на iPhone с помощью AVAudioRecorder?

Хотя эта ссылка показывает, как настроить запись с микрофона, она может быть вам полезна.

person dizy    schedule 19.06.2009

Столкнулся с той же проблемой. Решил проблему, установив категорию AVAudioSession в режим AVAudioSessionCategoryPlayback. Это мой рабочий код:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
audioSession.delegate = self;
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive: YES error: nil];

Также убедитесь, что аудиозапись успешно завершена, выполнив:

   -(void) audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag
{
    NSLog(@"Recording success:%@",flag ? @"YES" : @"NO");
}

И убедитесь, что вы добавили <AVAudioSessionDelegate,AVAudioRecorderDelegate,AVAudioPlayerDelegate>

в объявлении вашего интерфейса.

person Saikat    schedule 02.12.2010
comment
Вы действительно делаете то же самое, что и OP? (Записывать звук, воспроизводимый с помощью AVAudioPlayer: s) ... кажется маловероятным? - person Jonny; 15.05.2011

Надеюсь, это поможет, по крайней мере, поискать что-нибудь еще.

У меня такая же проблема, я пытаюсь записать микс разных звуков, воспроизводимых в разное время, при воспроизведении основного трека, я обнаружил, что AVAudioRecorder записывает только с микрофона, поэтому он будет работать.

Я обнаружил, что мне еще нужно прочитать документ и протестировать его, это Audio Converter Services, я думаю, что это может сработать, но я только что прочитал несколько строк.

Еще раз извините, но вы неправильно смотрите, надеюсь, мой ответ поможет

person Zero K    schedule 26.12.2010
comment
Мне также не хватало информации, которую рекордер фактически записывает в документах: developer.apple.com/library/mac/#documentation/AVFoundation/ - person Martin Konicek; 22.10.2012