recmpeg - simple video encoder
recmpeg [options] [output_file] [input_file]
recmpeg is a simple video encoder based on the fame library.
It can encode MPEG-1, MPEG-4 rectangular, and MPEG-4 arbitrary
shaped videos.
The input sequence must be provided in uncompressed raw YUV 4:2:0
format (also called YV12). Each frame of the sequence starts from the top
left corner to the bottom right, with width*height pixels for the luminance
component (Y), and width/2*height/2 for the each of the two chrominance
components (U, V), each packed together, in Y, U, V order. Width and height
of the sequence are not provided in input file. Thus the input sequence has
the following structure:
[ frame 1 Y ][ frame 1 U ][ frame 1 V ][ frame 2 Y ] ...
output_file and/or input_file can be specified but
are not required. If no input_file is specified, standard input will
be used instead. If no ouput_file is specified, standard output will
be used instead.
- --help
- Show usage information.
- --verbose
- Show information about the progress of the encoding.
- --profile
- Select the profile to use. "mpeg1", "mpeg4" and
"mpeg4_shape" are currently supported. When this option is not
specified, the default is "mpeg1".
- --motion
- Select the motion estimation algorithm to use. "none",
"pmvfast" and "fourstep" are currently supported. When
this option is not specified, the default is "pmvfast".
- --refresh
- Number of frames before outputing a new sequence header. This option is
useful for example when broadcasting output to a network to allow users to
start decoding in the middle of a sequence. The default is to generate
only one sequence header at the beginning of the output stream.
- --fps
- Number of frames per second of the input sequence. When not specified, the
default is 25. Fractional frame rates are allowed.
- --search
- Specifies the search window, in pixel unit, for motion estimation. Small
values give better result on slow motion videos, whereas bigger values
work better with fast motion. The default is 16 pixels.
- --alpha
- Quality of the shape coding in percent. Lower quality will produce smaller
bitstream. The default is 100% since shape data is often negligible
compared to video data.
- --buffer
- Size of the output bitstream buffer. This should be set according to the
size of the video being coded. Prediction over a large number of frames
and large frame sizes require a greater output buffer. The default is set
to 1Mbyte, which should be enough for nearly all videos. The unit is in
bytes but Kbytes and Mbytes can be specified by appending a K (resp. an M)
to the number (e.g. 4M).
- --bitrate
- Use fixed bitrate. The unit is in bits per second but Kbits/s and Mbits/s
can be specified by appending a K (resp. an M) to the number (e.g. 4M).
When this option is used, quality will vary according to the complexity of
the scene, and thus the --quality option becomes irrevelant. The default
is to use fixed quality. Note that the actual bitrate after encoding may
be slightly different from the one specified here.
- --quality
- Quality of the encoded video in percent. The lower quality, the smaller
encoded bitstream. When using fixed quality, bitrate may vary depending on
the complexity of the scene, thus the --bitrate option becomes irrevelant.
The default is to use fixed quality 75%.
- --coding
- Specifies the order and type of frames to be coded. Currently supported
frame types are 'I' for intra frames (completely coded) and 'P' for
predicted frames (estimated from preceding 'I' or 'P' frame). Other types
such as 'B' (bidirectionnal) or 'S' (sprite) are *not* yet supported. The
default is "I", i.e. intra frames only. Coding must always begin
with an I frame, thus "IP" is valid whereas "PI" is
not.
- --picture
- Specifies the picture size in the sequence. It can be either specified in
widthxheight format, or by using names such as CIF (352x288), SIF
(352x240) or QCIF (176x144). The default is CIF.
- recmpeg -v video.mpg video.yuv
- For encoding a simple MPEG-1 video, and see what's going on.
- recmpeg -q 50 -P mpeg4 video.cmp video.yuv
- For encoding a simple MPEG-4 video at 50% quality.
- recmpeg -P mpeg4_shape video.cmp video.yuv video.seg
- For encoding an MPEG-4 video with shape coding.
- recmpeg -c IP video.mpg video.yuv
- For encoding an MPEG-1 video with motion compensation.
buffer must be large enough to contain encoded data. There is no checking
of buffer overflow as this would be too slow. Encoding of B frame is not yet
supported.
FAME home page at http://fame.sourceforge.net
The recmpeg utility and FAME library were written by Vivien Chappelier, Thomas
Cougnard and Damien Vincent.