RPScreenRecorder startCaptureWithHandler: не возвращает звук микрофона в обработчике семплов
Я пытаюсь использовать RPScreenRecorder startCaptureWithHandler: завершение Handler: API на моем iPad с iOS 11.4 для прямого захвата аудио и видео. Он хорошо работает с экраном приложения, аудио приложения и камерой, но когда я включаю микрофон, используя микрофон Enabled = YES, я никогда не получаю никакого сэмпла для микрофона в обратном вызове.
Я добавил ключ использования конфиденциальности в микрофон в info.plist, но это не помогло.
Я не уверен, что я могу сделать дальше, чтобы попытаться решить эту проблему.
Благодарю.
1 ответ
Этот код возвращает мне аудиобуферы, содержащие реальный звук с микрофона (даже без строки использования микрофона или конфигурации аудиосеанса):
RPScreenRecorder *recorder = [RPScreenRecorder sharedRecorder];
recorder.microphoneEnabled = YES;
[recorder startCaptureWithHandler:^(CMSampleBufferRef sampleBuffer, RPSampleBufferType bufferType, NSError* error) {
NSLog(@"Capture %@, %li, %@", sampleBuffer, (long)bufferType, error);
if (RPSampleBufferTypeAudioMic == bufferType) {
// Do something with mic audio
}
} completionHandler:^(NSError* error) {
NSLog(@"startCapture: %@", error);
}];
Существует диалоговое окно с разрешением, которое спрашивает, разрешить ли вам экран и микрофон, разрешить только экран или не разрешить. Возможно, вы нажали только на экран? NB Я не знаю, как сбросить этот диалог.
Другая возможность заключается в том, что вы устанавливаете microphoneEnabled
после начала захвата? Это может не сработать. Нет, это работает и для меня.
Предыдущая догадка
Вам может понадобиться активировать запись AVAudioSession
:
try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryRecord) // or AVAudioSessionCategoryPlayAndRecord!
try! AVAudioSession.sharedInstance().setActive(true)