在Linux系统上也需要录制程序的播放声音, windows有相应的接口直接调用, linux可以使用aloop driver, 下面是具体操作过程:
1. 首先检查是否系统已经有loopback soundcard音频设备, 可以使用:"aplay -l", 我的机器执行如下:
2.可以看到我的机器没有相应的loopback设备,需要手动加载"aloop"模块到内核, 执行:"sudo modprobe snd-aloop", 然后再查看:"aplay -l":
3.现在已经有了loopback 设备,声卡index是1, 声卡id是Loopback0. 这个声卡下有两个设备,也可以:"cd /proc/asound/" 查看是否有新增Loopback设备.
下一步就是编辑文件:~/.asoundrc
增加一行:
pcm.!default { type plug slave.pcm "hw:Loopback0,0,0" }
或者:
pcm.!default { type plug slave.pcm "1,0,0" }
4. 配置好以后,如果是你自己的写的播放器,调用snd_pcm_open 时名字可以继续传入:"default", 或者"hw:1,0,0". 如果时第三方播放器那就不管. 启动播放声音.
5.启动录像:"arecord -D hw:1,1,0 recordtest.wav". 或者: "arecord -D plug:hw:1,1,0 recordtest.wav".
6.使用“sudo modprobe snd-aloop”命令增加的Loopback设备重启系统后就没了, 有好几种方式可以配置。可以在 /etc/modules 文件中增加一行:"snd-aloop". 另外你可能还想配置下Loopback设备参数,
这个只要在/etc/modprobe.d目录中增加一个.conf文件,文件名随意, 添加一行配置参数,比如:"options snd-aloop index=1 enable=1 pcm_substreams=8 id=Loopback0", 具体都有那些参数可以配置,如何配置参数,看下图:
更多资料可以参考:https://www.alsa-project.org/wiki/Matrix:Module-aloop, 有问题问题可以联系qq: 1130758427, qq群: 182979815 294891451. github