问题标签 [remoteio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
698 浏览

ios - 发布音频单元时注册服务器出错

我正在尝试在 iOS 上发布 AudioUnit 生成器。当我打电话

我收到控制台消息:

-66748作为状态。谷歌没有帮助我文档也没有

在设置我的音频会话并使用所有最新的(iOS 7)AVAudioSession API 时,我没有收到任何其他错误。

有什么我想念的秘密吗?

0 投票
1 回答
1868 浏览

ios - 尝试在 Garageband 中使用已发布的跨应用音频应用时出错

我的应用在系统中注册为提供应用间音频(感谢这个问题)。但是当我在 Garageband Inter-App Audio 乐器选择器中选择它时,我会在 UIAlertView 中收到此消息:

“应用程序不可用。您选择的跨应用音频应用程序目前不可用。”

同时,在控制台中,我得到了这个:

任何人?某人的 aurio 很生气……可能是因为格式不兼容?

0 投票
0 回答
838 浏览

ios - 不使用时停用 iOS 音频会话?

我有一个 iOS 应用程序,它记录指定时间段的音频片段,对该音频执行分析,返回结果,然后基本上处于非活动状态,直到用户想要再次录制。

该应用程序的音频配置类似于aurioTouch2,并利用 RemoteI/O 音频单元和音频会话服务。该应用程序当前AudioSessionSetActive(true)在初始启动期间设置,然后启动远程 I/O。音频会话和音频单元在应用程序的整个生命周期内保持运行。

所以这是我的问题 - 由于该应用程序实际上只在相对较短(15-60 秒)的时间内使用麦克风,我是否应该AudioSessionSetActive(false)在未主动使用音频会话时停用它?

我试过只在录制过程中同时运行音频单元和音频会话——在录制生物时开始,在录制完成后停止——虽然它在模拟器上按预期工作,但在物理上运行它时会崩溃设备。这是错误:

以下是我开始/停止录制的方式:

显然,为了简洁起见,我省略了在单元运行时发生的音频渲染回调以及在初始启动时完成的音频会话/音频单元的配置,但同样,这非常接近于 aurioTouch2 中所做的。该错误似乎是由于将音频会话设置为非活动状态,但我似乎无法弄清楚原因。

我很难确定 Apple 是否建议运行相同的音频会话,即使应用程序实际上并没有做任何事情。会话应该在应用程序的生命周期内保留还是在需要使用的基础上保留?有什么想法吗?

0 投票
3 回答
2883 浏览

ios - 在附加到 remoteio 音频单元的输入范围的渲染回调中使用循环缓冲区中的音频数据

标题几乎总结了我想要实现的目标。我正在尝试在渲染回调中使用 Michael Tyson 的 TPCircularBuffer,而循环缓冲区正在填充传入的音频数据。我想将渲染回调中的音频发送到 RemoteIO 音频单元的输出元素,以便我可以通过设备扬声器听到它。

音频是交错的 16 位立体声,以 2048 帧的数据包形式传入。以下是我设置音频会话的方式:

这里是音频数据被加载到循环缓冲区并在渲染回调中使用的地方:

此设置有问题,因为我没有通过扬声器获得任何音频,但在我的设备上测试时我也没有收到任何错误。据我所知,TPCircularBuffer 正在被正确填充和读取。我已按照 Apple 文档设置音频会话。我正在考虑下一步尝试设置 AUGraph,但我想看看是否有人可以为我在这里尝试做的事情提出解决方案。谢谢!

0 投票
1 回答
2919 浏览

ios - iOS 中的主动降噪

我正在尝试使用远程 I/O 在 iOS 中进行主动降噪。我已经能够获得 8.24 定点格式的音频缓冲区并将其放入扬声器中。现在我正在尝试通过麦克风(使用onlinetonegenerator.com)捕获正弦波,并反转我通过回调的每一帧中的幅度。这是我的代码:

但输出音调似乎不会产生破坏性干扰。我感觉到当我运行应用程序时,幅度会发生周期性变化,但不会取消输入声音。

我认为可能还有两个因素:

  1. 从麦克风流生成输出流的延迟
  2. 原始声音和生成声音之间的幅度差异

知道如何在 AudioUnit 中解决这些问题吗?

非常感谢!

0 投票
1 回答
197 浏览

core-audio - iOS 上的 Apple CoreAudio:合成到 Reverb2 AudioUnit 到 RemoteIO

我已经成功地合成了 16 位线性 PCM 并将其输出到 RemoteIO AudioUnit。现在我尝试在输出到 RemoteIO 之前添加一个 Reverb2 音频单元。我正在创建一个 AudioGraph 并将回调设置为混响单元,但我没有收到任何声音。

如何设置图表并正确格式化 Reverb2 和 RemoteIO 单元?

0 投票
1 回答
2105 浏览

ios - AVAudioSession、AudioStreamBasicDescription 和 RemoteIO 设备默认值

我正在尝试编写一个可以进行数字信号处理并希望使其尽可能轻的应用程序。让我困惑一段时间的一件事就是各种设备的默认值可能是什么,这样我就可以避免在从缓冲区接收数据之前发生不需要的转换。我遇到了以下链接http://club15cc.com/code-snippets/ios-2/get-the-default-output-stream-format-for-an-audio-unit-in-ios这让我知道了什么我相信这是正确的道路。

我已经扩展了链接中的代码以在获取 ASBD(AudioStreamBasicDescription) 内容之前创建和激活 AVAudioSession,然后可以使用 AudioSession 请求各种“首选”设置以查看它们有什么影响。我还将用于列出 ASBD 值的 Apple 代码与上述链接中的代码结合起来。

下面的代码被放入通过选择 Single View Application 模板生成的 ViewController.m 文件中。请注意,您需要将 AudioToolbox.framework 和 CoreAudio.framework 添加到项目的链接框架和库中。

我很想知道人们从其他实际硬件中获得的结果。请注意,代码已构建并部署到 IOS 7.1

0 投票
1 回答
1730 浏览

ios - 使用 AudioUnit IOS 从 nsdata 的服务器流播放语音

我正在尝试在 iOS 中构建某种 VoIP 应用程序。到目前为止,我已经能够成功地将麦克风数据作为缓冲区从麦克风发送到使用GCDAsyncSocket. 现在我需要回放我收到的数据,这让我很困惑。我在网上看过,但我看到的只是从远程播放音频文件或从 URL 播放音频流。我实际上NSData定期接收,需要弄清楚如何使用它们NSData来填充音频单元缓冲区列表。我是 C 的新手,发现很难通过它。这是我NSData从服务器获取的。

在我的 中AudioUnitProcessor,这就是我AUnit使用Stefan Popp 的代码进行设置的方式:

最后这是向服务器发送音频数据的方法

所有这些工作都很好,我可以在我的服务器中聆听以 Java 运行的声音。现在我需要弄清楚如何调整这个音频单元来播放NSData我不断从服务器接收到的数据包(我看过一些播放远程文件的例子,这不是我需要的。我需要播放语音)。来源不是文件,而是有人在说话,所以我有点困惑。

0 投票
0 回答
79 浏览

core-audio - 能够在模拟器上播放立体声类型音频,但不能在使用示例 RemoteIO/AudioUnit 应用程序的设备上播放

在这个示例应用程序中,我能够加载立体声数据文件并使用模拟器播放它。但它在设备上不起作用。我尝试使用声音编辑器并将立体声剪辑转换为单声道并更改描述符设置,它只适用于单声道。我很难找出原因,我猜这与我的描述符配置问题有关。

此示例应用程序位于https://github.com/peter7777usa/TestAudio

播放功能

音频流描述

0 投票
1 回答
349 浏览

ios - 使用音频单元录制音频,每个文件以 X 秒数分段

我已经在这几天了。我对框架的音频单元层不是很熟悉。有人可以给我指出一些完整的例子,说明我如何让用户记录,而不是用 x 个间隔即时写入文件。例如,用户按记录,每 10 秒,我想写入一个文件,第 11 秒,它会写入下一个文件,在第 21 秒,它是相同的。所以当我录制 25 秒的音频时,它会产生 3 个不同的文件。

我已经用 AVCapture 试过这个,但它会在中间产生点击和弹出。我已经阅读了它,这是由于读写操作之间的毫秒数。我已经尝试过音频队列服务,但知道我正在开发的应用程序,我需要完全控制音频层;所以我决定使用音频单元。