Записывать аудио / видео одновременно с AVCaptureSession и Playback Audio?

Я пытаюсь создать приложение для iOS, которое может записывать аудио и видео, одновременно выводя звук на динамики.

Для записи и предварительного просмотра я использую AVCaptureSession, AVCaptureConnection каждый для видео и аудио, а также AVAssetWriterInput каждый для видео и аудио. Я в основном достиг этого, следуя примеру кода RosyWriter.

До настройки записи таким образом я использовал AVAudioPlayer играть аудио.

Теперь, если я нахожусь в процессе захвата (даже не записи, просто захвата для предварительного просмотра), и пытаюсь использовать AVAudioPlayerмой captureOutput обратные вызовы на моем AVCaptureAudioDataOutputSampleBufferDelegate класс перестань звонить.

Есть ли обходной путь для этого?

Есть ли другой сервис более низкого уровня, который я должен использовать для воспроизведения звука, который не остановит мой захват?

мегагерц

1 ответ

Вы сначала устанавливаете AVAudioSession и его категория. Например в viewDidLoad метод,

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord  withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];

Поэтому вы можете играть в BGM

    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:music_url error:nil];
    [self.player setDelegate:self];
    [self.player play];

и записать фильм

    self.captureSession = [[AVCaptureSession alloc] init];
    /* ... addInput AVCaptureDeviceInput AVMediaTypeVideo & AVMediaTypeAudio */
    /* ... addOutput */
    [self.captureSession startRunning];
    AVCaptureMovieFileOutput *m_captureFileOutput =[self.captureSession.outputs objectAtIndex:0];
    [m_captureFileOutput startRecordingToOutputFileURL:saveMovieURL recordingDelegate:self];
Другие вопросы по тегам