AUG-> pcm转换后的音频流在iPhone7plus上听起来波涛汹涌,但不是iPhone6
我用AUMixer构建了AUGraph,当通过iPhone7plus上的回调播放流时,音频播放听起来很糟糕。您可以听到音频和正在说的内容,但它非常粗糙。如果我在iPhone6上构建并运行,那听起来很好。AUG-> pcm转换后的音频流在iPhone7plus上听起来波涛汹涌,但不是iPhone6
我也有一个单独的音频单元,没有调音台,在iPhone7和iPhone6上听起来不错,但我当然失去了调音台所需的功能。我正在使用相同的AudioStreamBasicDescription来设置这两个设置(带有调音台的图形和单数audiounit)
想法为什么它听起来很糟糕,特别是与我的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的(接收流,解码,播放),这听起来不错,我的音频渲染PROC显示1024
inNumberFrames如果我去的44.1kHz - > 48khz它听起来很scrat((我的音频单元图表使声音是正确的音高,但由于采样率转换器我放入),但音频渲染过程显示inNumberFrames为941或940
我觉得这可能是什么hotpaw2正在谈论,但是当我将我的AudioBufferList的大小设置为4 * inNumberFrames的倍数时,它仍然听起来很scrat。。
@ hotpaw2?
检查硬件采样率。在很多较新的iOS设备上,硬件音频采样率可以默认为48000,而不是44100,具体取决于插入的内容或以前播放的音频。如果是这样,并且您希望的格式是44100,那么重新采样器将提供不同的奇数长度的缓冲区。期望固定或者甚至是长度缓冲的音频单元回调可能会因此出现问题。
解决这个问题的方法可能是检查硬件采样率。如果它是48000,那么将您的格式设置为相同,因此不需要重新采样。还要确保所有音频上下文回调块都能处理不同的奇数长度/ frameCount的AudioBufferList缓冲区。
感谢您的意见,我检查了硬件采样率,并确保他们使用支持的硬件(的确是48000)我仍然有问题。我收到一个AAC流,我将音频转换到PCM上,然后通过我的AUGraph播放。使用单一的AudioUnitComponent,它听起来使用相同的回调逻辑找到,我用这两个逻辑填充pendingBufferList,但只有Graph似乎显示了这个问题。我只是使用单数AudioUnitComponent,但我需要使用该图形来进行音量混合。 – theprojectabot
我已更新我的原始问题?有什么想法吗? – theprojectabot