Convert PNM/PAM images to YUV4MPEG2 stream
see also :
y4mtopnm - mpeg2enc - yuv2lav - yuvplay
[options] [ filename ]
add an example, a script, a trick and tips
To convert a file containing a single PPM file into a stream of
15 (identical) frames:
pnmtoy4m -n 15 -r some-image.ppm
To convert a series of Targa format images (in the current
directory) to a YUV4MPEG2 stream displayed by yuvplay:
ls *.tga | xargs -n1 tgatoppm | pnmtoy4m | yuvplay
converts one or more raw PPM, PGM, PBM, or PAM images into a
YUV4MPEG2 stream ready for further processing by other video
tools. These three (or four) image formats are collectively
referred to as "PNM images".
Output is to
stdout to facilitate piping to other MJPEG tools. The size
of the output frame(s) is determined from the (first) input
Input is a
’raw’ format PNM image, read from stdin or from
the optional filename. The input may contain multiple PNM
images concatenated together; pnmtoy4m will read and
process them sequentially. All images must have identical
size and format. Input images can be interpreted as whole
progressive frames, pairs of interleaved fields, or as
sequential fields (read in pairs of images) to be output as
either interlaced or progressive frames. PPM and PGM images
must have 8 bits per channel (i.e. ’maxval’ must
images should be in the usual R’G’B’
colorspace. They are converted to the Y’CbCr
colorspace (ITU-R BT.601) before being output to a
"4:4:4" (non-subsampled) YUV4MPEG2 stream. If
chroma subsampling is required (e.g. to 4:2:0 for MPEG), the
output should be further piped through a program such as
should be in the standard full-range ([0,255]) grayscale
colorspace. PGM and PBM images will be converted to BT.601
luma and output as "MONO" (luma-only) YUV4MPEG2
The PAM format
is a newer superset of the PNM formats; the precise contents
of a PAM image is defined by the TUPLTYPE header tag.
pnmtoy4m handles TUPLTYPE "GRAYSCALE" as
PGM, "RGB" as PPM, and "RGB_ALPHA" as
PPM with an 8-bit alpha channel. (The alpha channel is
converted to BT.601 luma as is appropriate for YUV4MPEG2
and y4mtopnm are inverses of each other; you can pipe
the output of one into the other, and vice-versa. Note that
the colorspace operations are lossy in both directions. And,
when converting to PNM, information on interlacing and
sample aspect ratio is lost (but can be reconstructed by
supplying command-line arguments to pnmtoy4m).
accepts the following options:
Frame offset: skip output of
the first ’num’ frames. (default: 0)
Output a total of
’num’ output frames. Use ’0’ to
specify all frames. (default: 0)
Interpret data as being BGR rather than RGB.
Repeat last input frame until output is complete. If
’-n 0’ is also specified, last input frame will
be repeated forever.
Treat each PNM image as a single (de-interleaved) field
instead of a full frame. The argument specifies the
t - the first image is a
b - the first image is a bottom-field
option, two input images will be required per output frame.
Be careful: mismatched "-I" and "-D"
options can invert the temporal or spatial order of the
fields (or both).
Set framerate encoded in output
stream, as an exact integer ratio. (default: 30000:1001)
Common rates are:
24000:1001 - NTSC 3:2 pulldown converted film
24:1 - native film
25:1 - PAL/SECAM
30000:1001 - NTSC video
50:1 - PAL field rate
60000:1001 - NTSC field rate
Set pixel aspect ratio encoded
in output stream, as an exact integer ratio. (default: 1:1)
Common ratios are:
1:1 - square pixels (computer graphics)
10:11 - CCIR-601 NTSC
59:54 - CCIR-601 PAL
Set the output interlacing mode, encoded in the output
stream. (Default is to match "-D" if given, or
’p’ if not.)
p - progressive, non-interlaced
t - top/upper-field-first interlaced
b - bottom/lower-field-first interlaced
Set verbosity level.
0 = warnings and errors only.
1 = add informative messages, too.
2 = add chatty debugging message, too.
pbm, pgm, pnm, ppm,
y4mtopnm , mjpegtools,
mpeg2enc , y4mscaler, yuv2lav ,
page was written by Matt Marjanovic.
If you have questions, remarks, problems or you just want to
contact the developers, the main mailing list for the
For more info, see our website at