项目简介
本项目是基于C语言和Linux框架开发的RAVENNA/AES67音频驱动系统,能在Linux环境下实现RAVENNA/AES67音频协议的音频输入与输出功能。借助ALSA音频驱动程序,支持DSD音频格式,还实现了进程间通信与网络数据包处理。
项目的主要特性和功能
- 丰富的ALSA特性:支持1FS到8FS,PCM最高达384kHz,原生支持DSD(64/128/256)播放(不支持DOP),支持16/24/32位整数格式(捕获模式下非交错格式不可用),最多64个I/O(无Merging设备的公共版本限8个),具备音量控制功能。
- RAVENNA/AES67协议实现:完整实现RAVENNA/AES67协议,包括mDNS、SAP、NMOS IS - 04/05的发现、注册与管理,实现音频流的传输和同步。
- 高效的进程通信:通过IPC实现不同进程间的通信,支持命令和响应的收发。
- 数据包处理:处理RTP音频包和PTP数据包。
- 音频流管理:负责音频流的创建、销毁、发送和接收。
- 时钟同步:基于PTP的时钟同步机制确保音频流同步。
- Web服务:具备Web服务器,提供CometD / HTTP REST API前端和远程音量控制功能。
安装使用步骤
环境准备
- 内核:GCC版本 >= 4.9,Linux内核 > 2.4(DSD支持需3.18),安装目标的Linux内核头文件,内核配置开启NETFILTER、HIGH_RES_TIMERS、NETLINK等选项。为实现实时环境的最优性能,编译内核时可考虑修改CONFIG_HZ = 1000。
- ALSA:ALSA库版本 >= 1.0.29(支持DSD),系统运行Zeroconf发现服务(公共版本仅支持Avahi)。
编译安装驱动
- 拉取并编译驱动:
git clone https://bitbucket.org/MergingTechnologies/ravenna-alsa-lkm.git cd ravenna-alsa-lkm/driver make
- 安装驱动(重启后仍生效):
sudo su cp MergingRavennaALSA.ko /lib/modules/$(uname -r)/kernel/drivers depmod
- 插入驱动:
sudo insmod MergingRavennaALSA.ko
运行Butler
- 运行条件(公共版本):安装Avahi库,处理器架构为amd64(x86_64),经Ubuntu 16.04测试,GLIBC >= 2.17。
- 启动Butler:
cd ravenna-alsa-lkm/Butler chmod u+x Merging_RAVENNA_Daemon ./Merging_RAVENNA_Daemon
使用 -d 选项以守护进程模式运行。
配置防火墙
确保以下端口开放: 1. Web服务器:配置文件中设置的端口(默认9090),TCP协议。 2. mDNS:5353,UDP协议。 3. AES67发现:9875,UDP协议。 4. PTP:319和320,UDP协议。
访问配置页面
Butler成功启动后,通过以下地址访问配置页面:<本地接口IP地址>:<配置文件中的端口号>(默认9090)。
测试音频
使用以下ALSA工具进行测试:
1. 播放左右声道白噪音:
speaker-test -D plughw:RAVENNA -r 48000 -c 2
2. 播放wav文件:
aplay -D hw:1,0 -t wav -r 48000 *.wav
3. 录制音频:
arecord -D hw:1,0 -f dat -d 1 -t wav filename.wav
4. ALSA循环:
alsaloop -P hw:1,0 -C hw:1,0 -r 48000 -f S16_LE -l 1 -S 0
注意:“hw:1,0”需根据安装的ALSA音频设备进行修改。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】