Записывать аудио / видео одновременно с 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];