1
我需要读取音频采样值。我使用的是audioQueue回调(从苹果SpeakHere为例):AudioQueue采样值错误
UInt32 samplesCount = inCompleteAQBuffer->mAudioDataBytesCapacity/2;
UInt16 *samples = (UInt16 *)inCompleteAQBuffer->mAudioData;
for (int i=0; i < samplesCount; i++)
{
printf("%i\n", samples[i]);
}
值返回,但是当我从大胆图进行比较他们,他们似乎是错的:
Audacity值从1(65535)到-1(0)。因此,逻辑上第一取样值应该是32767,第二个应该是50〜000 ...
但我收到的其他结果:
value - position
65535 - 0
29501 - 1
26086 - 2
63656 - 3
28477 - 4
65407 - 5
36802 - 6
36546 - 7
18244 - 8
17220 - 9
player settings:
(Float64) mSampleRate = 44100
(UInt32) mBytesPerPacket = 2
(UInt32) mFramesPerPacket = 1
(UInt32) mBytesPerFrame = 2
(UInt32) mChannelsPerFrame = 1
(UInt32) mBitsPerChannel = 16
(UInt32) mReserved = 0
问题 - 为什么采样值从mAudioData返回错了?
谢谢你的回答。但我已经使用[链接](https://github.com/reinforce-lab/MonoTouch.AudioUnit)和SInt32的音频单元示例来获取示例值,它对我很有帮助。顺便说一句,SInt16和UInt16有区别吗?我的意思是使用UInt16而不是SInt16来获取范围从0(-32767 in SInt16)到65535(在SInt16中为32767)的值是错误的? – f3n1kc 2012-03-30 11:01:37
对我来说没关系,但是除非你使用字节交换和使用SInt16,否则你不会看到与大胆相同的值。 – hooleyhoop 2012-03-30 11:31:28