В настоящее время я разрабатываю приложение iOS, которое записывает экран с помощью Replaykit и в то же время записывает пользователя с передней камеры в заданное время. Я получаю звук с записи экрана, а звук на передней камере отключен. Хочу проверить уровень голоса человека при записи экрана и фронтальной камеры. Я считаю, что уже использую микрофонный канал и для записи экрана. Когда я начинаю запись экрана, я также запускаю проверку уровня звука, но я не вижу никакого значения, оно всегда показывает мне -160. Я не знаю, нужно ли мне менять словарь настроек диктофона или режим категории AVAudioSession. Мои настройки рекордера выглядят так:
settings = [
AVFormatIDKey : NSNumber(value: kAudioFormatLinearPCM),
AVSampleRateKey : 44100.0,
AVNumberOfChannelsKey : 2,
AVLinearPCMBitDepthKey : 16,
AVLinearPCMIsBigEndianKey : false,
AVLinearPCMIsFloatKey : false,
]
и мой сеанс
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try session.setMode(AVAudioSessionModeVideoRecording)
try session.setActive(true)
try session.overrideOutputAudioPort(.speaker)
}catch{
print("unable to set session")
return
}
также функция обновления параметров в обратном вызове таймера
@objc private func checkAudioLevels() {
recorder.updateMeters()
print("Peak power0:\(recorder.peakPower(forChannel: 0))")
print("Average power0:\(recorder.averagePower(forChannel: 0))")
print("Peak power1:\(recorder.peakPower(forChannel: 1))")
print("Average power1:\(recorder.averagePower(forChannel: 1))")
print("Peak power2:\(recorder.peakPower(forChannel: 2))")
print("Average power2:\(recorder.averagePower(forChannel: 2))")
if recorder.peakPower(forChannel: 2) < -150{
levelCounter += 1 // timer fires every one second and if the user's audio is less than -150 it adds levelCounter 1 and if it reaches 10 which means no voice for 10 seconds it sends the warning to delegate.
}else{
levelCounter = 0
}
if levelCounter > 10{
self.delegate?.shouldShowWarning(true)
}
}
Проблема со всеми пиковая и средняя мощность по всем каналам я получаю только -160. Итак, я думаю, что мне нужно что-то изменить в словаре настроек или AVAudioSession. У меня вопрос, есть ли возможность записывать экран со звуком и в то же время записывать звук отдельно.