树莓派实时音频采集并实时传输至ubuntu

前言

想通过usb音频采集卡连接树莓派后实时采集音频,并通过音频流的方式将采集到的音频实时传输到另外一台电脑。

什么是树莓派?

树莓派是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100 以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。
树莓派实时音频采集并实时传输至ubuntu_第1张图片

步骤

1、给树莓派安装好系统(Raspbian),安装步骤请见博客:
[折腾向]树莓派3B+安装系统(Raspbian)以及配置环境 - 大盈若冲,其用无穷。 - CSDN博客
2、将usb音频采集卡插到树莓派的usb口上,此处用的usb音频采集卡如下图,并将需要采集的音频连接至采集卡;树莓派实时音频采集并实时传输至ubuntu_第2张图片
3、使用putty等ssh工具远程连接到树莓派;
树莓派实时音频采集并实时传输至ubuntu_第3张图片
4、在终端输入lsusb查看usb设备,下图中的Device 006即为插上的usb音频采集卡;
树莓派实时音频采集并实时传输至ubuntu_第4张图片
5、因为系统Raspbian默认安装有alsa-utils,所以直接可以输入aplay -l来查看当前的播放设备,输入arecord -l来查看当前的音频采集卡设备;如果命令不能执行,请执行sudo apt-get install alsa-utils安装alsa-utils;
树莓派实时音频采集并实时传输至ubuntu_第5张图片
树莓派实时音频采集并实时传输至ubuntu_第6张图片
5、输入nc -h看一下系统中是否已安装netcat,如果未安装,通过sudo apt-get install netcat进行安装;
树莓派实时音频采集并实时传输至ubuntu_第7张图片

测试场景:

树莓派IP:192.168.10.109
ubuntu客户端:192.168.10.122

本地采集音频测试

  • 在树莓派端执行以下命令,让树莓派实时采集音频后并在本地播放,插上耳机即可听到采集到的实时音频。
arecord -D plughw:1,0 -t wav -f cd -r 8000 | aplay

调节音量大小: 结束当前命令后输入命令:alsamixer ,然后就会出现字符形式的图形界面,使用四个方向键就可以进行调节。

方式1(延迟高):

树莓派实时采集音频后将音频流通过netcat实时发布到8888端口,等待客户端连接,该方式延迟高,局域网环境下大概4秒延迟,并且客户端连接一次断开后树莓派端也会关闭该连接,导致树莓派端需要重新开启音频采集和发布音频。

  • 在树莓派端执行以下命令,让树莓派实时采集音频后将音频流实时发布到8888端口;
arecord -D plughw:1,0 -t wav -f cd -r 8000 | nc -l 8888

在这里插入图片描述

  • 在ubuntu客户端执行以下命令,通过netcat连接到树莓派的8888端口,获取音频流并播放,命令中“192.168.10.122”为树莓派的IP地址;
nc 192.168.10.122 8888 | aplay

树莓派实时音频采集并实时传输至ubuntu_第8张图片

方式2(延迟低):

ubuntu客户端实时监听自己的8888端口,然后树莓派向ubuntu客户端的8888端口推送自己实时采集到的音频。但是连接一次断开后树莓派端和ubuntu客户端都也都会关闭该连接,导致树莓派端和ubuntu客户端需要重新运行命令进行连接。

  • 在ubuntu客户端执行以下命令设置netcat监听8888端口并播放;
nc -l -p 8888 | aplay

树莓派实时音频采集并实时传输至ubuntu_第9张图片

  • 在树莓派端设置netcat推送自己实时采集到的音频;
arecord -D plughw:1,0 -t wav -f cd -r 8000 | nc 192.168.10.122 8888

在这里插入图片描述

参考资料

1、Raspberry Pi-音频直播测试,在两个树莓派(或香蕉派)之间-爱板网论坛 - 电子工程师学习交流园地
2、树莓派(为学习计算机编程教育设计的一种微型电脑)_百度百科

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