linux arecord:捕获声卡输出而不是麦克风输入

linux arecord:捕获声卡输出而不是麦克风输入

我正在尝试捕获声卡输出并使用以下命令将其编码为 Vorbis ogg 格式:

arecord -f cd -t raw | oggenc - -r -o file.ogg

但是,记录的是计算机的麦克风输入,而不是声卡输出。

该命令的输出arecord -l

**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

该命令的输出arecord -L包含在其中pastebin 条目

手册arecord页表明可以使用标志选择输入设备-D,但没有提供语法示例。

我想知道如何将输入arecord从麦克风更改为声卡。我对基于 GUI 的替代方案(例如 Audacity)不感兴趣。谢谢。

编辑:我正在运行 Debian 7.0(稳定版),arecord版本为 1.0.25、vorbis-tools版本为 1.4.0 和 ALSA 驱动程序版本为 1.0.24。

答案1

多年后,斗争仍在继续......如何指定录音设备,瞧:

➜  ~ arecord -l                                                              
**** 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 PnP Sound Device], device 0: USB Audio [USB Audio]       
  Subdevices: 1/1                                                            
  Subdevice #0: subdevice #0     

➜  ~ arecord -f S16_LE -r 44100 --device="hw:1,0" plik.wav                   
Recording WAVE 'plik.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono 
^C
Aborted by signal Interrupt...  

因此设备字符串的格式是hw:<card>,<device>

设备 ID 的格式

答案2

我遇到了同样的问题并找到了另一种解决方案这里. 主要思想是使用pacat对我来说它的工作方式如下:

  1. 查找监控设备:

    $ pacmd list | grep "\.monitor"
    name: <alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor>
    name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
            alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor/#0: Monitor of HDA NVidia Digital Stereo (HDMI)
            alsa_output.pci-0000_00_1b.0.analog-stereo.monitor/#2: Monitor of Built-in Audio Analog Stereo```
    
    
  2. 捕获音频到文件:

    $ pacat --record -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor > dump.raw

  3. 将文件转换为 WAV:

    $ sox -t raw -r 44100 -e signed-integer -L -b 16 -c 2 dump.raw output.wav

就是这样!

答案3

我建议使用 ALSA 环回驱动程序。要加载它:

sudo modprobe snd-aloop

这应该会在 的输出中添加一个新的捕获设备arecord -L

.asoundrc如果您的计算机中只有一块物理声卡,则可以在主文件夹中创建包含以下内容的文件,将环回声卡设为所有应用程序的默认声卡:

pcm.!default {
    type hw
    card 1
    device 0
}

当此文件存在时,所有应用程序的任何声音输出都应转到环回适配器,而不是实际的扬声器。只需在 arecord 命令中指定正确的设备,完成后,删除该.asoundrc文件即可恢复正常。

答案4

  1. 转到 PulseAudio 音量控制 -> 输入设备选项卡。在底部,选择显示“所有输入设备”。检查“内部音频模拟立体声监视器”是否未静音,以及播放音频时音量是否上下移动!!

  2. 使用录音机录制音频源 = 内部音频模拟立体声(音频输入)。见下面的截图。

在此处输入图片描述

相关内容