gpt4 book ai didi

ios - 核心音频 AudioBuffer mData

转载 作者:可可西里 更新时间:2023-11-01 04:40:31 27 4
gpt4 key购买 nike

我正在尝试学习如何在 iOS 上操作音频,并且我在 Apple 的开发者页面上阅读了很多内容。但是,我已经达到了拥有 AudioBuffer 的地步,但我不确定如何处理它。我知道它包含一个 mData 缓冲区,但我不知道它包含什么。正如引用资料所描述的那样,我四处寻找什么是“音频数据缓冲区”,但我似乎仍然不明白那是什么。

此外,我收集到的 mData 似乎是 void 类型,可能会被转换为包含的特定音频的类型。我想我也不确定如何知道将其转换为什么。

最佳答案

你不需要施放它。可以作为 (void *)。它包含 8.24 位定点整数值的样本。我知道一开始可能会让人望而生畏。 AudioBuffer 的其他属性描述了是否有多个 channel 。如果是这样,它们就会交错。

您可以用它做的是编写渲染回调函数,如 Audio Unit Hosting Guide 中所述。 ,并开始将缓冲中的帧馈送到输出中,从而实现音频播放。强大的是,您可以在将缓冲区数据发送到输出之前对其进行操作,从而实现特殊效果,如播放速率变化、音高移动、延迟、回声等。

简单情况下渲染函数的输出是这样的:

 OSStatus renderInput(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
float *outA = (float*)ioData->mBuffers[0].mData;
float *outB = (float*)ioData->mBuffers[1].mData;

for (int i=0; i<inNumberFrames; i++) {
outA[i] = myBuffer.mData[i];
outB[i] = myBuffer.mData[i];
}
}

这不一定是一个有效的代码示例,我现在只是从头脑中写出来的。但它传达了基本思想。

关于ios - 核心音频 AudioBuffer mData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com