Answers:
是。
其实有很多方法。您可以设置一个声音虚拟声卡设备,您可以将数据从该设备中提取出来……但这不是一种非常有用的格式。
对您而言更有用的是类似于该arecord
实用程序的工具,它使您可以窃听alsa输出流并将其保存为几种已知格式。基本上,您可以在alsa声音系统上播放的所有内容都可以复制到标准格式的声音文件中。
如果您的系统或仅您想要记录的应用程序将其输出定向到声音服务器,请考虑对该声音服务器进行记录的可能性。例如,在Ubuntu上,官方的声音服务器是PulseAudio,它是parec
命令附带的(来自pulseaudio-utils
软件包 install pulseaudio-utils http://bit.ly/software-small)。您可能需要将输出从SoX转换parec
成可用的东西(Ubuntu:安装sox http://bit.ly/software-small)。sox
parec -r --rate=44100 | sox --type raw --rate 44100 - --type ogg recording.ogg
它被认为是可能直接到Audacity的记录,但我无法得到那个工作我的系统(Ubuntu的10.10)上。因此,按照Audacity Wiki 此处的说明,我使用ALSA
播放设备将音频转移到文件中。
这使用一个.asoundrc
文件(在您的主目录中):
pcm.teeraw {
type empty
slave.pcm "tee:default,'/tmp/out.raw',raw"
# 48000 S16_LE 2ch (aplay -t raw -f dat)
}
对于从Flash录制(在Firefox上),我使用
FLASH_ALSA_DEVICE=teeraw firefox
生成的文件/tmp/out.raw
为原始格式,因此转换文件时需要知道正确的参数。奇怪的是,lame
似乎能够自己解决此问题,但sox
需要明确了解它。因此,以下所有方法似乎都有效:
aplay -t raw -f dat -r 44100 /tmp/out.raw # to play
sox -r 44100 -b 16 -e signed -c 2 /tmp/out.raw /tmp/out.wav # to convert to wav
lame /tmp/out.raw # to convert to mp3
ALSA树中有一个回送驱动程序aloop-kernel.c(通过此处);您必须自己构建(并通过aplay
/之类的音频应用程序弄清其作为一台设备的利用率arecord
)...