iOS ReplayKit останавливает запись микрофона, если я играю в AVPlayer во время записи

Я использую метод ReplayKit RPScreenRecorder.shared().startCapture для записи экрана и микрофона, но столкнулся с проблемой. если я играю в AVPlayer во время записи экрана, микрофон перестает записывать звук. Ниже приведены два сценария. во первых все работает нормально а во вторых запись голоса не работает.

  1. запустил AVPlayer, а затем запустил screenRecording, AVPlayer Audio остановился, и мой экран и микрофон начали запись

  2. начал запись экрана и работает нормально. затем я запускаю AVPlayer, и когда AVPlayer воспроизводит звук, запись голоса останавливается.


person Ajay saini    schedule 17.01.2019    source источник
comment
захват звука с микрофона не работает, когда мы удаляем приложение из стека, есть идеи?   -  person Naman Vaishnav    schedule 02.09.2019
comment
что вы подразумеваете под удалением приложения из стека? Вы выходите из приложения?   -  person Ajay saini    schedule 02.09.2019
comment
Я хочу сказать, что как только я убиваю приложение, запись экрана работает нормально, но запись звука останавливается. но самый первый раз, когда я устанавливаю приложение, все работает нормально.   -  person Naman Vaishnav    schedule 02.09.2019
comment
Вы нашли рабочее решение для этого сценария? поскольку я использую тот же репозиторий, который вы создали в Git: github.com/Ajaysainisd/ScreenRecorderWithAudio   -  person Naman Vaishnav    schedule 02.09.2019
comment
хорошо, как вы можете записать экран, когда вы убили приложение?   -  person Ajay saini    schedule 02.09.2019
comment
откройте приложение во второй раз, и звук с микрофона не будет записан, пожалуйста, проверьте свое репо. Я отправил проблему с шагами регенерации.   -  person Naman Vaishnav    schedule 02.09.2019
comment
Пожалуйста, проверьте свой ключ отключения звука, и я обновил ответ здесь, пожалуйста, следуйте ему.   -  person Ajay saini    schedule 02.09.2019
comment
пробовал то же самое, но не получилось. тот же вывод, второй раз звук не записывается   -  person Naman Vaishnav    schedule 02.09.2019


Ответы (2)


После долгих копаний я нашел решение. По умолчанию AVFoundation Разрешить одновременное использование либо микрофона, либо динамика, а ReplayKit несовместим с содержимым AVPlayer. Поэтому, если мы хотим использовать их оба одновременно, нам нужно установить категорию AVAudioSession на AVAudioSessionCategoryMultiRoute.

do {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryMultiRoute)
} catch let error as NSError {
    print(error)
}

do {
    try AVAudioSession.sharedInstance().setActive(true)
} catch let error as NSError {
    print(error)
} 
person Ajay saini    schedule 17.01.2019

Я думаю это системное ограничение Как в официальных документах Apple написано

ReplayKit несовместим с контентом AVPlayer.

Вы можете прочитать подробности здесь

person Talha Ahmad Khan    schedule 17.01.2019
comment
Ладно, я понял. но я просто хочу, чтобы AVPlayer не воспроизводил звук. точно так же, как когда я начинаю запись с помощью replyKit. он отключает звук AVPlayer и начинает запись. я просто хочу сделать то же самое с AVPlayer, если AVPlayer играет после запуска screenRecording - person Ajay saini; 17.01.2019
comment
чтобы отключить звук AVplayer, вы можете использовать его свойство isMuted перед началом записи. Я не знаю, работает ли это, но стоит попробовать. - person Talha Ahmad Khan; 17.01.2019
comment
но я нашел решение для этого - person Ajay saini; 17.01.2019