*

Receiving an AES67 stream with GStreamer

Olivier Crête avatar

Posted on 25/04/2017 by Olivier Crête

Share this post:

GStreamer is great for all kinds of multimedia applications, but did you know it could also be used to create studio grade professional audio applications? For example, with GStreamer you can easily receive a AES67 stream, the standard which allows inter-operability between different IP based audio networking systems and transfers of live audio between profesionnal grade systems.

Figure 1. AES67 at the NAB Show in Las Vegas, April 22-27.


Receiving an AES67 stream requires two main components, the first being the reception of the media itself. AES67 is simple because it's just a stream of RTP packets containing uncompressed PCM data. In other words, this means it can be received with a simple pipeline, such as "udpsrc ! rtpjitterbuffer latency=5 ! rtpL24depay ! ...". There isn't much more needed, as this pipeline will receive the stream and introduce 5ms of latency, which, as long as the network is uncongested, should already sound great.

The second component is the clock synchronization, one of the important things in Pro Audio. The goal of this component is for the sender and the receiver of the audio to use the same clock so that there aren't any glitches introduced by a clock running to fast or too slow. The standard used for this is called the Precise Time Protocol version 2 (PTP), defined by the IEEE 1588-2008 standard. While there are a number of free implementations that can be used as master or slave PTP clocks, GStreamer provides the GstPTPClock class that can act as a slave that can synchronize itself from a PTP clock master on the network.

The AES67 standard also defines a SDP based format to describe all of these elements in a concise format. What it does not describe however, is how to transfer this file from the sender of the audio to the receiver, which is left to an application specific system. Assuming that we can just download the file, there is another very useful GStreamer element that can help us, called "sdpdemux". This is not really a demultiplexer like mp4demux or oggdemux, it is instead an element that reads a SDP file and then creates the appropriate sources based on the information it contains. Basically, this means if the sdp file if downloaded, it can be "played" like any other media file with "gst-play-1.0 file.sdp".

GStreamer is a powerful multimedia framework that can be easily used to create powerful profesionnal multimedia applications. Whether its audio/video playback, capture, editing, transcoding, calling or streaming, Collabora has been working on GStreamer for over a decade and is uniquely positioned to provide the expertise you need to create your A/V device. Let's talk and see how we can help!

Comments (6)

  1. Gordon Luk:
    Apr 27, 2017 at 07:44 AM

    Like AES67 topic very much. Please write more detail steps/commands on play AES67 streaming. Thanks.

    Reply to this comment

    Reply to this comment

    1. radiorob :
      Mar 13, 2018 at 06:35 AM

      For AES67 to work with gstreamer, there needs to be a SIP component. Is there any updates on having a SIP solution with gstreamer?

      Reply to this comment

      Reply to this comment

      1. Olivier Crête:
        Mar 13, 2018 at 04:01 PM

        SIP is a pretty awful protocol, so all implementations are pretty nasty and we generally declared it to be outside the scope of GStreamer. So normally what you would do is use an existing SIP stack such as pjsip or sofiasip and then do the media streaming with GStreamer. That said, I'm not sure exactly how AES67 does that as the spec is not publicly available which makes Open Source implementations difficult. Or you can just download the SDP over HTTP like Ravenna does.

        Reply to this comment

        Reply to this comment

        1. EGF TECH MAN:
          Sep 27, 2018 at 10:12 PM

          SIP is not awful protocol, it is an extensible messaging protocol...Yes I would recommend integrating something like PJSIP if you don't want to write your own SIP stack (in fact Asterisk is dumping their chan_sip in favor of pjsip in current and future releases), in the context of AES67, it is a universal method of exchanging SDPs and managing a unicast connection. See slide 27 of https://archive.fosdem.org/2017/schedule/event/om_aes67/attachments/slides/1399/export/events/attachments/om_aes67/slides/1399/AES67_Slides.pdf

          Reply to this comment

          Reply to this comment

          1. Olivier Crête:
            Oct 01, 2018 at 07:32 PM

            I'm actually working with PJSIP as we speak, it's kind of ok, but when you look deeper into it, the nastier bits of SIP quickly come into view. And I have the same experience with other SIP libraries. They always seem to abstract too little (sofia-sia expects the application developer to be familiar with all of the SIP status codes), or too much (PJSIP hardcodes RFC 2833 telephone-event as an example).

            Having DNS-SD/mDNS sounds much saner for multicast type applications.

            Reply to this comment

            Reply to this comment

        2. EGF TECH MAN:
          Sep 28, 2018 at 04:17 PM

          AES70 specifies using mDNS and DNS-SD (combination also known as Bonjour ) to advertise SDP, among other control and monitoring - but AES67 specifies no method (other than SIP for unicast) for advertising SDPs and each vendor has their own solutions making it not the holy grail of interoperability that it is promised to be

          Reply to this comment

          Reply to this comment


Add a Comment






Allowed tags: <b><i><br>Add a new comment:


Latest Blog Posts

Quick hack: Speed up your GitLab CI

06/11/2018

Did you know you could register your own PC, or a spare laptop collecting dust in a drawer, to get instant CI going on GitLab? Not only…

Introducing Zink, an OpenGL implementation on top of Vulkan

31/10/2018

For the last month or so, I've been playing with a new project during my work at Collabora, and as I've already briefly talked about at…

On the low adoption of automated testing in FOSS

18/10/2018

For projects of any value and significance, having a comprehensive automated test suite is nowadays considered a standard software engineering…

Recently in Geoclue

12/10/2018

After I started working for Collabora in April, I've finally been able to put some time on maintenance and development of Geoclue again.…

The beauty of Open Source

10/10/2018

Like all software, Open Source software isn't without it's bugs and issues. However, thanks to the nature of Open Source, resolving or mitigating…

MicroDebConf Brasilia

02/10/2018

Last month, the first "MicroDebConf" took place at the Gama campus of the University of Brasilia. Here's a look at how this one day event…

Open Since 2005 logo

We use cookies on this website to ensure that you get the best experience. By continuing to use this website you are consenting to the use of these cookies. To find out more please follow this link.

Collabora Ltd © 2005-2018. All rights reserved. Website sitemap.