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/.
ISO/IEC 13818-1 (H.222.0) Information technology - Generic coding of moving pictures and associated audio information: Systems
This describes:
which form the transport layers for the following standards.
ISO/IEC 13818-2 (H.262) Information technology - Generic coding of moving pictures and associated audio information: Video
This defines MPEG-2.
ISO/IEC 14496-10 (H.264)
This defines MPEG-4/AVC.
| 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. |
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.
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.
There are four mailing lists associated with the project:
You can join or browse them at http://developer.berlios.de/mail/?group_id=9575.
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.