Получение роботизированного и нарезанного звука при использовании EZOutput ⇐ IOS
-
Anonymous
Получение роботизированного и нарезанного звука при использовании EZOutput
Я использую EZOutput из EZAudio для вывода звука, который я получаю из аудиопотока (self.myAudioBufferList). Подумайте, LiveListen. У меня также есть базовое описание аудио (self.asbd!). Однако когда я устанавливаю метод mustFill источника данных EZOutput, я получаю роботизированную версию звука, которая обрезана, а некоторые ее части отсутствуют.
вывод функции (_ вывод: EZOutput!, mustFill audioBufferList: UnsafeMutablePointer!, кадры withNumberOfFrames: UInt32, метка времени: UnsafePointer!) -> OSStatus { если self.asbd != ноль { выход.inputFormat = self.asbd! } если self.audioBufferList != ноль { audioBufferList.pointee.mNumberBuffers = self.myAudioBufferList!.mNumberBuffers audioBufferList.pointee.mBuffers.mNumberChannels = self.myAudioBufferList!.mBuffers.mNumberChannels audioBufferList.pointee.mBuffers.mData = self.myAudioBufferList!.mBuffers.mData } еще { print("оно равно нулю, поэтому шум низкий") audioBufferList.pointee.mBuffers.mData = ноль } вернуть noErr; } Кроме того, если установлен audioBufferList mDataByteSize, качество ухудшается. В текущей конфигурации dataByteSize равен 4096, тогда как myAudioBufferList не является постоянным и колеблется, никогда не превышая 512.
audioBufferList.pointee.mBuffers.mDataByteSize = self.myAudioBufferList!.mBuffers.mDataByteSize Значение кадров, которое дает метод источника данных, имеет значение 1024.
Примечание: я также пытался предоставить inputFormat при создании экземпляра EZOutput, однако это никак не улучшает звук
// Назначаем делегата и источник данных общему экземпляру вывода для предоставления выходных аудиоданных self.ezOutput = EZOutput.init (источник данных: self, inputFormat: asbd) self.ezOutput?.delegate = self
Я использую EZOutput из EZAudio для вывода звука, который я получаю из аудиопотока (self.myAudioBufferList). Подумайте, LiveListen. У меня также есть базовое описание аудио (self.asbd!). Однако когда я устанавливаю метод mustFill источника данных EZOutput, я получаю роботизированную версию звука, которая обрезана, а некоторые ее части отсутствуют.
вывод функции (_ вывод: EZOutput!, mustFill audioBufferList: UnsafeMutablePointer!, кадры withNumberOfFrames: UInt32, метка времени: UnsafePointer!) -> OSStatus { если self.asbd != ноль { выход.inputFormat = self.asbd! } если self.audioBufferList != ноль { audioBufferList.pointee.mNumberBuffers = self.myAudioBufferList!.mNumberBuffers audioBufferList.pointee.mBuffers.mNumberChannels = self.myAudioBufferList!.mBuffers.mNumberChannels audioBufferList.pointee.mBuffers.mData = self.myAudioBufferList!.mBuffers.mData } еще { print("оно равно нулю, поэтому шум низкий") audioBufferList.pointee.mBuffers.mData = ноль } вернуть noErr; } Кроме того, если установлен audioBufferList mDataByteSize, качество ухудшается. В текущей конфигурации dataByteSize равен 4096, тогда как myAudioBufferList не является постоянным и колеблется, никогда не превышая 512.
audioBufferList.pointee.mBuffers.mDataByteSize = self.myAudioBufferList!.mBuffers.mDataByteSize Значение кадров, которое дает метод источника данных, имеет значение 1024.
Примечание: я также пытался предоставить inputFormat при создании экземпляра EZOutput, однако это никак не улучшает звук
// Назначаем делегата и источник данных общему экземпляру вывода для предоставления выходных аудиоданных self.ezOutput = EZOutput.init (источник данных: self, inputFormat: asbd) self.ezOutput?.delegate = self
Мобильная версия