我可以设置我想要的任何采样率吗?有什么限制?
硬件采样率如何?一旦确定,单位之间传递的内部采样率有什么限制?
我猜测实际硬件速率可能必须是44.1KHz的一些位移,并且任何内部采样速率必须是该原始值的向下位移(例如22.1KHz,11.05KHz)。这很接近吗?
据我了解,
1.我设置来自音频会话的硬件采样率
2. 系统将设置采样率 尽可能接近 到我指定的采样率。
3.然后我查询音频会话以查找我设置的相同属性,这将为我提供使用的实际采样率
在音频单元的级别,特别是RemoteIO单元,文档说明单元连接到硬件的两个点(即麦克风(输入)总线的输入范围和扬声器的输出范围(输出) ))总线),采样率可能 检索 ,但不 设置 。< / p>
但是,我尝试在构建远程I / O单元时访问此值,并返回零。我想也许我需要启动单元才能从其连接中获取有意义的数据(启动它的行为可能会创建连接)。所以这里的解决方案似乎是从音频会话中获取采样率并使用它,如上所述。
需要标签:音频单元
答案 0 :(得分:1)
我假设你提到AudioSessions就在iOS上。所以你想要:
检查音频输入硬件。 AudioSessionGetProperty (kAudioSessionProperty_AudioInputAvailable...)
将音频会话设置为“播放和录制”模式。 AudioSessionSetProperty (kAudioSessionProperty_AudioCategory...)
kAudioSessionCategory_PlayAndRecord
激活会话。 AudioSessionSetActive()
获取首选采样率。 AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareSampleRate)
然后,您可以使用正确的采样率设置音频处理链。
至于播放音频,您可以使用任何采样率,API应将其转换为硬件的输出采样率。显然,如果你使用非常高的采样率,它会耗费大量的内存和CPU时间。