我用 AUmixer 构建了一个 AUGraph,当通过 iPhone7plus 上的回调播放流时,音频播放听起来很糟糕。您可以听到音频和正在说的内容,但非常刺耳。如果我在我的 iPhone6 上构建并运行它听起来不错。
我还使用没有混音器的单一 AudioUnit 实现了设置,这在 iPhone7 和 iPhone6 上听起来都很好,但我当然失去了混音器所需的功能。我对两种设置都使用相同的 AudioStreamBasicDescription(带有混音器的图形和单个音频单元)
关于为什么我的 iPhone7 plus 上的图表听起来如此糟糕的想法?
My current ASBD:
_pcmASBD AudioStreamBasicDescription
mSampleRate Float64 44100
mFormatID AudioFormatID 1819304813
mFormatFlags AudioFormatFlags 12
mBytesPerPacket UInt32 4
mFramesPerPacket UInt32 1
mBytesPerFrame UInt32 4
mChannelsPerFrame UInt32 2
mBitsPerChannel UInt32 16
mReserved UInt32 0
我正在做 AAC 到 PCM 的转换,然后将该数据输入 AURenderCallback,最后输入到由 AudioUnit 架构播放的 pendingBufferList。
我需要使用混音器,因为我想控制音量,所以一个单一的 AudioUnit 方法(它不显示此错误,但使用相同的回调和所有内容)对我不起作用,因为我不想通过影响原始音频来调制音频数据流。
编辑:
将为此添加更多代码和想法以希望解决该问题。
我使用 AudioConverter 处理传入的 AAC 流,这将转换为 LPCM,然后我将其输入到我的 AudioBufferList 中,该列表在 audiounit 图形渲染过程中被填充。
我注意到如果我去 48Khz(编码然后流)-> 48khz(接收流,解码,播放)听起来不错,我的音频渲染过程显示 inNumberFrames 为 1024。
如果我去 44.1khz -> 48khz 听起来很沙哑(我的音频单元图发出的声音是正确的音高,尽管因为我放入了采样率转换器)但音频渲染过程显示 inNumberFrames 为 941 或 940
我觉得这可能是 hotpaw2 所说的,但是当我将 AudioBufferList 的大小设置为 4*inNumberFrames 的倍数时,它仍然听起来很刺耳。
@热爪2?