littlebot
Published on 2025-04-14 / 1 Visits
0

【源码】基于C语言和Linux框架的RAVENNAAES67音频驱动系统

项目简介

本项目是基于C语言和Linux框架开发的RAVENNA/AES67音频驱动系统,能在Linux环境下实现RAVENNA/AES67音频协议的音频输入与输出功能。借助ALSA音频驱动程序,支持DSD音频格式,还实现了进程间通信与网络数据包处理。

项目的主要特性和功能

  1. 丰富的ALSA特性:支持1FS到8FS,PCM最高达384kHz,原生支持DSD(64/128/256)播放(不支持DOP),支持16/24/32位整数格式(捕获模式下非交错格式不可用),最多64个I/O(无Merging设备的公共版本限8个),具备音量控制功能。
  2. RAVENNA/AES67协议实现:完整实现RAVENNA/AES67协议,包括mDNS、SAP、NMOS IS - 04/05的发现、注册与管理,实现音频流的传输和同步。
  3. 高效的进程通信:通过IPC实现不同进程间的通信,支持命令和响应的收发。
  4. 数据包处理:处理RTP音频包和PTP数据包。
  5. 音频流管理:负责音频流的创建、销毁、发送和接收。
  6. 时钟同步:基于PTP的时钟同步机制确保音频流同步。
  7. Web服务:具备Web服务器,提供CometD / HTTP REST API前端和远程音量控制功能。

安装使用步骤

环境准备

  1. 内核:GCC版本 >= 4.9,Linux内核 > 2.4(DSD支持需3.18),安装目标的Linux内核头文件,内核配置开启NETFILTER、HIGH_RES_TIMERS、NETLINK等选项。为实现实时环境的最优性能,编译内核时可考虑修改CONFIG_HZ = 1000。
  2. ALSA:ALSA库版本 >= 1.0.29(支持DSD),系统运行Zeroconf发现服务(公共版本仅支持Avahi)。

编译安装驱动

  1. 拉取并编译驱动: git clone https://bitbucket.org/MergingTechnologies/ravenna-alsa-lkm.git cd ravenna-alsa-lkm/driver make
  2. 安装驱动(重启后仍生效): sudo su cp MergingRavennaALSA.ko /lib/modules/$(uname -r)/kernel/drivers depmod
  3. 插入驱动: sudo insmod MergingRavennaALSA.ko

运行Butler

  1. 运行条件(公共版本):安装Avahi库,处理器架构为amd64(x86_64),经Ubuntu 16.04测试,GLIBC >= 2.17。
  2. 启动Butlercd 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】