树莓派使用ALSA内录音频, 录取声卡输出的音频

使用ALSA Loopback方式内录音频,可以录取声卡输出的音频而不影响正在播放的音频。

参考链接:

https://www.raspberrypi.org/forums/viewtopic.php?p=695503#p695503

https://www.raspberrypi.org/forums/viewtopic.php?t=161657
http://trac.ffmpeg.org/wiki/Capture/ALSA

 

首先启用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"
}



重启系统

播放音频
aplay -fS16_LE -r16000 xxxx.pcm

录取输出音频
arecord -fS16_LE -r16000 -D "hw:Loopback,1,0" -c2 xxxx.pcm

你可能感兴趣的:(树莓派)