- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 AudioUnit,对应的回调正常工作,但现在,我需要将它发送到 RemoteIO,因为我正在实现一些需要 RemoteIO AudioUnit 才能工作的框架。
那么...我需要与此 audiounit 混音器相同的输出,但使用类型为 kAudioUnitSubType_RemoteIO 的另一个 audiounit。
请帮忙!
编辑...这是我正在尝试的代码......编辑 2- 添加了 iOUnitDescription
AudioComponentDescription iOUnitDescription;
iOUnitDescription.componentType = kAudioUnitType_Output;
iOUnitDescription.componentSubType = kAudioUnitSubType_RemoteIO;
iOUnitDescription.componentManufacturer = kAudioUnitManufacturer_Apple;
iOUnitDescription.componentFlags = 0;
iOUnitDescription.componentFlagsMask = 0;
AudioComponent foundIoUnitReference = AudioComponentFindNext (
NULL,
&iOUnitDescription
);
AudioComponentInstanceNew (
foundIoUnitReference,
&audioUnit
);
result = AudioUnitSetProperty (
audioUnit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input,
guitarBus,
&stereoStreamFormat,
sizeof (stereoStreamFormat)
);
if (noErr != result) {[self printErrorMessage: @"AudioUnitSetProperty (set mixer unit guitar input bus stream format)" withStatus: result];return;}
result = AudioUnitSetProperty (
audioUnit,
kAudioUnitProperty_SampleRate,
kAudioUnitScope_Output,
0,
&graphSampleRate,
sizeof (graphSampleRate)
);
if (noErr != result) {[self printErrorMessage: @"AudioUnitSetProperty (set AUDIOUNIT unit output stream format)" withStatus: result]; return;}
AudioUnitElement mixerUnitOutputBus = 0;
AudioUnitElement ioUnitOutputElement = 0;
AudioUnitConnection mixerOutToIoUnitIn;
mixerOutToIoUnitIn.sourceAudioUnit = mixerUnit;
mixerOutToIoUnitIn.sourceOutputNumber = mixerUnitOutputBus;
mixerOutToIoUnitIn.destInputNumber = ioUnitOutputElement;
AudioUnitSetProperty (
audioUnit, // connection destination
kAudioUnitProperty_MakeConnection, // property key
kAudioUnitScope_Input, // destination scope
ioUnitOutputElement, // destination element
&mixerOutToIoUnitIn, // connection definition
sizeof (mixerOutToIoUnitIn)
);
最佳答案
我真的需要更多信息。从上面,我看到你在某个地方有一个混音器,一个 guitarBus 大概是你的输入(并且看起来是一个流)。 &iOUnitDescription 的定义是什么。更重要的是,您将 renderCallback 连接到哪里,您在回调中做什么以及框架期望什么?
通常,当我需要处理音频时,我会构建自己的图表;为了更好的可移植性,我将其设为自己的类。这对您来说应该是一个很好的起点
下面是我如何实现这样的解决方案。
// header file
@interface MDMixerGraph : NSObject{
AUGraph graph;
AudioUnit mixerUnit;
AudioUnit inputUnit;
AudioUnit rioUnit;
}
-(void) setupAUGraph;
@end
// implementation
@implementation MDMixerGraph
// exception Helper
void MDThrowOnError(OSStatus status){
if (status != noErr) {
@throw [NSException exceptionWithName:@"MDMixerException"
reason:[NSString stringWithFormat:@"Status Error %d).", (int)status]
userInfo:nil];
}
}
// helper method for setting up graph nodes
OSStatus MDAdAUGraphdNode(OSType inComponentType, OSType inComponentSubType, AUGraph inGraph, AUNode *outNode)
{
AudioComponentDescription desc;
desc.componentType = inComponentType;
desc.componentSubType = inComponentSubType;
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
return AUGraphAddNode(inGraph, &desc, outNode);
}
// setup method to init and start AUGraph
-(void) setupAUGraph{
//Create the Graph
MDThrowOnError(NewAUGraph(&graph));
// setup AU Units
// Add Audio Units (Nodes) to the graph
AUNode inputNode, rioNode, mixerNode;
//Input Node -- this may need to be a different type to accept your Stream (not enough info above)
MDThrowOnError(MDAdAUGraphdNode(kAudioUnitType_Output, kAudioUnitSubType_RemoteIO, graph, &inputUnit));
//Remote IO Node - your output node
MDThrowOnError(MDAdAUGraphdNode(kAudioUnitType_Output, kAudioUnitSubType_RemoteIO, graph, &rioNode));
//mixerNode - Depending on output and input change the mixer sub-type here
// you can configure additional nodes depending on your needs for inputs and outputs
MDThrowOnError(MDAdAUGraphdNode(kAudioUnitType_Mixer, kAudioUnitSubType_AU3DMixerEmbedded, graph, &mixerNode));
// open graph
MDThrowOnError(AUGraphOpen(graph));
// we need a ref to the Audio Units so lets grab all of them here
MDThrowOnError(AUGraphNodeInfo(graph, inputNode, NULL, &inputUnit));
MDThrowOnError(AUGraphNodeInfo(graph, rioNode, NULL, &rioUnit));
MDThrowOnError(AUGraphNodeInfo(graph, mixerNode, NULL, &mixerUnit));
// setup the connections here, input to output of the graph.
/// the graph looks like inputNode->mixerNode->rioNode
MDThrowOnError(AUGraphConnectNodeInput(graph, inputNode, 0, mixerNode, 0));
MDThrowOnError(AUGraphConnectNodeInput(graph, mixerNode, 0, rioNode, 0));
// Init the graph
MDThrowOnError(AUGraphInitialize(graph));
//do any other setup here for your stream
// Finally, Start the graph
MDThrowOnError(AUGraphStart(graph));
}
在您的 View Controller 扩展中,您只需;
// define the MDMixerGraph Class
// @property (nonatomic) MDMixerGraph *mixer;
并在执行中
self.mixer = [[MDMixerGraph alloc]init];
[self.mixer setupAUGraph];
并且您引用了要传递给您的框架的 rioUnit (self.mixer.rioUnit);在不了解您的需求连接/处理的更多信息的情况下,这是我能为您做的最好的。
干杯!
关于ios - 混音器 AudioUnit 到 RemoteIO AudioUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25095528/
简而言之:有没有一种方法可以使用 RemoteIO 捕获/处理应用程序生成的所有音频? 我可以获得渲染回调,通过连接到 RemoteIO 的输入范围输出总线,我可以将音频发送到扬声器。但是我在该回调中
我正在成功使用 RemoteIO 对来自麦克风的传入音频流进行分析。不过,我似乎无法将文件写入磁盘。我已经阅读了一些问题: Example of saving audio from RemoteIO?
我正在寻找一个在 remoteio 中使用环形缓冲区输出非常大的音频文件的实现。 我从 apple 遇到了 CARingBuffer,但我在尝试在我的 ios 项目中实现它时遇到了噩梦。 作为替代方案
我已经为输入和输出设置了远程 IO audiounit 渲染回调。我希望不经常调用渲染回调。我如何指定调用它们的速率? 最佳答案 每个缓冲区调用一次回调,因此您可以通过指定更大的缓冲区大小来减少调用它
我四处搜索但没有找到任何从 RemoteIO 音频单元保存音频的好例子或教程。 我的设置:使用 MusicPlayer API,我有几个 AUSamplers -> MixerUnit -> Remo
标题几乎概括了我要实现的目标。我正在尝试在渲染回调中使用 Michael Tyson 的 TPCircularBuffer,而循环缓冲区正在填充传入的音频数据。我想将渲染回调中的音频发送到 Remot
我想通过 AudioUnitAddRenderNotify 添加一个输出渲染回调到当前事件的 RemoteIO 单元,该单元正在向扬声器输出音频。我无权访问实际的 RemoteIO 实例变量,但我想在
我被要求将 VOIP 添加到游戏中(跨平台,所以不能使用 Apple gamekit 来做到这一点)。 现在有 3 或 4 天,我试图让我的头脑围绕音频单元和 remoteIO...我忽略了数十个这样
我正在编写一个有两个 View Controller 的程序。一个 View Controller 配置通过远程IO音频单元播放的声音。另一个 View Controller 从麦克风接收音频,处理该
通过我的 AudioUnit 播放正常,直到我开始从 CMMotionManager 获取陀螺仪更新。我认为这是由于性能下降造成的,但是当我在所述陀螺仪更新期间测量我的回调的运行时间时,它没有其他 C
这是一个关于时间的非常“细节”的问题...... 我正在使用 iOS 的 RemoteIO 音频单元来做事。只是想知道系统如何准确地处理计时:调用 AudioOutputUnitStart() 后,该
我有非循环音频,我需要在 iPhone/iPod touch 上尽可能减少硬件延迟(技术术语)。在极端情况下,可以根据触摸在一秒内平滑播放 10-20 个样本。 谁是这项任务的王者? OpenAL 或
所以,不久前我正在开发一个波浪发生器应用程序并且遇到了一些问题,但肯尼温克是一个真正的救星,帮助我基本上让一切顺利进行。然而,我最终遇到的一个问题是,每当我改变我正在使用的频率的值时(当我改变音量的值
我正在尝试像这样使用 AudioUnitAddRenderNotify 从 RemoteIO 进行录音。基本上,我无法从我的输入总线 bus1 获取样本。 recordingCallback 不会超过
我正在尝试在 RemoteIO 中播放 Ogg Vorbis 文件,我使用以下代码从 vorbis 中获取 PCM 样本:我正在尝试在 RemoteIO 中播放 Ogg Vorbis 文件,我使用以下
我正在尝试连接我的调音台 -> remoteio -> 动态处理器 这是我的音频格式 //描述格式 memset( &audioFormat, 0, sizeof(AudioStreamBasicDe
我有一个 AudioUnit,对应的回调正常工作,但现在,我需要将它发送到 RemoteIO,因为我正在实现一些需要 RemoteIO AudioUnit 才能工作的框架。 那么...我需要与此 au
我是 Core Audio 的新手,所以我可能看不到明显的东西……我的目标是处理以前录制的音频信号。但是,应首先过滤这些信号。我不需要播放任何音频。我只需要记录和处理即可。 我的图表看起来像这样:Re
我在语音聊天应用程序中使用 RemoteIO。为了启用回声消除,我在将“kAudioSessionCategory_PlayAndRecord”设置为 session 类型后将“kAudioUnitS
好的,所以我使用核心音频从 10 个不同的样本源中提取音频,然后在我的回调函数中将它们混合在一起。 它在模拟器中运行完美,一切都很好。然而,当我尝试在 4.2 iPhone 设备上运行它时,我遇到了麻
我是一名优秀的程序员,十分优秀!