Linux Commands Examples

A great documentation place for Linux commands


demultiplex a program stream

see also : avifix - avimerge - avisplit - tcdecode - tcextract - tccat - tcscan - transcode



-i name [ -t magic ] [ -x codec ] [ -S unit,[s1-s2] ] [ -a ach,[vch] ] [ -s 0xnn ] [ -M mode ] [ -f fps ] [ -W ] [ -O ] [ -P name ] [ -A n[,m[,...]] ] [ -d verbosity ] [ -v ]

add an example, a script, a trick and tips

: email address (won't be displayed)
: name

Step 2

Thanks for this example ! - It will be moderated and published shortly.

Feel free to post other examples
Oops ! There is a tiny cockup. A damn 404 cockup. Please contact the loosy team who maintains and develops this wonderful site by clicking in the mighty feedback button on the side of the page. Say what happened. Thanks!



The command

tcprobe -i movie.vob -x mpeg2

extracts only MPEG video packets. Further processing, i.e., extracting the elementary video stream is done by tcextract.


tcdemux is part of and usually called by transcode.
However, it can also be used independently.
reads source (from stdin if not explicitely defined) and prints on the standard output.


-i name

Specify input source. If ommited, stdin is assumed.

-x codec

Process only packets containing given codec as payload. Examples are "mpeg2" for MPEG video or "ac3" for audio packets.

-t magic

Specify the input file type magic. Useful for using tcdemux in pipelines. This is normally autodetected.

-a ach[,vch]

Process only packets containing given audio track ach and video track vch. Most program stream feature multiple audio tracks but only a single video stream. Default is "-a 0,0".

-s 0xnn

Select specific multimedia track using the standard identifier 0xnn. This useful to extract subtitle packets.

-f fps

Specify the frame rate fps for subtitle meta information used by external applications.

-S unit[,s1-s2]

Select a program unit unit and a selected GOP range s1-s2 for processing. A unit is usually a set of GOPs that need to be synchronized at the very beginning. This option can be used to eleminate junk units at the beginning of the main presentation or to select certain episodes of a TV series from a DVD. A GOP is a logical unit to be properly decoded, i.e., decoding can only start at the beginning of a GOP.


Do not skip initial sequence. Used internally by transcode.

-A n[,m[,...]]

Select packets using an identifier for extracting only selected streams without processing. This is useful for size reduction of your multimedia stream. Example:

tcdemux -i big_dvd.vob -A 0xe0,0x81,0x20 > small_dvd.vob

extracts all packets for the video stream, AC3 audio track (1) and the first subtitle stream (0).

-M mode

Select synchronization strategy mode. This is how transcode selects the beginning of a video and audio stream to assure both streams are sychronized for further processing:

0 no synchronization. Packets are printed directly to stdout.

1 synchronization based on PTS information found in the packet header. Audio packets are delayed until a suitable starting point is found. Default for PAL videos.

2 NTSC adapted synchronization mode. Detailed information for each GOP contained in the video stream are piped to a stdout to be processed by the certain import modules. This enables adjusting the frame rate or inverse telecine, if necessary.

3 more advanced synchronization mode 1 with msec granular adjustment. Details delegated to transcode.

4 more advanced synchronization mode 2 with msec granular adjustment for NTSC materail. Details delegated to transcode.

5-7 undocumented debugging modes for internal use.

-P file

Write GOP meta information to file instead of tdout.


Print a navigation log file for a given video stream to stdout. This is used for transcode’s "psu mode" and "cluster mode".

-d level

With this option you can specify a bitmask to enable different levels of verbosity (if supported). You can combine several levels by adding the corresponding values:












Print version information and exit.


tcdemux is Copyright (C) by Thomas Oestreich.


tcdemux is a front end for de-multiplexing program streams and is used in transcode’s import modules.

see also

avifix , avimerge , avisplit , tcdecode , tcdemux, tcextract , tccat , tcscan , transcode


tcdemux was written by Thomas Oestreich
<ostreich[:at:]theorie.physik[:dot:]> with contributions from many others. See AUTHORS for details.

How can this site be more helpful to YOU ?

give  feedback