这个问题基本上从很久很久以前就时不时会遇到一下然而并没有哪个中文网页提到如何解决这个问题。。。基本上都是·如何使用话筒的解决方法。。。
简单来说就是把应用的音频输入分成两份一封丢声卡里一份丢loopback[虚拟声卡]里然后录制
modprobe snd-aloop pcm_substreams=1
创建loopback设备[需要root/sudo权限]
修改alsa配置文件[/etc/asound.conf或 ~/.asoundrc ]
https://trac.ffmpeg.org/wiki/Capture/ALSA#no1
参考这个页面最下面的那个配置文件[注意要把output修改成你自己能用的声卡名字]
然后就可以用ffmpeg -f alsa -ac 2 -ar 44100 -i loopout out.wav来录制系统声音啦
首先启用snd-aloop模块
sudo modprobe snd-aloop
或者加入系统启动, 编辑
sudo nano /etc/modules
添加如下内容
snd-aloop
然后在树莓派用户根目录修改.asoundrc (或者 /etc/asound.conf):
内容如下
# .asoundrc
pcm.multi {
type route;
slave.pcm {
type multi;
slaves.a.pcm "output";
slaves.b.pcm "loopin";
slaves.a.channels 2;
slaves.b.channels 2;
bindings.0.slave a;
bindings.0.channel 0;
bindings.1.slave a;
bindings.1.channel 1;
bindings.2.slave b;
bindings.2.channel 0;
bindings.3.slave b;
bindings.3.channel 1;
}
ttable.0.0 1;
ttable.1.1 1;
ttable.0.2 1;
ttable.1.3 1;
}
pcm.!default {
type plug
slave.pcm "multi"
}
pcm.output {
type hw
card 0 #
}
pcm.loopin {
type plug
slave.pcm "hw:Loopback,0,0"
}
pcm.loopout {
type plug
slave.pcm "hw:Loopback,1,0"
}