大佬教程收集整理的这篇文章主要介绍了ios – 如何获得本机(硬件支持)音频采样率以避免内部采样率转换?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑:
否则,请您指点一个源代码示例,说明如何以编程方式获取这些值?
编辑:
此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的文档仅提供
特别是省略了硬件这个词,我们也有这个方法:
- (BOOL)setPreferredSampleRate:(doublE)sampleRate error:(NSError **)outError
其中sampleRate被充分描述为
似乎我们应该使用它的方式是设置我们的首选速率,设备将根据硬件设置(?)实际速率,该速率可能接近可行的首选速率.因此,一旦设置了首选速率,就可以检查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 – 如何获得本机(硬件支持)音频采样率以避免内部采样率转换?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。