1. 程式人生 > >樹莓派使用ALSA內錄音頻, 錄取音效卡輸出的音訊

樹莓派使用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 #<Your Output Device Name> 
}

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