AES67 is a standard for audio over IP developed by the Audio Engineering Society. It enables interoperability between existing standards such as Dante, RAVENNA, Q-Lan and Livewire.
Information about AES67
So how does AES67 actually work? The AES67 Wikipedia page and the AES67 draft from 2017 are a good point to get an overview:
In summary AES67 consists of three major, already existing standards. The first is Precision Time Protocol (PTP) as defined by IEEE 1588-2008 (Precision Time Protocol on Wikipedia) for clock synchronization. The second is the Real-time Transport Protocol (Wikipedia) with 24-bit PCM as the default audio format transmitted via multicast. The third is the Session Description Protocol with Session Announcement Protocol as the transport protocol for session discovery. I suggest to take a look at the standards (sadly IEEE 1588-2008 is behind a paywall) if you want to know how they work, as I won’t be explaining any details here.
Implementations of the standards
As the mentioned important standards for AES67 already exists longer than AES67 itself. We do not necessarily need to implement them, as there are already good working implementations out there.
RTP
- GStreamer (also implements PTP and SDP): Open source multimedia framework
- rtptools: “set of small applications that can be used for processing RTP data”
PTPv2
- linuxptp: Implementation of the Precision Time Protocol (PTPv2) for Linux
- ptpd/ptpd: Precision Time Protocol daemon
- philhartung/node-ptpv2: Javascript implementation of PTPv2
SAP/SDP
- clux/sdp-transform: SDP Encoder/Decoder implemented in Javascript
- pixelbender/go-sdp: SDP Encoder/Decoder implemented in Go
Open source software
Even though AES67 has been around for 6 years, there is not a lot of open source software for AES67 out there. Open source projects that are related to AES67 which I find most interesting are (in no particular order):
- voc/aes67-recorder: AES67 multitrack recording software developed by the CCC VOC
- bondagit/aes67-linux-daemon: Alsa virtual soundcard based on the Merging AES67 Alsa driver
- markmcconnell/mai: JACK AES67 virtual soundcard
- njh/mast: Multicast Audio Streaming Toolkit compatible with AES67
- martim01/pam: “Open Source Audio Monitoring Software designed for (but not limited to) a Raspberry Pi with touchscreen.” Supports AES67 based streams.
- ebu/pi-list: Tool to analyse packet captures for SMPTE 2110 compliance.
- GStreamer: Multimedia framework that implements RTP and PTP, and is thus able to receive and generate AES67 compliant RTP streams. The before mentioned aes67-recorder is based on GStreamer. To see how to use GStreamer with AES67 you can take a look at the following examples: AES67 to Icecast relay, listen to AES67 stream, relay AES67 to a different subnet or sync GStreamer to PTP master.
- NeilBetham/livewire-streamer: Livewire to Icecast gateway, this will also work with AES67
- PADL/OpenAvnu: Work in Progess AVB to AES67 Bridge
- “convert” a Dante multicast stream to AES67 This is a proof of concept. Might still be interesting for people, who want to use Dante VSC or Dante Via (which do not support AES67) with AES67 receivers.
- nicolassturmel/aes67-web-monitor (still in early development): Service that allows you to monitor AES67 streams in your browser.
- philhartung/aes67-sender: Make a soundcard input available in an AES67 or Dante network.
- AES67 Stream Monitor: Cross plattform AES67 monitoring app
- philhartung/aes67-visualization: Command line tool to launch ffmpeg audio visualizations from AES67 sdp files
Closed source software
- Lawo VSC (Windows) AES67 virtual soundcard
- Lawo Stream Monitor (Windows) AES67 stream monitoring tool
- Merging AES67 ALSA Driver (Linux, free and partially open source) AES67 Alsa virtual soundcard
- Merging MacOS VSC (MacOS, free) AES67 virtual soundcard
- Livewire+ VSC (Windows) Livewire+ virtual soundcard, compatible with AES67
- Ravenna VSC (Windows, free) Ravenna virtual soundcard, compatible with AES67
- RAV2SAP (Windows, free) “Session announcement translation between RAVENNA and SAP-based systems”
- PTP Track Hound (MacOS, Linux, Windows, free) PTP network traffic analysis tool
- Aneman (MacOS, Windows, free) Cross platform and cross vendor AoIP connection manager
- AES67 Test Tone (MacOS, free) AES67 test tone app, does not implement PTP
Discussion, talks, articles and other resources
- Audio over IP Google mailing list: A place for users and software developers to discuss Audio over IP topics
- How we used AES67 at 35C3: Short talk about how AES67 was used on the 35c3. Slides of the talk can be found here and an article (in german) documenting the same in a bit more detail can be found here
- AES70 resources: AES70 or Open Control Architecture (Wikipedia) is a standard, to manage, control and monitor AoIP devices. The standard consists of three parts (Part 1: Framework, Part 2: Class structure, Part 3: Protocol for TCP/IP Networks).
- Connecting Dante devices to AES67: This article is for Yamaha devices, but the information also applies other Dante devices, that support AES67
- Receiving AES67 audio on the command line: Interesting article about receiving AES67 streams with rtpdump and SoX
- Three Tips for Setting Up and Managing a Standard and AES67 Network
- PTPv2 Timing protocol in AV networks: In-depth article about the Precision Time Protocol version 2
- AES67 Open Source wishlist: If you want to get started in open source AES67 software development, this is a good list to look at what is still needed/wanted in open source AES67 software
If you have further suggestions of software or resources that are missing on this list, feel free to contact me on Twitter.