Записывать аудио / видео одновременно с AVCaptureSession и Playback Audio? - PullRequest
3 голосов
/ 07 февраля 2012

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

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

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

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

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

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

тс.

1 Ответ

1 голос
/ 18 апреля 2014

Сначала вы устанавливаете 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];
...