AudioUnitRender создает пустые аудиобуферыIOS

Программируем под IOS
Ответить
Гость
 AudioUnitRender создает пустые аудиобуферы

Сообщение Гость »


Я пытаюсь микшировать звук из нескольких аудиоисточников с помощью Audio Units. Структура довольно проста: у меня есть два входа, аудиоблок микшера и общий выход. Проблема в том, что буферы выходного AudioUnit заполняются только нулями.
  • Входные данные передаются через AURenderCallbackStruct непосредственно в микшер.
  • Подтип микшера — kAudioUnitSubType_MultiChannelMixer.
  • Подтип вывода — kAudioUnitSubType_GenericOutput для извлечения микшированного звука вручную, не воспроизводя его. . Выход подключается через AudioUnitConnection, чтобы избежать использования устаревшего AUGraph. AVAudioSession нельзя использовать для совместимости с ReplayKit.
Я удалил все проверки OSStatus, чтобы предоставить более короткую версию код; однако все методы Audio Unit возвращают noErr. Метод установки:

Код: Выделить всё

private func setupAudioUnits() {
// Setting up mixer unit
var mixerComponentDescription = AudioComponentDescription(
componentType: kAudioUnitType_Mixer,
componentSubType: kAudioUnitSubType_MultiChannelMixer,
componentManufacturer: kAudioUnitManufacturer_Apple,
componentFlags: 0,
componentFlagsMask: 0)
let mixerComponent = AudioComponentFindNext(nil, &mixerComponentDescription)
AudioComponentInstanceNew(mixerComponent!, &mixerAudioUnit)
guard let mixerAudioUnit else { fatalError() }

var streamFormat = outputFormat.streamDescription.pointee
AudioUnitSetProperty(mixerAudioUnit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Output,
0,
&streamFormat,
UInt32(MemoryLayout.size))

AudioUnitInitialize(mixerAudioUnit)

var busCount = UInt32(inputs)
AudioUnitSetProperty(mixerAudioUnit,
kAudioUnitProperty_ElementCount,
kAudioUnitScope_Input,
0,
&busCount,
UInt32(MemoryLayout.size))

// Setting up mixer's inputs
for input in 0..

Источник: [url]https://stackoverflow.com/questions/78085762/audiounitrender-produces-empty-audio-buffers[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»