trx: Realtime audio over IP

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:

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:

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; for information.


Mark Hills
March 2014