iphone - 如何从 iOS 上的 AudioQueue 服务获取样本

标签 iphone ios audio core-audio audioqueue

我正在尝试从 AudioQueue 获取样本以在 iPhone 上显示音乐谱(如 iTunes 中的音乐)。

我读了很多帖子,但几乎所有帖子都询问有关在录制而不是播放时获取样本:(

我正在使用 AudioQueue 服务来传输音频。请帮助理解以下几点: 1/我在哪里可以访问样本(PCM,非 mp3(我正在使用 mp3 流) 2/我应该在自己的缓冲区中收集样本来应用 fft 吗? 3/是否可以在不进行fft变换的情况下获得频率? 4/如何将缓冲区中的 fft 移位与当前播放的样本同步?

谢谢

更新:

AudioQueueProcessingTapNew

对于 iOS6+,这对我来说效果很好。但 iOS5 呢?

最佳答案

对于播放音频,其想法是在将样本提供给音频队列回调之前获取样本。您可能需要事先将任何压缩音频文件格式转换为原始 PCM 样本。这可以使用 AVFoundation 转换器或文件读取器服务之一来完成。

然后,您可以从用于馈送音频队列回调缓冲区的同一源复制数据帧,并应用 FFT 或其他 DSP 对其进行可视化。

您可以使用 FFT 或一组带通滤波器来获取频率信息,但 FFT 在这方面非常有效。

同步需要通过反复试验来完成,因为 Apple 没有指定确切的音频和 View 图形显示延迟,而 iOS 设备和操作系统版本之间的延迟可能会有所不同。但是短音频队列缓冲区或使用 RemoteIO 音频单元可能会让您更好地控制音频延迟,而 OpenGL ES 将使您更好地控制图形延迟。

关于iphone - 如何从 iOS 上的 AudioQueue 服务获取样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992023/

相关文章:

ios - Swift:在 TableView 单元格中创建 UILabel

ios - didReceiveLocalNotification下慢慢打开 map app

c# - 在 C# 中播放部分声音 (WMA) 文件

iphone - 检查 iPhone 应用程序是否首次运行的最佳方法

iphone - 角标(Badge),更新商品编号?

iphone - 如何使用印度详细信息将iOS App放入美国App Store

flutter 音频修剪

iphone - 第一 View 警报

ios - 无法在 Interface Builder (Xcode 5) 中创建与 subview 的导出连接

c - 为什么我的输入通过管道发送到进程时会延迟?