我在snd_aloop模块中遇到了一些问题。
我试图路由我的所有音频通过阿尔萨,而不使用脉冲音频。如果我开始使用jackd,没有来自非alsa应用程序的声音,但是像rhythmbox或任何其他支持的本地jack支持的软件都能正常工作。
主要原因是我主要做音频编辑,但我也在线听视频。
我读到,我可以使用alsa 次要_aloop模块来建立虚拟的hw,这样我就可以将我的非插孔应用程序音频发送出去,通过alsa_in和alsa_out机制来很好地与杰克一起玩。
我读过很多教程,比如这一个,这一个也浏览了大量的文档这里和这里。
最让我困惑的部分是环回设置以及alsa_in和alsa_out的工作方式。
例如,对于snd_aloop模块,有两个有8个子设备的设备
我的aplay-l
看起来像这样
**** List of PLAYBACK Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: PCH [HDA Intel PCH], device 0: CS4208 Analog [CS4208 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 1: CS4208 Digital [CS4208 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
如果我试图像这样设置我的系统:
#jack capture and playback
pcm.jack_capture_1 {
type plug
slave.pcm "hw:Loopback,0,0"
}
pcm.jack_playback_1 {
type plug
slave.pcm "hw:Loopback,0,1"
}
#alsa capture and playback
pcm.alsa_input_1 {
type plug
slave.pcm "hw:Loopback,1,0"
}
pcm.alsa_output_1 {
type plug
slave.pcm "hw:Loopback,1,1"
}
#playback devices
pcm.jack_audio_1 {
type asym
playback.pcm "jack_playback_1"
capture.pcm "jack_capture_1"
}
那就做alsa_out -j "playback" -d jack_audio_1 sound.wav
即使在完成杰克路由图中的连接之后,我仍然没有输出。
我的问题:看看我的设置,我已经将环回jack_capture_1绑定到hw:0,0,0环回jack_playback_1绑定到hw:0,1
这意味着任何发送给jack_capture_1的声音都应该是来自jack_playback_1的回声,对吗?
另外,alsa_in是进入杰克会话的alsa音频流,而alsa_out是杰克完成后输出的alsa音频流吗?
我已经在snd_aloop上阅读了所有我能读到的东西,但是即使是他们的正式文件似乎也有点缺乏。
有人能帮我解决这个问题吗?
发布于 2018-06-20 13:09:32
(答案有点晚了,但也许有人觉得这很有用;)
/etc/modprobe.d/alsa.conf
alias snd-card-8 snd-aloop
options snd_aloop index=8 id=loop0 enable=1
/etc/asound.conf
#### Linrad ####
pcm.loop0_0_0 {
type plug
slave {
pcm "hw:loop0,0,0"
format FLOAT_LE
rate 96000
}
}
pcm.linrad_alsa {
type asym
playback.pcm "loop0_0_0"
capture.pcm "loop0_0_0"
hint {
show on
description "Linrad: ALSA"
}
}
pcm.loop0_1_0 {
type plug
slave {
pcm "hw:loop0,1,0"
format FLOAT_LE
rate 96000
}
}
pcm.linrad_jack {
type asym
playback.pcm "loop0_1_0"
capture.pcm "loop0_1_0"
hint {
show on
description "Linrad: JACK"
}
}
#### WSJTX ####
pcm.loop0_0_1 {
type plug
slave {
pcm "hw:loop0,0,1"
format FLOAT_LE
rate 96000
}
}
pcm.wsjtx_alsa {
type asym
playback.pcm "loop0_0_1"
capture.pcm "loop0_0_1"
hint {
show on
description "WSJTX: ALSA"
}
}
pcm.loop0_1_1 {
type plug
slave {
pcm "hw:loop0,1,1"
format FLOAT_LE
rate 96000
}
}
pcm.wsjtx_jack {
type asym
playback.pcm "loop0_1_1"
capture.pcm "loop0_1_1"
hint {
show on
description "WSJTX: JACK"
}
}
....
对于管道插孔,如下所示(放置在一个shell脚本中,在jackd启动后运行)
alsa_in -j "WSJTX source" -d wsjtx_jack -q 1 &> /dev/null &
alsa_out -j "WSJTX sink" -d wsjtx_jack -q 1 &> /dev/null &
https://unix.stackexchange.com/questions/251454
复制相似问题