最近我遇到了下一個問題。 我使用CoreAudio AudioUnit(RemoteI/O)在iOS應用程序中播放/錄製聲音流。進入音頻單元的聲音流是2聲道LPCM,16位有符號整數,交錯(我也配置了一個輸出記錄流,它基本上是相同的,但每個分組和幀只有一個聲道和2個字節)。CoreAudio Audio Unit只播放一路立體聲音頻
我已經配置我的輸入ASBD如下(我沒有得到任何錯誤,當我把它當我初始化單位):
ASBD.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
ASBD.mBytesPerPacket = 4;
ASBD.mFramesPerPacket = 1;
ASBD.mBytesPerFrame = 4;
ASBD.mChannelsPerFrame = 2;
ASBD.mBitsPerChannel = 16;
在我的渲染回調函數,我得到AudioBufferList一個緩衝區(我的理解,因爲音頻流是交織的)。
我有一個樣本立體聲文件,用於測試哪個是100%立體聲和2個明顯的通道。我將它翻譯成與ASBD相對應的流並饋送到音頻單元。
當我播放示例文件時,我只聽到左聲道。
我將不勝感激任何想法,爲什麼發生這種情況。如果需要,我可以發佈更多的代碼。
更新:我已經嘗試設置
ASBD.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked | kLinearPCMFormatFlagIsNonInterleaved;
ASBD.mBytesPerPacket = 2;
ASBD.mFramesPerPacket = 1;
ASBD.mBytesPerFrame = 2;
ASBD.mChannelsPerFrame = 2;
ASBD.mBitsPerChannel = 16;
ASBD和我有緩衝名單有兩個緩衝器。我將我的數據流解交錯爲2個通道(1個通道用於1個緩衝區)並獲得相同的結果。我嘗試在iPad上使用耳機和揚聲器(我知道揚聲器是單聲道的)。
你介意發佈你的源代碼嗎?你是如何將你的信息流交流到2個頻道的? – Surz