2011-11-07 30 views
2

對ALSA不太熟悉,但我支持使用它的應用程序。使用ALSA可以同時捕獲麥克風和線路輸入嗎?

是否可以同時錄製麥克風和線路輸入的音頻?不一定要混合音頻,儘管這是一個可能性已被要求。兩者都可以設置爲記錄並使用ALSA分別讀取每一個?

關於ALSA的文檔並不是非常有幫助,這基本上是我第一次使用ALSA在Linux上進行混音。

任何和所有的幫助將不勝感激;希望有人在過去做過這樣的事情,要麼有樣品可以分享,要麼指向正確的方向。

回答

1

arecord -l會給你一個可用捕獲設備的列表。在我的情況下:

**** List of CAPTURE Hardware Devices **** 
card 0: M2496 [M Audio Audiophile 24/96], device 0: ICE1712 multi [ICE1712 multi] 
    Subdevices: 1/1 
    Subdevice #0: subdevice #0 

所以,用我的卡,你會不走運 - 只有一個設備(即只有一個不同的來源)。該設備將爲您提供由硬件路由至其的所有數據,如由外部混音器應用程序配置的那樣。

然而,對於某些卡片,可能是,但可以將MIC路由到通道1(左側)和LINE到通道2(右側),然後錄製2個通道,根據需要將它們分開。當然,如果硬件支持,您也可以使用兩個通道,並記錄四個通道。

+0

謝謝你。我正在開發嵌入式系統,唯一顯示的捕獲設備是內置音頻混音器。它具有線路和麥克風輸入的控制,但顯然我無法加入它們;電路板似乎一次只能連接一個輸入通道。我確實找到了一種方法來告訴線路繞過編解碼器並直接播放揚聲器,這可能是我長期以來所做的。 問題仍然存在,但是,沒有C代碼解釋如何做到這一點;我仍然需要system()調用amixer。 – Will

2

也許可以這樣做:不確定,但從http://www.jrigg.co.uk/linuxaudio/ice1712multi.html,未經過測試,但這會給你帶有4個通道的虛擬設備。

pcm.multi_capture { 
    type multi 
    slaves.a.pcm hw:0 
    slaves.a.channels 2 
    slaves.b.pcm hw:1 
    slaves.b.channels 2 
    bindings.0.slave a 
    bindings.0.channel 0 
    bindings.1.slave a 
    bindings.1.channel 1 
    bindings.2.slave b 
    bindings.2.channel 0 
    bindings.3.slave b 
    bindings.3.channel 1 
} 

我不知道你是否可以將其與路由或正確sintax混合:

pcm.route_capture { 
type route 
slave.pcm "multi_capture" 
ttable.0.0 0.5 
ttable.1.1 0.5 
ttable.0.2 0.5 
ttable.1.3 0.5 
} 

pcm.route_capture { 
type route 
slave.pcm "multi_capture" 
ttable.0.0 0.5 
ttable.1.1 0.5 
ttable.2.0 0.5 
ttable.3.1 0.5 
} 

如果有人試驗,請告訴我們的結果?謝謝!
祝你好運!