- 一共兩個設備(樹莓派或香蕉派)。一個設備作錄音端,一個設備作播放端,經過網絡的方式創建鏈接。
- 網絡鏈接採用netcat的方式在錄音端創建監聽(arecord -D 'xxx(錄音設備名)' |nc -l 8888),在播放端鏈接上監聽後播放(nc xxx.xxx.xxx(ip地址) xxxx(端口) | aplay)。
- 爲了簡化手工輸入命令,用python來實如今一個設備來控制另一個設備自動錄音、播放。
在終端中輸入:python
sudo apt-get install alsa-utils
安裝完成後輸入aplay -l
來查看當前的聲卡設備,輸入arecord -l
來查看當前的錄音設備。nginx
sudo modprobe snd-bcm2835 #把聲音模塊加入內核
arecord -l
中看到的是plughw:1,0
其餘參數自行查用法) arecord -D plughw:1,0 -t wav -f cd -r 8000 ./test.wav
在當前目錄錄音生成test.wavaplay ./test.wav
arecord -D plughw:1,0 -t wav -f cd -r 8000 | aplay
獲得指望的結果爲錄音和播放正常。輸入nc -h
看一下系統中是否已安裝netcat,若是未安裝,經過sudo apt-get install netcat
進行安裝。docker
這裏兩臺設備的ip分別爲:bash
- A設備:192.168.199.101
- B設備:192.168.199.102
arecord -D plughw:1,0 -t wav -f cd -r 8000 | nc -l 8888
nc 192.168.199.102 8888 | aplay
獲得指望的結果爲在B設備能聽到A設備的錄音。只在一個設備裏控制另外一個設備進行錄音或者播放。
這裏用python的paramiko庫來實現這個測試。網絡
sudo apt-get install build-essential libssl-dev libffi-dev python-dev sudo easy_install pip
sudo pip install paramiko
- 實現A設備控制B設備錄音,並在A設備中播放 (測試成功):
#!/bin/python # -*- coding: utf-8 -*- import paramiko #B端的IP ip='192.168.199.102' port = 22 username = '用戶名' password = '密碼' #B端 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip, port,username, password) cmd='arecord -t wav -f cd -r 8000 | nc -l 8888' stdin, stdout, stderr = ssh.exec_command(cmd) #A端 os.system('nc 192.168.1.102 8888|aplay') ssh.close()
- 實現A設備控制 B設備錄音,並在A設備中播放,同時A設備錄音在B設備中播放。(手頭的設備有一個沒有mic未實際測試):
#!/bin/python # -*- coding: utf-8 -*- import paramiko #B端的IP ip='192.168.1.102' port = 22 username = '用戶名' password = '密碼' #B端 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip, port,username, password) cmd='arecord -t wav -f cd -r 8000 | nc -l 8888' stdin, stdout, stderr = ssh.exec_command(cmd) #A端 os.system('nc 192.168.1.102 8888|aplay') #A端 os.system('arecord -t wav -f cd -r 8000 | nc -l 9999') #B端 cmd='nc 192.168.1.101 9999 |aplay' stdin, stdout, stderr = ssh.exec_command(cmd) ssh.close()
arecord -f cd -D "plughw:1" -d 10 | ssh yanisyu@192.168.1.102 aplay -f cd
理論上這種方式也可行ssh