使用 RemoteIO 和 Audio Unit 播放音频文件

发布于 2024-08-27 20:10:20 字数 222 浏览 7 评论 0原文

我正在查看 Apple 的 iPhone 的“aurioTouch”示例,我想播放 mp3 或 wav,而不是使用内置麦克风。我对 iPhone 编程的音频部分非常陌生,但我认为我需要修改 SetupRemoteIO(...) 函数,并将名为“comp”的 AudioComponent 替换为播放文件的自定义 AudioComponent。基本上我希望该应用程序的功能与原始应用程序完全相同,但使用音频文件作为输入而不是麦克风。

I am looking at Apple's 'aurioTouch' example for the iPhone and I would like to play an mp3 or wav instead of using the built in mic. I am very new to the audio portion of iPhone programming, but I think I need to modify the SetupRemoteIO(...) function and replace the AudioComponent named 'comp' with a custom AudioComponent that plays a file. Basically I want the app to function exactly the same as the original, but with an audio file as the input instead of the mic.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

╰ゝ天使的微笑 2024-09-03 20:10:20

您只需将音频文件转换为 pcm 数据,然后在播放回调期间将该数据提供给 RemoteIO 接口。

要读取音频文件,您需要使用 ExtAudioFileOpenURL 和 ExtAudioFileRead。另请确保使用 ExtAudioFileSetProperty 设置音频格式以转换为目标 pcm 格式(应打包、带符号的整数 PCM 数据)。

播放仅涉及响应 RemoteIO 回调(应与 aurioTouch 的示例相同)并向其提供您加载的 PCM 数据。

唯一棘手的部分是加载整个 mp3 文件作为 PCM 可能会占用大量内存。您可能必须编写一个加载线程,以便仅加载 mp3 的相关块即可满足内存需求。

You just need to convert your audio file to pcm data and then feed that data to the RemoteIO interface during the playback callback.

To read your audio file in, you will want to use ExtAudioFileOpenURL and ExtAudioFileRead. Also make sure to set your audio format with ExtAudioFileSetProperty to convert to your target pcm format (which should be packed, signed integer PCM data).

Playback simply involves responding to the RemoteIO callback (which should be identical to aurioTouch's example) and feeding it the PCM data you loaded up.

The only other tricky part is that loading an entire mp3 file as PCM can take up a ton of memory. You might have to write a loading thread so that you can stay under your memory requirements by only loading your relevant chunk of the mp3.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文