作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建音频图,其中包含:AudioFilePlayer(生成器单元)-> GenericOutput(输出单元)
基本思路:
AudioFilePlayer 正在为其输出生成音频帧。通用输出将 AudioFilePlayer 的输出中的数据作为输入。然后我可以获取该数据并将其保存到其他缓冲区。
我的问题是如何从通用输出中提取数据以获取离线渲染数据。
我对其进行了一些研究,发现我必须在 GenericOutput 单元上使用 AudioUnitRender 才能从中提取音频数据。
Uint32 frames = 512;
timestamp.mSampleTime = 0;
... While Loop ...
timestamp.mFlags = kAudioTimeStampSampleTimeValid;
bufferList.mNumberBuffers = 1;
bufferList.mBuffers[0].mNumberChannels = param->inputFormat.mChannelsPerFrame;
bufferList.mBuffers[0].mDataByteSize = frames * param->inputFormat.mChannelsPerFrame * sizeof(float);
bufferList.mBuffers[0].mData = NULL;
AudioUnitRenderActionFlags flags = 0;
OSStatus error = noErr;
if ((error = AudioUnitRender(param->genericOutput, &flags, ×tamp, 0, frames, &bufferList)) != noErr)
{
printf("Cannot AudioUnitRender: %d\n", error);
}
timestamp.mSampleTime += frames;
但我得到错误数字 -50。
我是不是输入参数设置错了?我是否需要向 GenericOutput 单元注册任何渲染回调函数?
最佳答案
问题是我在调用 AUGraphInitialize() 后设置了 GenericOutput StreamFormat。必须在那之前完成。
我使用 CAShow(reader.graph) 获取音频图的日志,这帮助我注意到在尝试设置后格式没有改变。
关于macos - 从图表中提取音频数据 kAudioUnitSubType_GenericOutput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15153008/
我正在构建音频图,其中包含:AudioFilePlayer(生成器单元)-> GenericOutput(输出单元) 基本思路: AudioFilePlayer 正在为其输出生成音频帧。通用输出将 A
我是一名优秀的程序员,十分优秀!