gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:29:07 25 4
gpt4 key购买 nike

任何人都可以指出说明不同 iPhone 版本的 native 采样率以避免 core-audio 内部采样率转换的文档吗?

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

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

最佳答案

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

有一个 Audio Session 属性会给你这个: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 但其他设备可能(将)不同...

编辑

在回答问题和阅读最新文档时,我发现 CurrentHardwareSampleRate 在 iOS6 中已弃用。真的,鉴于 my own advice,我应该更清楚.

事情是这样的:

1 - 不要使用这个过时和弃用的 C 接口(interface),使用 AVAudioSession API

2 - 不要使用HardwareSampleRate,使用sampleRate

这让人怀疑苹果想要(甚至)远离金属。但我们应该放心。 sampleRate 的文档只提供

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

特别是省略了hardware这个词,我们还有这个方法:

- (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 - 如何获得 native (硬件支持的)音频采样率以避免内部采样率转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20889902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com