This is a collection of tools and utilities pulled from various places for use when preparing multimedia content for broadcast and streaming it over IP networks.
The suite aims to cover, primarily:
- MPEG-2 Transport Stream creation and introspection
- Tools for testing and simulating DVB broadcasts
- MPEG-4 container manipulation (MPEG-4 Part 14; ISO/IEC 14496-14:2003)
- SDP, RTSP and RTP testing tools
- MHEG-5 authoring and testing (specifically the UK DVB profile to begin with)
- Dirac video encoding, decoding and packetisation
- Ogg Vorbis audio encoding, decoding and packetisation
- Utilities to manipulate individual pre-rendered frames of video
If the BBC's Project Canvas achieves trust approval, it will be a further aim of this project that the tools provided will interoperate well with a Project Canvas workflow. Once the Project Canvas specifications have been completed and released, work will commence on ensuring that these tools are suitably aligned with them.
Most of the tools are licensed under the GNU General Public License, version 2. Darwin Streaming Server is licensed under the APSL, version 2.
It should be noted that there are few, if any, interdependencies between the tools included; each of the top-level 'sub-project' directories within the build tree is typically a separate project in its own right.
Sources are taken from:
You will need a copy of pkg-config installed. Most Unix-like operating systems ship with a copy or have a package available. If you need to build from source, the latest version can be downloaded from http://pkgconfig.freedesktop.org/releases/
You should install at least the following before building txsuite. If you're building from source, you may find it helpful to build and install everything into a common prefix (e.g., /opt/txsuite):
If you don't have pkg-config installed on your system, you will also need to install it. Almost every Linux distribution includes it out of the box, but other platforms do not.
libSDL can be built in-tree if required. Download the latest version of the
libSDL sources (1.2.14 at the time of writing) and extract the tarball. Rename
the versioned directory (e.g., SDL-1.2.14
) to simply SDL
.
Building SDL in-tree requires a minor patch to the build logic, so you will
need to run buildtools/autogen
after putting it in place. Note
that running autogen
re-creates the configure scripts and Makefiles
and so requires that you have automake, autoconf and libtool installed properly. For
most people, just installing an SDL developer package is easier.
When building x264 (built by default if ffmpeg is), you will need to either
have yasm (yasm-0.6.2 or later) installed, or configure with --disable-asm
.
The latter obviously incurs some significant runtime performance penalties.
To build mhegc, you will need to install GNU bison and GNU flex.
To build OpenCaster, you will need to install Python 2.4's development package (assuming you don't have it already). Note that only Python 2.4 is acceptable; Python 2.3 and 2.5 are not acceptable alternatives (most operating systems ship with or allow you to install Python 2.4 alongside other versions if needed).
To build Darwin Streaming Server, you will need to configure with --enable-dss
.
dvbloop provides a loopback (virtual) DVB adapter device on Linux-based systems. DVB receiver applications (such as those provided by the LinuxTV project) can open this device as though it were a real DVB adapter; data written to the device is then looped back to those applications, allowing simulation in software of DVB transport streams (useful when testing on hosts which do not have DVB hardware, or on virtual machines).
mhegenc is an MHEG-5 script encoder and decoder originally created by Samsung, and now maintained by SpongeLava. It accepts files containing MHEG-5 textual notation and produces ASN.1 DER output ready for transmission. In decoding mode, the reverse operation is performed.
The RedButton suite contains tools for compiling and decompiling, capturing and viewing MHEG-5 interactive applications. The tools can be used with DVB hardware, with the dvbloop device, or with files loaded from disk. rb-browser requires X11, libpng, FFmpeg and the ALSA audio system.
OpenCaster is a set of tools for manipulating and broadcasting MPEG-2 Transport Streams, as well as utilities for converting MPEG Elementary Streams to MPEG Packetized Elementary Streams, and vice versa. It includes tools to generate dummy streams, remap PIDs, and dump information about streams.
Darwin Streaming Server is the open source version of Apple's QuickTime Streaming Server (QTSS), a high-performance RTSP/RTP media server supporting both unicast and multicast broadcasts from sources in various formats.
MPEG4IP is a reference implementation of the MPEG 4 standard, along with a number of other useful utilities. Tools are included to encode, stream and play back media, as well as manipulate MPEG 4 containers.
Schroedinger is a fast reference implementation of the BBC’s Dirac video codec.
png2rgb is a small utility to process a sequence of one or more PNG images into a single raw 24-bit RGB file. The resulting .rgb file can be passed to the rgb2yuv utility included with MPEG4IP in order to generate a raw YUV 4:2:0-format frame sequence suitable for feeding into an encoder.