tstools

MPEG TS, PS and ES tools

This is a set of cross-platform command line tools for working with MPEG data.

The emphasis is on relatively simple tools which concentrate on MPEG (H.264 and H.262) data packaged according to H.222 (i.e., TS or PS), with a particular interest in checking for conformance.

Transport Stream (TS) is typically used for distribution of cable and satellite data. Program Stream (PS) is typically used to store data on DVDs.

The tools are focussed on:

The main "project info" page for this project is http://developer.berlios.de/projects/tstools/.

Relevant International Standards

Individual tools

es2ts:Convert ES video (H.262, H.264 or AVS) to TS.
esdots:Present the content of an ES (H.262, H.264 or AVS) as a sequence of characters. This makes it plain, for instance, how I frames are distributed in the data.
esfilter:Output a filtered or truncated version of an ES. This can be used to generate a file of simulated "fast forward" ES video data.
esmerge:Merge audio and video ES into TS -- but only in a very limited manner, see the tools -help text.
esreport:Report on the contents of an ES file (by ES units, fields or frames).
esreverse:Output a filtered and reveresed version of an ES. This can be used to generate a file of simulated "Reverse" ES video data.
ps2es:This tool does not exist, but the same effect can be obtained with ts2es -pes.
ps2ts:Convert PS to TS (with various limitations).
psdots:Present the content of a PS file as a sequence of characters, representing its packets.
psreport:Report on the contents of a PS file.
stream_type:Make a (simple) educated guess as to what a file contains
ts2es:Extract a single ES stream from a TS file
tsinfo:Report program info for a TS file (summarise PAT/PMT info)
tsplay:Play (and possibly loop) a PS/TS file over UDP (using timing info) or TCP. Optionally distort the data being sent over UDP, for testing/diagnostic purposes.
tsreport:Report on the contents of a TS file
tsserve:Serve PS/TS files to clients (multicast) over TCP. This was originally developed for communicating with a very simple demonstration browser.

Getting the tools

The current source code can be obtained using Subversion, from http://developer.berlios.de/svn/?group_id=9575 (which contains instructions on how to do it).

Alternatively, the latest "release" can always be obtained from http://developer.berlios.de/project/showfiles.php?group_id=9575. This will not normally be any more stable than the current SVN code, but may be more convenient.

The source code should also build on BSD.

Building the tools

For Linux, Mac OS X and BSD, simply doing:

make

in the main source directory should build the tools (in the bin directory). On Mac OS X this will build "fat" files for PPC and i386.

make distclean will return to the distributed state.

For Windows, use the command line nmake tool (this is supplied with VisualStudio):

nmake -f Makefile.w32

The results will be placed in the directory w32\bin.

Mailing lists

There are four mailing lists associated with the project:

You can join or browse them at http://developer.berlios.de/mail/?group_id=9575.

Documentation

As always, there isn't enough documentation. However...

Each tool has a -help switch (and generally, running a command with no arguments will give the same result). --help and -h are synonyms for -help. The help text for each command provides short help on each switch available, and is the most up-to-date documentation for each tool.

In the source code, there is also a docs directory, containing overview documentation in reStructuredText.

HTML generated from these files is provided in the HTML archive for release 1.1, and should also be provided for further releases.

What is most needed is some documentation on how to use each tool, and why.


BerliOS Logo