首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在发送到扬声器之前抓取音频缓冲区?

如何在发送到扬声器之前抓取音频缓冲区?
EN

Stack Overflow用户
提问于 2016-07-04 18:13:07
回答 1查看 439关注 0票数 0

我是一个新手在核心音频,AudioUnit框架,我没有太多的知识,所以请与我一起承担。

我有一个需求,那就是我需要使用webRTC通过远程调用访问实时流。在webRTC框架中,没有办法访问音频流。

因此,我的想法是通过Apple音频框架访问该音频流,我正在考虑在将其发送到扬声器之前捕获音频。是否有可能在将音频缓冲区发送到扬声器之前获得音频缓冲区。

我必须用一些值修改音频缓冲区,并将其发送回扬声器。

请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2016-12-08 17:11:17

您可以将render回调设置为output AudioUnit,并在将其发送给扬声器之前修改音频缓冲区。

代码语言:javascript
复制
AURenderCallbackStruct callbackStruct;
        callbackStruct.inputProc = inputRemoteRenderCallback;
        callbackStruct.inputProcRefCon = sourceUnit;


        AudioUnitSetProperty(outputAudioUnit,
                             kAudioUnitProperty_SetRenderCallback,
                             kAudioUnitScope_Input,
                             0,
                             &callbackStruct,
                             sizeof(callbackStruct));

和回调:

代码语言:javascript
复制
static OSStatus inputRemoteRenderCallback  (void *inRefCon,
                                       AudioUnitRenderActionFlags *ioActionFlags,
                                       const AudioTimeStamp *inTimeStamp,
                                       UInt32 inBusNumber,
                                       UInt32 inNumberFrames,
                                       AudioBufferList *ioData
                                       ) {

AudioUnit au = (AudioUnit)inRefCon;

AudioUnitRender(au,
                ioActionFlags,
                inTimeStamp,
                0,
                inNumberFrames,
                ioData);

return noErr;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38182147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档