phpMan > man > ppmtompeg(1)

Markdown | JSON | MCP    

TLDR: ppmtompeg (tldr-pages)

Encode an MPEG-1 stream.

  • Produce an MPEG-1 stream using the parameter file to specify inputs and outputs
    ppmtompeg {{path/to/parameter_file}}
  • Encode the GOP with the specified number only
    ppmtompeg {{-g|-gop}} {{gop_num}} {{path/to/parameter_file}}
  • Specify the first and last frame to encode
    ppmtompeg {{-fr|-frames}} {{first_frame}} {{last_frame}} {{path/to/parameter_file}}
  • Combine multiple MPEG frames into a single MPEG-1 stream
    ppmtompeg -combine_frames {{path/to/parameter_file}}
PPMTOMPEG(1)                           General Commands Manual                          PPMTOMPEG(1)



NAME
       ppmtompeg - encodes MPEG-1 bitstreams

SYNOPSIS
       ppmtompeg [ options ] parameter-file

DESCRIPTION
       ppmtompeg  produces  an MPEG-1 video stream.  param_file is a parameter file which includes a
       list of input files and other parameters.  The file is described in detail below.  The  -gop,
       -combine_gops,  -frames,  and  -combine_frames  options  are all exclusive.  This man page is
       probably incomplete.  For complete usage, see the User's Guide.

OPTIONS
       -stat stat_file : causes the encoder to append the statistics to the file stat_file.  In  any
              case, the statistics are output to stdout.  The statistics use the following abbrevia‐
              tions:  bits per block (bpb), bits per frame (bpf), seconds per frame (spf), and  bits
              per second (bps).

       -quiet num_seconds : causes the program to not report remaining time for at least num_seconds
              seconds.  A negative values tells the program not to report at all.  0 is the  default
              (reports once after each frame).  Note that the time remaining is an estimate and does
              not take into account time to read in frames.

       -realquiet : causes the encoder to run silently, with the only screen  output  being  errors.
              Particularly useful when reading input from stdin.

       -no_frame_summary : prevents the program from printing a summary line for each frame

       -float_dct  :  forces  the encoder to use a more accurate, yet more computationally expensive
              version of the DCT.

       -gop gop_num : causes the encoder to only encode the numbered GOP (first GOP is 0).  The  pa‐
              rameter file is the same as for normal usage.  The output file will be the normal out‐
              put file with the suffix ".gop.<gop_num>"  No sequence info is output.

       -combine_gops : causes the encoder to simply combine  some  GOP  files  into  a  single  MPEG
              stream.   A sequence header/ender are inserted.  In this case, the parameter file need
              only contain the YUV_SIZE value, an output file, and perhaps a list of input GOP files
              (see below).

       -frames  first_frame  last_frame  :  causes  the  encoder  to  only  encode  the  frames from
              first_frame to last_frame, inclusive.  The parameter file is the same  as  for  normal
              usage.   The  output  will  be  placed in separate files, one per frame, with the file
              names being the normal output file with the suffix ".frame.<frame num>"  No GOP header
              information is output.  (Thus, the parameter file need not include the GOP_SIZE value)

       -combine_frames : causes the encoder to simply combine some frames into a single MPEG stream.
              Sequence and GOP headers are inserted appropriately.  In this case, the parameter file
              need  only contain the YUV_SIZE value, the GOP_SIZE value, an output file, and perhaps
              a list of frame files (see below).

       -nice : causes the program to run any remote processes 'nicely.'  This is  only  relevant  if
              the program is using parallel encoding.  (see 'man nice.')

       -max_machines  num_machines : causes the program to use no more than num_machines machines as
              slaves for use in parallel encoding.

       -snr : print the signal-to-noise ratio.  Prints SNR (Y U V) and peak SNR (Y  U  V)  for  each
              frame.   In  summary,  prints  averages  of  luminance  only  (Y).   SNR is defined as
              10*log(variance  of  original/variance  of   error).    Peak   SNR   is   defined   as
              20*log(255/RMSE).   Note  that  the encoder will run a little slower if you want it to
              print the SNR.

       -mse : computes the mean squared error per block.  Also automatically computes the quality of
              the images when set, so there is no need to specify -snr then.

       -bit_rate_info  rate_file  :  prints  bit rate information into the file rate_file.  Bit rate
              info is bits per frame, and also bits per I-frame-to-I-frame.

       -mv-histogram : prints histogram of motion vectors as part of statistics.   There  are  three
              histograms -- one for P, forward B, and backward B vectors.  Each histogram is a 2-di‐
              mensional array, and there is one entry for each vector in the search window.



PARAMETER FILE
       The parameter file MUST contain the following lines (except when using the  -combine_gops  or
       -combine_frames options):


              PATTERN <pattern>

              OUTPUT <output file>

              INPUT_DIR <directory>
                     all  input  files  must  reside in this directory.  If you want to refer to the
                     current directory, use '.' (an empty INPUT_DIR value would refer  to  the  root
                     directory).  If input files will be coming in from standard input, use 'stdin'.

              INPUT
                     This  line must be followed by a list of the input files (in display order) and
                     then the line
                            END_INPUT
                     There are three types of lines between INPUT and END_INPUT.  First, a line  may
                     simply be the name of an input file.  Secondly, the line may be of the form
                            <single_star_expr> [x-y]
                     single_star_expr  can  have a single '*' in it.  It is replaced by all the num‐
                     bers between x and y inclusive.  So, for example, the line
                            tennis*.ppm [12-15]
                     is replaced by tennis12.ppm, tennis13.ppm, tennis14.ppm, tennis15.ppm.  Uniform
                     zero-padding occurs, as well.  For example, the line
                            football.*.ppm [001-130]
                     is replaced by football.001.ppm, football.002.ppm, ..., football.009.ppm, foot‐
                     ball.010.ppm, ..., football.130.ppm.  The third type of line is:
                            <single_star_expr> [x-y+s]
                     Where the line is treated exactly as above, except that we skip  by  s.   Thus,
                     the line
                            football.*.ppm [001-130+4]
                     is  replaced  by  football.001.ppm,  football.005.ppm,  football.009.ppm, foot‐
                     ball.013.ppm, etc.

              BASE_FILE_FORMAT <YUV or PPM or PNM or JPEG or JMOVIE>
                     All the input files must be converted to YUV, JPEG(v4),  JMOVIE,  PNM,  or  PPM
                     format.  This line specifies which of the three formats (actually PPM is a sub‐
                     set of PNM).  The reason for having a separate PPM option  is  for  simplicity.
                     If  your  files  are RAWBITS ppm files, then use the PPM option rather than the
                     PNM.  Also, depending on the system, file reads will go much  faster  with  the
                     PPM option (as opposed to PNM).

              INPUT_CONVERT <conversion command>
                     You must specify how to convert a file to the base file format.  In the conver‐
                     sion command, each '*' is replaced by the filename (the  items  listed  between
                     INPUT and END_INPUT).  If no conversion is necessary, then you would just say:
                            INPUT_CONVERT *
                     If you had a bunch of gif files, you might say:
                            INPUT_CONVERT giftoppm *
                     If you have a bunch of separate a.Y, a.U, and a.V files, then you might say:
                            INPUT_CONVERT cat *.Y *.U *.V
                            Input conversion is not allowed with input from stdin.

                     GOP_SIZE <n>
                            n  is  roughly  the number of frames in a Group of Pictures (roughly be‐
                            cause a GOP must begin with an I-frame)

                     SLICES_PER_FRAME <n>
                            n is roughly the number of slices per frame.  Note, at  least  one  MPEG
                            player may complain if slices do not start at the left side of an image.
                            To ensure this does not happen, make sure the number of rows is  divisi‐
                            ble by SLICES_PER_FRAME.

                     PIXEL <FULL or HALF>
                            use half-pixel motion vectors, or only full-pixel ones

                     RANGE <n>
                            use a search range of +/- n pixels

                     PSEARCH_ALG <algorithm>
                            algorithm must be one of {EXHAUSTIVE, TWOLEVEL, SUBSAMPLE, LOGARITHMIC}.
                            Tells what kind of search procedure should be used  for  P-frames.   Ex‐
                            haustive  gives  the  best  compression, but logarithmic is the fastest.
                            You select the desired combination of speed and  compression.   TWOLEVEL
                            is  an  exhaustive  full-pixel  search,  followed by a local half- pixel
                            search around the best full-pixel vector (the PIXEL  option  is  ignored
                            for this search algorithm).

                     BSEARCH_ALG <algorithm>
                            algorithm  must be one of {SIMPLE, CROSS2, EXHAUSTIVE}.  Tells what kind
                            of search procedure should be used for B-frames.  Simple means find best
                            forward and backward vectors, then interpolate.  Cross2 means find those
                            two vectors, then see what backward vector best matches the best forward
                            vector,  and vice versa.  Exhaustive does an n-squared search and is EX‐
                            TREMELY slow in relation to the others (Cross2 is about twice as slow as
                            Simple).

                     IQSCALE <n>
                            use n as the qscale for I-frames

                     PQSCALE <n>
                            use n as the qscale for P-frames

                     BQSCALE <n>
                            use n as the qscale for B-frames

                     REFERENCE_FRAME <ORIGINAL or DECODED>
                            If ORIGINAL is specified, then the original images are used when comput‐
                            ing motion vectors.  To be more accurate, use DECODED, in which the  de‐
                            coded  images  are used.  This should increase the quality of the image,
                            but will take a bit longer to encode.
                     The following lines are optional:


                            FORCE_I_ALIGN
                                   This option is only relevant for parallel execution (see  below).
                                   It  forces  each processor to encode a block of N frames, where N
                                   must be a multiple of the pattern length.  Since the first  frame
                                   in any pattern is an I-frame, this forces each block encoded by a
                                   processor to begin with an I-frame.
                            foo



NOTES
       If the BASE_FILE_FORMAT is YUV, then the parameter file must contain:
              YUV_SIZE <w>x<h>
       where w = width, h = height (in pixels) of image, and
              YUV_FORMAT <ABEKAS or PHILLIPS or UCB or EYUV or pattern>.
       See the file doc/INPUT.FORMAT for more information.

       If the -combine-gops option is used, then only the YUV_SIZE and OUTPUT values need be  speci‐
       fied  in  the parameter file.  In addition, the parameter file may specify input GOP files in
       the same manner as normal input files --  except  instead  of  using  INPUT_DIR,  INPUT,  and
       END_INPUT, use GOP_INPUT_DIR, GOP_INPUT, and GOP_END_INPUT.  If no input GOP files are speci‐
       fied, then the default is to use the output file name with suffix  ".gop.<gop_num>"  starting
       from 0 as the input files.

       If  the  -combine-frames  option is used, then only the YUV_SIZE, GOP_SIZE, and OUTPUT values
       need be specified in the parameter file.  In addition, the parameter file may  specify  input
       frame  files  in  the same manner as normal input files -- except instead of using INPUT_DIR,
       INPUT, and END_INPUT, use FRAME_INPUT_DIR, FRAME_INPUT, and  FRAME_END_INPUT.   If  no  input
       frame  files  are  specified,  then  the  default  is to use the output file name with suffix
       ".frame.<frame_num>" starting from 0 as the input files.

       Any number of spaces and tabs may come between each option and value.  Lines  beginning  with
       '#'  are  ignored.  Any other lines are ignored except for those between INPUT and END_INPUT.
       This allows you to use the same parameter file for normal usage  and  for  -combine_gops  and
       -combine_frames.

       The encoder is case-sensitive so, except for file names and directories, everything should be
       in upper case.

       The lines may appear in any order, except the following exceptions.  INPUT must appear before
       END_INPUT   (also,  GOP_INPUT  before  GOP_END_INPUT and FRAME_INPUT before FRAME_END_INPUT).
       All lines between INPUT and END_INPUT must be the frames in play order.

       The encoder is prepared to handle up to 16 B frames between reference  frames  when  encoding
       with  input  from stdin.  To increase this amount, change the constant B_FRAME_RUN in frame.c
       and recompile.



PARALLEL OPERATION
       The encoder may be run on multiple machines at once.  To do so, add a line "PARALLEL" in  the
       parameter  file,  followed  by a listing, one machine per line, then "END_PARALLEL".  Each of
       the lines should be in one of two forms.  If the machine has access to the file server,  then
       the line should be:

            <machine> <user> <executable>

       The  executable is normally ppmtompeg (you may need to give the complete path if you've built
       for different architectures).  If the machine is a remote machine, then the line should be:

            REMOTE <machine> <user> <executable> <parameter file>

       Full paths should generally be used when describing executables and  parameter  files.   This
       INCLUDES  the  parameter  file given as an argument to the original call to ppmtompeg.  Also,
       .rhosts files on the appropriate machines should have the appropriate information.

       The encoder will use the original machine for the master and I/O server processes,  and  uses
       the listed machines as slaves to do the computation.

       Optional lines are

       RSH <remote shell command>
              The  encoder  uses the remote shell command to start processes on other machines.  The
              default command is 'rsh.'  If your machine supports a different  command,  specify  it
              here.

       PARALLEL_TEST_FRAMES <n>
              n is the number of frames to encode initially on each processor

       PARALLEL_TIME_CHUNKS <t>
              subsequently,  each  slave  processor will be asked to encode for approximately t sec‐
              onds.  Smaller values of <t> increase communication, but improve load balancing.

              The default values for these two options are n = 3 frames and t = 30 seconds.

       PARALLEL_PERFECT
              If this line is present, then scheduling is done on the assumption that work distribu‐
              tion will be perfectly even -- meaning that each machine is about the same speed.  The
              frames will simply be divided up evenly between the processors.  This has  the  advan‐
              tage  of  very  minimal  scheduling  overhead, but is obviously wrong if machines have
              varying speeds, or if the network load makes performance uneven.

VERSION
       This is version 1.5 it contins new features and bug fixes from version 1.3.

BUGS
       Not really a bug, but at least a limitation: If writing to an output  file,  ppmtompeg  some‐
       times uses <filename>.* as temporary files.

       No known bugs, but if you find any, report them to mpeg-bugs AT plateau.edu.



AUTHORS
       Kevin Gong - University of California, Berkeley, keving AT cs.edu

       Ketan Patel - University of California, Berkeley, kpatel AT cs.edu

       Dan Wallach - University of California, Berkeley, dwallach AT cs.edu

       Darryl Brown - University of California, Berkeley, darryl AT cs.edu

       Eugene Hung - University of California, Berkeley, eyhung AT cs.edu

       Steve Smoot - University of California, Berkeley, smoot AT cs.edu






                                           1 February 1995                              PPMTOMPEG(1)
ppmtompeg(1)
NAME SYNOPSIS DESCRIPTION OPTIONS
-stat stat_file : causes the encoder to append the statistics to the file stat_file. In any -quiet num_seconds : causes the program to not report remaining time for at least num_seconds -realquiet : causes the encoder to run silently, with the only screen output being errors. -no_frame_summary : prevents the program from printing a summary line for each frame -float_dct : forces the encoder to use a more accurate, yet more computationally expensive -gop gop_num : causes the encoder to only encode the numbered GOP (first GOP is 0). The pa‐ -combine_gops : causes the encoder to simply combine some GOP files into a single MPEG -frames first_frame last_frame : causes the encoder to only encode the frames from -combine_frames : causes the encoder to simply combine some frames into a single MPEG stream. -nice : causes the program to run any remote processes 'nicely.' This is only relevant if -max_machines num_machines : causes the program to use no more than num_machines machines as -snr : print the signal-to-noise ratio. Prints SNR (Y U V) and peak SNR (Y U V) for each -mse : computes the mean squared error per block. Also automatically computes the quality of -bit_rate_info rate_file : prints bit rate information into the file rate_file. Bit rate -mv-histogram : prints histogram of motion vectors as part of statistics. There are three
PARAMETER FILE NOTES PARALLEL OPERATION VERSION BUGS AUTHORS

Generated by phpMan v3.5-3-gd8496c8-dirty Author: Che Dong Under GNU General Public License
2026-06-07 21:57 @2600:1f28:365:80b0:a478:544f:eafa:e16d
CrawledBy CCBot/2.0 (https://commoncrawl.org/faq/)
Valid XHTML 1.0 TransitionalValid CSS!

^_back to top