播放兩個獨立波形文件所需的API配置/調用是什麼? 我試圖這樣做,我正在獲取資源繁忙錯誤。解決問題的一些指針將會非常有幫助。ALSA Api:如何同時播放兩個wave文件?
以下是從第二wavefile
"Device or resource busy"
播放兩個獨立波形文件所需的API配置/調用是什麼? 我試圖這樣做,我正在獲取資源繁忙錯誤。解決問題的一些指針將會非常有幫助。ALSA Api:如何同時播放兩個wave文件?
以下是從第二wavefile
"Device or resource busy"
ALSA不提供混頻器的snd_pcm_prepare()
的錯誤消息。如果您需要同時播放多個音頻流,則需要自行將它們混合在一起。
最簡單的方法是將WAV文件解碼爲float
樣本,添加它們,並在將它們轉換回整數樣本時剪切它們。
或者,你可以嘗試打開默認音頻設備(和不像「HW:0」硬件設備)多次,一次要播放的每個流,並希望DMIX ALSA插件被加載並將提供混合功能。
您可以配置ALSA的dmix
插件以允許多個應用程序共享輸入/輸出設備。
一個例子的配置做,這是以下:
pcm.dmixed {
type dmix
ipc_key 1024
ipc_key_add_uid 0
slave.pcm "hw:0,0"
}
pcm.dsnooped {
type dsnoop
ipc_key 1025
slave.pcm "hw:0,0"
}
pcm.duplex {
type asym
playback.pcm "dmixed"
capture.pcm "dsnooped"
}
# Instruct ALSA to use pcm.duplex as the default device
pcm.!default {
type plug
slave.pcm "duplex"
}
ctl.!default {
type hw
card 0
}
這將執行以下操作:
dmix
插件一個新的設備,它允許多個應用程序共享的輸出流dsnoop
它爲輸入流做同樣的事情duplex
裝置將使用asym
插件duplex
設備作爲缺省設備hw:0
來控制默認裝置(命令alsamixer等)堅持這在~/.asoundrc
或/etc/asound.conf
,你應該很好去。
欲瞭解更多信息,請參閱http://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing。
天才!!!!強尼,你是英雄,是的。非常感謝沒有數百萬。偉大的工作,這是偉大的,我討厭PulseAudio,他們對他們的2013年和PA崩潰感到羞恥,使我們輕鬆。在哪裏Alsa是最好的永遠,只有我有你的腳本這個多輸出問題,其500%的工作。謝謝,保持最佳答案。 – YumYumYum
您可以使用此配置也
pcm.dmix_stream
{
type dmix
ipc_key 321456
ipc_key_add_uid true
slave.pcm "hw:0,0"
}
pcm.mix_stream
{
type plug
slave.pcm dmix_stream
}
更新它在〜/ .asoundrc或/ etc/asound在。CONF
可以使用命令
對於wav文件
aplay -D mix_stream 「文件名」
對於原始或pcmfile
aplay -D mix_stream -c 「通道」 -r 「rate」-f「format」「filename」
根據音頻文件輸入頻道,速率,格式和文件名的值
alsa的混音器工具怎麼樣?我可以用它來混音嗎? –
@LunarMushrooms我在談論將多個音頻流混合在一起,而不是用於管理音量級別的混音器控制實用程序。 –
好的,謝謝澄清。 –