我正在尝试捕获声卡输出并使用以下命令将其编码为 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>
答案2
我遇到了同样的问题并找到了另一种解决方案这里. 主要思想是使用pacat
对我来说它的工作方式如下:
查找监控设备:
$ 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```
捕获音频到文件:
$ pacat --record -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor > dump.raw
将文件转换为 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
转到 PulseAudio 音量控制 -> 输入设备选项卡。在底部,选择显示“所有输入设备”。检查“内部音频模拟立体声监视器”是否未静音,以及播放音频时音量是否上下移动!!
使用录音机录制音频源 = 内部音频模拟立体声(音频输入)。见下面的截图。