ios – 如何获得本机(硬件支持)音频采样率以避免内部采样率转换?

ios – 如何获得本机(硬件支持)音频采样率以避免内部采样率转换?,第1张

概述任何人都可以向我指出文档,说明不同iPhone版本的原生采样率,以避免核心音频内部采样率转换? 编辑: 否则,请您指点一个源代码示例,说明如何以编程方式获取这些值? 编辑: 此Apple document (page 26)指的是Canonical音频格式,但仅提及样本类型(PCM)和位深度(16位).它没有提到捕获硬件直接支持的任何本机采样率.这些是我正在寻找的价值观. 您需要做的是找到一种方法 任何人都可以向我指出文档,说明不同iPhone版本的原生采样率,以避免核心音频内部采样率转换?

编辑:
否则,请您指点一个源代码示例,说明如何以编程方式获取这些值?

编辑:
此Apple document (page 26)指的是Canonical音频格式,但仅提及样本类型(PCM)和位深度(16位).它没有提到捕获硬件直接支持的任何本机采样率.这些是我正在寻找的价值观.

解决方法 您需要做的是找到一种方法来检测硬件采样率,并使用您在后续代码中找到的任何内容.

有一个音频会话属性,它将为您提供:CurrentHarDWareSampleRate

- (voID) logSampleRate {    float64 sampleRate;    UInt32 srSize = sizeof (sampleRate);    Osstatus error =          AudioSessionGetProperty(         kAudioSessionProperty_CurrentHarDWareSampleRate,&srSize,&sampleRate);    if (error == noErr) {        NSLog (@"CurrentHarDWareSampleRate = %f",sampleRate);    }}

iPhone 4S和iPhone 5S报告harDWareSampleRate = 44100.000000,但其他设备可能(将)不同…

编辑

在回答问题并阅读最新文档时,我发现在iOS6中不推荐使用CurrentHarDWareSampleRate.实际上,鉴于my own advice,我应该知道的更好.

所以这是事情:

1 – 不要使用这个陈旧且不推荐使用的C接口,请使用AVAudioSession API

2 – 不要使用HarDWareSampleRate,请使用sampleRate.

这引起了人们的怀疑,即苹果想让我们(甚至)远离金属.但我们应该放心.虽然sampleRate的文档仅提供

The audio sample rate,in hertz,that is currently in effect. (read-only)

特别是省略了硬件这个词,我们也有这个方法:

- (BOol)setPreferredSampleRate:(double)sampleRate error:(NSError **)outError

其中sampleRate被充分描述为

The harDWare sample rate you want to use. The available range for harDWare sample rate is device dependent. It typically ranges from 8,000 through 48,000 hertz.

似乎我们应该使用它的方式是设置我们的首选速率,设备将根据硬件设置(?)实际速率,该速率可能接近可行的首选速率.因此,一旦设置了首选速率,就可以检查sampleRate(而不是preferredSampleRate)属性的值,以发现将要使用的实际采样率.这是 – 我们希望 – 硬件采样.

这是现代的方式……

- (voID) logAudioFormatAV {    AVAudioSession* session = [AVAudioSession sharedInstance];    BOol success;    NSError* error = nil;    double preferredSampleRate = 48000;    success  = [session setPreferredSampleRate:preferredSampleRate error:&error];    if (success) {        NSLog (@"session.sampleRate = %f",session.sampleRate);    } else {        NSLog (@"error setting sample rate %@",error);    }}

我在4S和5S上尝试了各种首选采样率,并且总是回到44100.所以这似乎做得对,并报告实际的硬件采样率.但是,这需要更广泛的测试以获得更大的确定性.

我还想向你指出Chris Adamson出色的书“学习核心音频”的方向,该书在第10章“iOS上的核心音频”中触及了这个主题.

总结

以上是内存溢出为你收集整理的ios – 如何获得本机(硬件支持)音频采样率以避免内部采样率转换?全部内容,希望文章能够帮你解决ios – 如何获得本机(硬件支持)音频采样率以避免内部采样率转换?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1106176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存