NAME¶
mpegdemux - MPEG1/2 system stream demultiplexer
SYNOPSIS¶
mpegdemux [options] [input [output]]
DESCRIPTION¶
mpegdemux(1) is an MPEG1/MPEG2 system stream demultiplexer. It can be
used to list the contents of an MPEG system stream and to extract elementary
streams.
mpegdemux(1) has four primary modes of operation:
- scan
- In this mode the MPEG system stream is scanned for
elementary streams.
- list
- In this mode the contents of an MPEG system stream are
listed in a textual form. This is useful to get an overview of what's in
an MPEG file
- demux
- In this mode elementary streams are extracted from an MPEG
system stream. The system stream packet structure is dissolved in the
process. Typically each extracted stream is written to its own file.
- remux
- This is like demux, except that the MPEG system stream
structure is left intact. This means that the output is again an MPEG
system stream with all but the selected elementary streams removed.
OPTIONS¶
- -a, --ac3
- AC3 sound packets in DVD MPEG2 streams have a 3 byte header
that is neither part of the MPEG specification nor of the AC3
specification. When this option is used, these 3 bytes are removed to
produce a correct AC3 stream. Note that this option applies to all
selected substreams without checking whether they actually contain an AC3
elementary stream.
- -b, --base-name name
- When demultiplexing more than one stream, the output file
names can be set using this option. To generate the output file name for a
stream, every # character in name is replaced by a hex digit of the
stream id. For example, to extract all video streams in one go, use
something like
$ mpegdemux -d -b video_##.m1v -s 0xc0-0xcf src.mpg
to get files video_c0.m1v, video_c1.m1v, ...
- -c --scan
- Scan a system stream for elementary streams. This is the
default mode. All streams and substreams are automatically selected when
using this option.
- -d, --demux
- Demultiplex an MPEG system stream. The demultiplexed
streams are written to the output file unless the --base-name
option is used. If the --base-name option is not used, only one
stream can be demultiplexed (if more streams are specified, they will be
randomly interleaved in the output file).
- -D, --no-drop
- Don't drop incomplete packets in demuxing and remuxing
mode.
- -e, --no-end
- Don't print end codes in listing mode. Additionally, in
remuxing mode, make sure that there is exactly one end code at the end of
the stream.
- -E, --empty-packs
- When streams are removed during remuxing, packs can become
empty. Including these empty packs in the output is pointless and
therefore is not done by default. Use this option to force inclusion of
all packs.
- -F, --first-pts
- In scan mode, in addition to each stream's first packet,
also list the packet with the lowest presentation time stamp.
- -h, --no-system-headers
- Don't print system headers in listing mode. Additionally,
in remuxing mode, don't repeat system headers.
- -i, --invalid spec
- Select invalid streams. Packets of invalid streams are not
recognized as packets and their contents are parsed as MPEG system stream
data rather than being skipped. This is useful for broken/incomplete
streams. The syntax for spec is the same as for -s.
Additionally, if spec is "-" then all streams that have
not yet been selected by -s are made invalid.
- -k, --no-packs
- Don't print packs in listing mode.
- -K, --remux-skipped
- Copy bytes that are skipped while looking for a start
code.
- -l, --list
- List the system headers, packs and packets in an MPEG
system stream.
- -m, --packet-max-size size
- Set the maximum packet size to size. Packets in the
input stream that are larger are considered invalid. As with the -i
option, the packet is not simply skipped but parsed as MPEG system stream
data.
- -p, --substream spec
- This option selects private substreams. Whenever Private
Stream 1 (0xbd) is selected using -s, the substreams within that
private stream can be selected using -p. The syntax for spec
is the same as for -s.
- -P, --substream-map id1 id2
- Remap substream id1 to id2 when
remuxing.
- -r, --remux
- Remultiplex an MPEG system stream. The output MPEG system
stream is written to the output file. Many options control what is copied
from the input to the output and what is discarded.
- -s, --streams spec
- This option selects streams. spec specifies the
stream IDs in the following form:
[+|-]<id>[-<id>]{/[+|-]<id>[-<id>]}
where id is either a numeric stream ID or one of all or none.
A "-" in front of an ID range means exclusion. For example the
spec
-s 0xc0-0xcf/-0xc2
selects all video streams (0xc0 - 0xcf) except stream 0xc2.
- -S, --stream-map id1 id2
- Remap stream id1 to id2 when remuxing.
- -t, --no-packets
- Don't print packets in listing mode.
- -u, --spu
- This option is used to extract DVD subtitles. It is
necessary because the subtitle streams on DVD don't contain all the timing
information (the time stamps in the packet headers are required). If this
option is used during demultiplexing, the output files for all substreams
are written in the following format:
"SPU " (4 bytes)
PTS (8 bytes, MSB first)
SPU packet
PTS (8 bytes)
SPU packet
and so on
- -x, --split
- Split the remuxed stream at sequence boundaries. This
option is only meaningful in remuxing mode. It can not be used together
with the -e option. The individual sequences are written to files
whose name was set with the -b option.
- --help
- Print usage information
- --version
- Print version information
EXAMPLES¶
Scan a system stream for elementary streams:
$ mpegdemux -c -v src.mpg
List the contents of an MPEG system stream:
$ mpegdemux -l -k -s all -p all src.mpg
Extract the first video stream:
$ mpegdemux -d -s 0xe0 src.mpg dst.m1v
Extract all audio streams:
$ mpegdemux -d -s 0xc0-0xdf -b audio_##.mpa src.mpg
Remove the second video stream:
$ mpegdemux -r -s all/-0xc1 -p all src.mpg dst.mpg
Extract the first AC3 audio stream from a DVD MPEG2 system stream:
$ mpegdemux -d -s 0xbd -p 0x80 --ac3 src.mpg dst.ac3
Exchange the first and the second audio stream:
$ mpegdemux -r -s all -p all -S 0xc0 0xc1 -S 0xc1 0xc0 src.mpg dst.mpg
SEE ALSO¶
mplex(1)
AUTHOR¶
Hampa Hug <hampa@hampa.ch>