Skip to content

trx: Realtime audio over IP

Hampton edited this page Apr 25, 2016 · 2 revisions

trx is a simple toolset for broadcasting live audio from Linux. It sends and receives encoded audio over IP networks, via a soundcard or audio interface.

It can be used for point-to-point audio links or multicast, eg. private transmitter links or audio distribution. In contrast to traditional streaming, high quality wideband audio (such as music) can be sent with low-latency, typically as low as a few milliseconds, and incredibly fast recovery from dropouts.

Features include:

Very simple to set up Low latency with fast recovery from dropouts Full control over latency and buffers Supports IPv4 and IPv6, including multicast Unlike TCP streaming such as Icecast, trx uses RTP/UDP with handling of dropped packets and network congestion that is more appropriate to live or realtime audio. Much of this comes courtesy of the brilliant Opus audio codec. The result is an incredibly graceful handling of network loss or dropouts.

It is intended for use over closed or private IP networks. It can be used over the public internet, but you are warned that it has no built-in security or authentication of the received audio. If you do not already have a private network you may wish to use an appropriate tunnel or IPsec.

trx is based on the following software/libraries:

ALSA (Linux) Opus codec lib oRTP: packaged with most Linux distributions Examples

This list of examples is not comprehensive:

tx -h 192.168.0.32         # send audio from default soundcard to the given host
rx                         # receive audio and play it
tx -h 192.168.0.32 -b 32   # send audio as above, with a lower 32kbps data rate
tx -h 192.168.0.32 -m 128  # larger buffer for a non-professional soundcard
tx -h 192.168.0.32 -f 480  # smaller frames for decreased latency
rx -j 4                    # smaller jitter buffer for decreased latency
tx -h 239.0.0.1            # send audio over multicast
rx -h 239.0.0.1            # recieve audio from the above
tx -?                      # full list of transmitter parameters
rx -?                      # full list of receiver parameters

Each pair of commands feeds audio in one direction only, but multiple sets of tx/rx commands can be used. This means it's easy to use different parameters for eg. a low-quality talkback channel, or an additional monitoring channel.

Paul Evans has contributed some notes on how to play an application into trx.

Source code

The most recent release is trx 0.2 (14th March 2014)

There is a Git repository available:

$ git clone http://www.pogo.org.uk/~mark/trx.git This software is licensed under the GPLv2.

Author

I'm available to hire for work or support of trx, or other software projects for the radio, broadcast and media community; contact me for information.

Mark Hills mark@xwax.org March 2014

Clone this wiki locally