我很高兴合成音频(44.1khz)并通过RemoteIO音频单元发送出去。我注意到我的应用程序的音频在通过HDMI输出到特定型号的电视时“乱码”。在我看来,这个问题与这台电视正在寻找48khz的音频数据这一事实有关。
以下是一些问题:
RemoteIO是否采用其输出的设备的采样率?如果我通过HDMI将音频发送到要求48kz的设备,我的RemoteIO回调缓冲区是否会变为48khz?
是否有一些整洁的方法可以强制RemoteIO仍然以44.1khz的方式思考,并且在将数据传输到设备之前,是否足够聪明以自行执行任何必要的采样率转换?
如果RemoteIO确实只是按照它所连接的设备,那么我可能需要在我的综合引擎和远程IO之间进行一些采样率转换。 AudioConverterConvertComplexBuffer是最好的方法吗?
答案 0 :(得分:3)
解决了我的问题。我错误地认为渲染回调所请求的帧数是2的幂。更改了我的代码以适应任意数量的帧,现在看起来一切正常。
答案 1 :(得分:1)
如果您想要采样率转换,请尝试使用音频队列API,或使用某些DSP代码在您自己的应用中进行转换。
是否可以配置RemoteIO缓冲区大小或采样率可能取决于iOS设备型号,操作系统版本,音频路由,后台模式等,因此应用程序在使用RemoteIO时必须适应不同的缓冲区大小和采样率。