LIVE555 Streaming Media

This code forms a set of C++ libraries for multimedia streaming, using open standard protocols (RTP/RTCP, RTSP, SIP). These libraries - which can be compiled for Unix (including Linux and Mac OS X), QNX (and other POSIX-compliant systems) - can be used to build streaming applications. The libraries are already being used to implement applications such as the "LIVE555 Media Server", "LIVE555 Proxy Server", and "LIVE555 HLS Proxy" and "vobStreamer" (for streaming DVD content using RTP/RTCP/RTSP). The libraries can also be used to stream, receive, and process MPEG, H.265, H.264, H.263+, DV or JPEG video, and several audio codecs. They can easily be extended to support additional (audio and/or video) codecs, and can also be used to build basic RTSP or SIP clients and servers, and have been used to add streaming support to existing media player applications, such as "VLC" and "MPlayer". (For some specific examples of how these libraries can be used, see the test programs below.)

Source code

The project source code is available - as a ".tar.gz" file - here. See below for instructions on how to build it.
(Note: To use this software, you must be aware of how it is licensed, and your obligations under this license.)

Mailing list

There is a developers' mailing list: "live-devel@lists.live555.com". Users (or prospective users) of the libraries are encouraged to join this (low-volume) mailing list, and/or to review the mailing list's archives. (You can also search these archives using Google, by adding "site:lists.live555.com" to your search query.) Before posting to the mailing list for the first time, please read the FAQ, to check if your question has already been answered.

Support

The primary means of support for these libraries is the "live-devel@lists.live555.com" mailing list described above. (Note that you must first
subscribe to the mailing list before you can post to it.)

Are you planning to implement RTP (and/or RTSP)? Instead of writing your own implementation from scratch, consider using these libraries. They have already been used in many real-world RTP-based applications, and are well-suited for use within embedded systems. The code includes an implementation of RTCP, and can easily be extended (via subclassing) to support new RTP payload types.

Help support improvements and extensions to the "LIVE555 Streaming Media" software: LIVE555 Funded Projects.

-----

  1. Description (including test programs)
  2. How to configure and build the code on Unix (including Linux, Mac OS X, QNX, and other Posix-compliant systems)
  3. How to configure and build the code on Windows
  4. Frequently Asked Questions (FAQ). (Please read this before posting questions to the mailing list.)
  5. Source code license
  6. To do...
  7. Some third-party applications

-----

Description

The code includes the following libraries, each with its own subdirectory:


UsageEnvironment

The "UsageEnvironment" and "TaskScheduler" classes are used for scheduling deferred events, for assigning handlers for asynchronous read events, and for outputting error/warning messages. Also, the "HashTable" class defines the interface to a generic hash table, used by the rest of the code.

These are all abstract base classes; they must be subclassed for use in an implementation. These subclasses can exploit the particular properties of the environment in which the program will run - e.g., its GUI and/or scripting environment.


groupsock

The classes in this library encapsulate network interfaces and sockets. In particular, the "Groupsock" class encapsulates a socket for sending (and/or receiving) multicast datagrams.


liveMedia

This library defines a class hierarchy - rooted in the "Medium" class - for a variety of streaming media types and codecs.


BasicUsageEnvironment

This library defines one concrete implementation (i.e., subclasses) of the "UsageEnvironment" classes, for use in simple, console applications. Read events and delayed operations are handled using a select() loop.


testProgs

This directory implements some simple programs that use "BasicUsageEnvironment" to demonstrate how to develop applications using these libraries.

RTSP client

RTSP server

SIP client

MP3 audio test programs

MPEG video test programs

MPEG audio+video (Program Stream) test programs

MPEG audio+video (Transport Stream) test programs

PCM audio test program

AMR audio test program

DV video test program

Matroska (or 'Webm') test programs

VOB (DVD) streaming test program

Support for server 'trick play' operations on MPEG Transport Stream files

HLS ("HTTP Live Streaming") test programs

Miscellaneous test programs


WindowsAudioInputDevice

This is an implementation of the "liveMedia" library's "AudioInputDevice" abstract class. This can be used by a Windows application to read PCM audio samples from an input device.

(This project builds two libraries: "libWindowsAudioInputDevice_mixer.lib", which uses Windows' built-in mixer, and "libWindowsAudioInputDevice_noMixer.lib", which doesn't.)

-----

How to configure and build the code on Unix (including Linux, Mac OS X, QNX, and other Posix-compliant systems)

The source code package can be found (as a ".tar.gz" file) here. Use "tar -x" and "gunzip" (or "tar -xz", if available) to extract the package; then cd to the "live" directory. Then run
    ./genMakefiles <os-platform>
where <os-platform> is your target platform - e.g., "linux" or "solaris" - defined by a "config.<os-platform>" file. This will generate a Makefile in the "live" directory and each subdirectory. Then run "make". If you wish, you can also 'install' the headers, libraries, and applications by running "make install".

-----

How to configure and build the code on Windows

The use of Windows is not recommended. However, if you insist on using Windows, you might be able to build the code in the "Cygwin" environment by doing:
  cd live
  ./genMakefiles cygwin
  make

-----

Frequently Asked Questions (FAQ)

(Please read this before posting questions to the mailing list.)

-----

Source code license

This code is "open source", and is released under the LGPL. This allows you to use these libraries (via linking) inside closed-source products. It also allows you to make closed-source binary extensions to these libraries - for instance, to support proprietary media codecs that subclass the existing "liveMedia" class hierarchy. Nonetheless, we hope that subclass extensions of these libraries will also be developed under the LGPL, and contributed for inclusion here. We encourage developers to contribute to the development and enhancement of these libraries.

-----

To do...

-----

Some third-party applications

Several third-party devices and applications have made use of the LIVE555 Streaming Media Software. Here is a list of some of them:

Hardware

Software

If you would like your product (or project) added to this list, please send email to the developers' mailing list.

-----

Live Networks, Inc. (LIVE555.COM)