Compiling & Using Transcode for Time-Lapse MPEGs

Author:  David Cottingham

The following gives terse details of how to install and get Transcode running. Bear in mind that many of the below, in particular ffmpeg and transcode, will need dependencies installing. For ffmpeg you will need to download several source tarballs and install them, the URLs are given by the configure script when it tells you they are missing. For Transcode, the dependencies I list in the configure command can all be satisfied using SuSe?'s YaST.

  • Download, compile and install  Lame MP3.
  • Download, compile, and install  ffmpeg, using the following options in the configure script:
    ./configure --enable-shared --enable-mp3lame
    
    If you do not give the --enable-shared switch, transcode will not be able to find libavcodec, and will fail to compile!
  • Download, compile, and install  Transcode, using:
    ./configure --enable-mjpegtools --enable-imagemagick --enable-libjpeg
    
  • Get your JPEG files (all the same pixel sizes) into one directory, and run
     ls -1 *.jpg > list.txt
    

to generate a list of JPEGs for input to transcode.

  • Use the following transcode command line to generate an MPEG4 video:
    transcode -x imlist,null -y ffmpeg,null -F mpeg4 --use_rgb -i list.txt -o test.ffmpeg -w 8000 --import_asr 1 -g 640x480 -z -k
    

The explanation of each option is as follows:

  • -x specifies the import module to be used, i.e. imagelist for the video stream, and null for the audio stream.
  • -y specifies the output module, in this case ffmpeg for video, and null for audio
  • -F is a switch for ffmpeg, to signify the video codec to be used (MPEG4 in this case)
  • --use_rgb is the colour scheme to use, and is required (otherwise transcode just refuses to work!)
  • -i specifies the input file, in this case list.txt which contains a list of JPEGs to be encoded
  • -o specifies the output file, in this case test.ffmpeg
  • -w specifies the output bit rate, 8000 being nearly the highest (so I read, haven't tried anything else).
  • --import_asr specifies that the aspect ratio of the imported images is 1:1 (though mine weren't...)
  • -g is very important, and is the pixel dimensions of all your images, in my case 640 by 480
  • -z fixes the problem where the end result is upside-down
  • -k fixes the problem where transcode's interpretation of the RGB standard is different from other programmes' (without this switch the colours are a bit odd).

I found this page on  using the Rawlist input module a good starting point, though it is more simple than the above as it uses raw images without the JPEG header (so you'll need a Perl script).