我的音频设备是什么?

hel*_*ood 27 sound

我正在尝试使用easycap从我的摄像机录制,但我遇到了一个小问题。使用他们的测试脚本,我可以获得音频和视频。我注意到在第 159 行的脚本中,它调用了“ DEV_ADUIO”,报告为“ plughw:2,0”。

这个设备究竟是什么?它位于/dev/某个地方吗?

我已经完成了ls /dev/,但找不到任何建议使用音频设备的内容

use*_*124 31

运行命令(在终端中)

aplay -l
Run Code Online (Sandbox Code Playgroud)

输出看起来像

**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC262 Analog [ALC262 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Run Code Online (Sandbox Code Playgroud)

用于此的设备是plughw:0,0。两个零来自设备 0Subdevice #0

  • 0:0 不是来自 **card 0** 和 **device 0** 吗? (10认同)
  • 哦,这些在 /dev/snd/ (4认同)

Mat*_*aun 7

一般来说,有几种方法可以在Linux上获取音频播放和录音设备。我在这个答案中重点关注命令行工具。

使用 PipeWire 工具

如果您运行PipeWire作为声音服务器,您可以使用它pw-cli来获取所有输入和输出(录音和播放设备)的名称:

pw-cli list-objects | grep node.name
Run Code Online (Sandbox Code Playgroud)

输出示例:

node.name = "Dummy-Driver"
node.name = "Freewheel-Driver"
node.name = "Midi-Bridge"
node.name = "v4l2_input.pci-0000_00_1a.0-usb-0_1.6_1.0"
node.name = "alsa_output.pci-0000_00_1b.0.analog-stereo"
node.name = "alsa_input.pci-0000_00_1b.0.analog-stereo"
node.name = "alsa_input.usb-UC_Mic_USB_Audio_Device-00.mono-fallback"
Run Code Online (Sandbox Code Playgroud)

这些节点名称可用于从命令行录制音频

另请参阅pw-link哪些可以列出输入和输出 PipeWire 端口。

使用 PulseAudio 工具

或者,您可以使用PulseAudio (另一个声音服务器)附带的命令行工具来执行相同的操作:

pactl list | grep node.name
Run Code Online (Sandbox Code Playgroud)

这会产生与pw-cli list-objects我的机器上类似的输出:

node.name = "alsa_output.pci-0000_00_1b.0.analog-stereo"
node.name = "alsa_output.pci-0000_00_1b.0.analog-stereo"
node.name = "alsa_input.pci-0000_00_1b.0.analog-stereo"
node.name = "alsa_input.usb-UC_Mic_USB_Audio_Device-00.mono-fallback"
Run Code Online (Sandbox Code Playgroud)

我发现仅显示音频接收器很有用,例如扬声器和耳机:

pactl list short sinks
Run Code Online (Sandbox Code Playgroud)

输出示例:

43  alsa_output.pci-0000_00_1b.0.analog-stereo  PipeWire    s32le 2ch 48000Hz   IDLE
1076    alsa_output.usb-Logitech_Logitech_Wireless_Headset_4473D63ED97A-00.analog-stereo    PipeWire    s16le 2ch 48000Hz   IDLE
Run Code Online (Sandbox Code Playgroud)

请注意,即使您使用 PipeWire 作为音频服务器,pactl它也可能仍然可以工作,因为 PipeWire 的目标是成为 PulseAudio 的直接替代品。

使用 ALSA 工具

如user4124 的回答所示,您可以使用ALSA 的命令行工具列出播放设备(例如耳机、扬声器) :

aplay --list-devices
Run Code Online (Sandbox Code Playgroud)

我的机器上播放设备的示例输出:

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CX20590 Analog [CX20590 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Run Code Online (Sandbox Code Playgroud)

对于录音设备,请使用

arecord --list-devices
Run Code Online (Sandbox Code Playgroud)

我的机器上的记录设备的示例输出:

**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CX20590 Analog [CX20590 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Run Code Online (Sandbox Code Playgroud)

另请参阅手册页--list-pcms中列出所有PCM设备的选项。