Вопрос по ios – Как разрешить конфликт AVCaptureSession v AVAudioSession в iOS?

3

Я пытаюсь запустить AVCaptureSession в контроллере представления, но в том же самом я также вызываю функцию из библиотеки, которая использует AVAudioSession. Кажется, я не могу получить много информации из отладчика, за исключением того, что он вылетает именно тогда, когда я вызываю функцию этой конкретной библиотеки. Библиотека является libpd:

https://github.com/libpd

и он вызывает AVAudioSession как sharedInstance. Я называю libpd как:

<code>[self.audioController configurePlaybackWithSampleRate:44100 numberChannels:2 inputEnabled:YES mixingEnabled:YES]
</code>

поэтому микширование включено, но на всякий случай я перекомпилировал его так, чтобы, когда он начал, я делал:

<code>    UInt32 doSetProperty = 1;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers,  sizeof(doSetProperty), &doSetProperty);
</code>

но не повезло. Перемещение вызовов libpd к viewWillAppear в контроллере представления также не работало. Однако, если я возьму код, который вызывает libpd, из моего viewcontroller, и вставлю его в делегат приложения в didFinishLaunchingWithOptions, он тогда запустится просто отлично, и две сессии, кажется, сосуществуют без сбоев.

Я что-то упускаю из AVCaptureSession и микширования? Как мне пройти обе сессии одновременно? Я не использую AVCapture для захвата звука, только вход с камеры, так что я не смогу как-нибудь продолжить оба?

Ваш Ответ

2   ответа
4

ния) после начала сеанса камеры. Я попытался, и вам нужно подождать, пока камера настроится, прежде чем начинать аудио сеанс (например, подождите пару секунд)

Мне не удалось заставить это работать, хотя я могу переключаться назад и вперед, активно переключая мою AVAudioSession с AVAudioSessionCategoryPlayAndRecord на AVAudioSessionCategoryAmbient и устанавливая его активным до вызова startRunning на моем AVCaptureSession и вызывая stopRunning в сеансе захвата перед переключением аудио вернуться к воспроизведению и записи ... Ах, но, может быть, мне следует подождать, пока AVCaptureSessionDidStartRunningNotification будет опубликовано, прежде чем пытаться смешать AVAudioSession? qix
0

библиотека предполагает, что другой аудио-сеанс не активен, и вызываетAudioSessionInitialize?

Per Документы "Вы можете активировать и деактивировать аудиосессию по мере необходимости (см. AudioSessionSetActive), но следует инициализировать ее только один раз."

Я предполагаю, что авторы этой библиотеки не включили функциональность для текущего аудио-сеанса ... но было бы достаточно легко погрузиться туда и закомментировать начальные строки, если ваше приложение всегда выполняет эту функцию вызов с запущенным аудио сеансом (в противном случае просто проверьте с помощьюif заявление, чтобы увидеть, если у вас есть аудио сеанс, если нет, инициализировать один и т. д.)

Похожие вопросы