我掛在IAudioClient和IAudioRenderClient中以檢索原始音頻緩衝區。爲了確定我之前在客戶端上調用GetMixFormat的格式。這適用於大多數應用程序,如Firefox中的遊戲或Flash Player。IAudioRenderClient :: ReleaseBuffer掛鉤有時會扭曲音頻(嘗試查找原始音頻的類型)
但是,從Google Chrome(Flash)捕獲的音頻失真。我附上了從Firefox和Google Chrome中捕獲的相同音頻流的簡短示例。 GetMixFormat()報告IEEE_FLOAT,兩個48k的通道。但是,在Audacity中導入它們並使用這些參數時,只有Firefox播放器可以正常播放。事實上,爲了使圖形在Chrome瀏覽器上正確顯示,我必須將其導入爲已簽名的PCM(儘管如此仍然存在扭曲)。
任何想法爲什麼GetMixFormat錯誤或Google Chrome代碼片段使用的是什麼格式?作爲一個說明,我發現Chrome示例包含1個完整幀(0xF00字節),然後只有一個幀(0x780字節),其餘填充0,即使函數報告寫入0xF00字節。但即使刪除零數據,我也無法獲得任何地方。 Chrome以某種方式改變緩衝區?
文件:
- http://lms-dev.com/files/so/audio_ff.raw
- http://lms-dev.com/files/so/audio_chrome.raw
- http://lms-dev.com/files/so/audio_chrome_skip_empty_frame.raw
任何幫助,非常感謝!提前致謝。