6

我可以设置任何我想要的采样率吗?有什么限制?

硬件采样率如何?一旦设置好,对单元之间传递的内部采样率有什么限制?

我猜测实际的硬件速率可能必须是 44.1KHz 的位移,并且任何内部采样率必须是该原始值的向下位移(例如 22.1KHz、11.05KHz)。这很近吗?

据我了解,
1.我从音频会话设置硬件采样率。
2.系统设置一个尽可能接近我指定的采样率的采样率。
3. 然后我在音频会话中查询我设置的相同属性,这将为我提供它正在使用的实际采样率

在音频单元,特别是 RemoteIO 单元的级别,文档指出该单元连接到硬件的两个点(即麦克风(输入)总线的输入范围和扬声器(输出)总线的输出范围) ,采样率可能被检索 设置

但是,我尝试在构建远程 I/O 单元时访问此值,但它返回零。我想也许我需要先启动该单元,然后才能从其连接中获取有意义的数据(启动它的行为可能会创建连接)。所以这里的解决方案似乎是从音频会话中获取采样率并使用它,如上所述。

需要标签:音频单元

4

1 回答 1

2

自从您提到 AudioSessions 以来,我假设您使用的是 iOS。所以你会想要:

  1. 检查音频输入硬件。AudioSessionGetProperty (kAudioSessionProperty_AudioInputAvailable...)

  2. 将音频会话设置为“播放和录制”模式。AudioSessionSetProperty (kAudioSessionProperty_AudioCategory...)kAudioSessionCategory_PlayAndRecord

  3. 激活会话。AudioSessionSetActive()

  4. 获得首选的采样率。AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareSampleRate)

然后,您可以使用正确的采样率设置您的音频处理链。

至于播放音频,您可以使用任何采样率,API 应将其转换为硬件的输出采样率。显然,如果您使用非常高的采样率,它将消耗大量内存和 CPU 时间。

于 2010-11-22T04:43:10.047 回答