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