Mas*_*son 5 objective-c core-audio ios
我正在尝试学习在iOS上操作音频,我在Apple的开发者页面上已经阅读了很多内容.但是,我已经达到了我有一个AudioBuffer的地步,我不知道该怎么做.我知道它包含一个mData缓冲区,但我不知道它包含什么.我已经四处查看了什么是"音频数据缓冲区",正如参考文献所描述的那样,但我似乎仍然不明白它是什么.
此外,mData似乎是void类型,我收集的可以被转换为包含的特定音频的类型.我想我不知道怎么知道该把它当成什么.
您不需要投射它。就如 (void *) 那样就好了。它包含 8.24 位定点整数值的样本。我知道一开始这可能会让人望而生畏。AudioBuffer 的其他属性描述是否有多个通道。如果是这样,它们是交错的。
您可以用它做的是编写一个渲染回调函数,如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];
}
}
Run Code Online (Sandbox Code Playgroud)
这不一定是一个有效的代码示例,我现在只是从头开始写的。但它传达了基本思想。
| 归档时间: |
|
| 查看次数: |
3964 次 |
| 最近记录: |