Clone wiki

transcode / Transcode FAQ


# General

What packages do I need to run transcode?

If you are compiling the source code yourself, what you need for a bare-bones installation is not much:

  • libz & libm (which come with most operating systems)
  • FFmpeg >= 0.4.9-pre1, though you should really just check out the latest FFmpeg library from !FFmpeg CVS. FFmpeg tends to put out releases very infrequently and so a current development snapshot is likely to be more stable and mature than the last release. (at least the shared libraries are absolutely needed, not the programs themselves)

If you install a pre-built package like a Redhat or Debian package, it may or may not work depending on what the package builder wrote in as the dependencies!

See Building Transcode for more details on compiling the source, like what all the optional packages are.

How do I obtain transcode from CVS?

See the CVS section at the bottom of this page: Download

Where can I get the signature files, so I can check the tar.gz archives with GPG/PGP?

See the Signature section at the bottom of this page: General Information As of 0.6.13, this is no longer true :Digest fingerprints are listed with the download information at

# Installation

I have installed the latest transcode package from RPM (or other pre-built package). Whenever I run transcode it dies, saying it cannot find (or similar). What's going on?

Pre-built packages of some distributions are not complete. This is a general problem. If you want to use the mpeg2enc export module, you will have to compile transcode yourself, or try to find a complete rpm on the net. (ems)

Do I need to install avifile to write AVI files?

No, transcode has its own library for writing AVI files. The avifile library is used to enable support for win32 binary codecs, but libavcodec from the ffmpeg project has a free implementation for most of these codecs anyway. (tibit)

Help! I got lots of no's after running ./configure, but it didn't complain about it and let me compile anyway! Is this a bug?

This is not necessarily a bad thing. Transcode supports a lot of optional libraries & binaries that provide the same codec. Starting with version 0.6.13, the use of most of the optional packages is disabled, meaning configure won't even bother looking to see if you have the package installed. To make use of it, add the appropriate --enable-XXXX option when running configure. If you are sure you have a specific package installed and did enable the use of it, and transcode does not find it, have a look at config.log to find out the reason. Most likely you will just need to explicitly tell configure where to find the library/include files by adding the appropriate --with-XXXX=/path/to/XXXX option.

What do I need to get the and/or modules working?

These modules use the ImageMagick library from

I do have ImageMagick, including the -devel package installed, and I still get no and/or import_imlist module.

Some Linux distributions ship an ImageMagick-devel package which requires a shared object or a bzip2-devel package. Check yourconfig.log for details.

# Usage

How do I make a copy of a DVD-9?

For german reading users here is a link (felix)

What's the difference between -j and -Y?

The difference between -j and -Y is only the order that transcode does the clipping. In the manual page we find that the video frame operations ordering is fixed:

"-j -I -X -B -Z -Y -r -z -l -k -K -G -C"

(executed from left to right).

So if one needs to do frame clipping and resizing, in a specific order, he can choose the apropriate transcode options. For instance, if one wants to clip and then resize the video frame, in this order, he can use -j (clip) and -B (resize). In this case -Y and -B would not work, as the operation -Y is done after -B.

There are two other options for clipping:

--pre_clip (executed before -j) and --post_clip (executed after -Y) (ems)

Finally, there's the justly infamous ffmpeg.cfg file. What is it, what are all the parameters, and what do they mean?

The ffmpeg export module uses this file at run-time to allow someone to fine-tune its use. Really, ffmpeg just reads it all in, sets the parameters as specified, then passes them all to the running codec in libavcodec. transcode also uses libavcodec, but supplies the parameters to it from a combination of resources: defaults, profiles, command line options, and now also from parameters listed in the ffmpeg.cfg file. Because transcode has to play by different rules, not all of the parameters you specify in ffmpeg.cfg will be used...even if ffmpeg uses them.

The parameters themselves are not really that well advertised. Mplayer also uses libavcodec (but it doesn't use an ffmpeg.cfg file, rather it takes all the fine-tuning parameters on command line) and its manpage has pretty good documentation on each parameter. See at the mplayer manpage (mencoder specific options section) on the web at ![!]||], and scroll down to "lavc". I remind you that not all parameters you see there are supported by transcode.

By the way, if you're just going to encode to (S)VCD or DVD with the ffmpeg module, you should use the profile support. Also, in transcode you can see what all the supported options are, and what they are set to, by adding -q2 to the command line.

How do I transcode an avi to an mpeg?

(Partial answer) In this form, your question cannot easily be answered. You're talking of container formats (avi, mpeg) while you probably mean video and audio formats.

A container is just a format designed to hold a combination of video and audio (and sometimes more, like sub-title) data in such a way that a player application can read it reliably and play it all back properly (that means with video and audio synchronized).

Examples of container formats are:

  • avi
  • dv
  • wave
  • mpeg-ps (aka "vob")
  • mpeg-ts
  • asf
  • quicktime (aka "mov")
  • mp4

Examples of video formats are:

  • mpeg1
  • mpeg2
  • mpeg4
  • DivX
  • mjpeg
  • xvid
  • realvideo
  • wmv
  • dv
  • yuv
  • yv12

Examples of audio formats are:

  • mpeg-layer1 (aka "mp1")
  • mpeg-layer2 (aka "mp2")
  • mpeg-layer3 (aka "mp3")
  • wma
  • aac
  • pcm
  • dts
  • ac3

Most of these video and audio formats compress the data in some way. Any program that works with these video or audio formats needs to work with the appropriate COmpressing/DECompressing library (shortened to just CODEC). It is common to use the word codec in place of audio and/or video format because it's easier to say and people usually understand that you need that particular codec to interpret the material.

Typically you will find that avi files contain mpeg4 video content and mp3 audio content, but that is just an example. Use tcprobe to find out what's inside a particular container.

With this information you should be able to rephrase your question a get a proper answer ;-)

Also see, for example ![!AviToVob]||AviToVob]

How do I calculate the best tcrequant number from within a script when going from a DVD9 to a DVD5?

Once you have separated (using tcextract) the audio and the video, get the file sizes of the audio and video files. If you are burning to a DVD5, the maximum image size is 4700000000. So the following equation will give you a 'best fit' number. 1.04 is a fudge factor to leave space for the file system and other overhead.

If you are including more that one audio stream or a subtitle stream, those filesizes must also be subtracted from the maximum dvd image size.

requant_factor = (video_size / (dvdmax_size - audio_size)) * 1.04; tcrequant -i ofile.m2v -o movie.m2v -f requant_factor


What parameters do I specify in ffmpeg.cfg for encoding to DVD with ffmpeg when not using profile support?

First try using transcode with a DVD profile and add -q 2 to the command line. All the parameters and their values will be listed. Take what you need from that list and put it in your own ffmpeg.cfg file. An example ffmpeg.cfg is here:

[mpeg2]\\ vrc_minrate=0\\ vrc_maxrate=9800\\ vrc_buf_size=1792

If ratecontrol still is insufficient, try adding:

lmin=0\\ lmax=10000

(try lower lmax if still not right) (ems).

How can I save the audio track of a DVD directly to a WAVE file suitable for burning onto an Audio CD?

A: Suppose you want the 2nd audio stream from title #2:

      transcode -x null,dvd \
                -i /dev/dvd \
                -T2,-1 \
                -a 1 \
                -y wav \
                -J resample \
                -E 44100 \
                -o foo.wav

The resampling is needed since DVD audio is usually sampled at 48 kHz.

How do I transfer my DVD-encoded multimedia to DVD so that they playback on my stand-alone DVD player?

A: Anything targeting DVD (NTSC or PAL) will ultimately have to pass through the program dvdauthor. :A step-by-step HOWTO can be found at

:There is also a very simple shell script for creating DVD's from arbitrary .avi input files with mixed codecs and aspect ratios called ![!AviToVob]||AviToVob]. The code is very well documented and worth a read.

:There are some GUIs out in the meantime, too, which you may prefer:

# Problems

I am using a 0.6 version of transcode and I am having some sort of problem.

Upgrade to the most recent release (1.0.x) or the CVS version. Old versions of transcode are not supported.

How do I obtain transcode from CVS?

In the Download section there is a description how to obtain transcode from CVS.

I now got transcode from CVS, how do I compile and install it?

See the INSTALL file.

So I got transcode from CVS and compiled it according to the directions in the INSTALL file, and now I (still) have some sort of problem.

Join the transcode-users mailing list (see the Support section on the Main Page) and check the archive to see if your problem has been discussed at the mailing list before.

I still have a problem and it hasn't been discussed before.

If your problem is that transcode "hangs" immediately, or even after some time, you may be experiencing the venerable old thread-version problem.

If running transcode this way: "env LD_ASSUME_KERNEL=2.4.0 transcode ..." fixes the problem, then it's thread version issues, not transcode, that's at fault.


I still have a problem and it's not that transcode hangs.

See Reporting Problems. If your problem is that transcode crashes (with a "Segmentation fault" or similar), also see Reporting Crashes and follow the instructions carefully. You can also take a look at Bug Showcase to see if your problem is a known one.

Talking of ffmpeg, I seem to be suffering from having an almost infinite number of copies of it. For example, it comes bundled with transcode-0.6.12 (and older), mplayer and avifile. None of these seem to be even closely the same file! Am I missing something?

The ffmpeg package is needed for its superb set of codecs, which are bundled inside one of its libraries: libavcodec (also nicknamed as lavc). Up until recently the API for this library was changing frequently enough to cause headaches for developers of other programs who used it. It was easier to just pick one version of the library, copy it to the package that's using it, and statically link it right into the program. Because each project used a different version of the library, anyone wanting to compile all of these packages had to deal with all these different versions.

But now the API has settled down and become stable, so it's safe to link to the library dynamically. Starting with version 0.6.13, transcode no longer ships with libavcodec, nor will accept it as a static library. Transcode needs to have it in shared (aka dynamic) library form. When you compile ffmpeg you have to build the shared libraries by passing the --enable-shared to its configure script.

Peoples' faces are purple! Why does this happen and how do I fix it?

This is usually because the red and blue components of the image are being swapped. Transcode uses the de facto standards for component order (R-G-B for RGB mode, Y-Cb-Cr for YUV mode), but some external libraries use different orders for various reasons; for example, on little-endian systems (like the Intel x86 CPU family) some RGB-based routines use B-G-R order instead. Transcode tries to handle all of these differences, but if it fails, you may end up with the purple-face problem.

To fix it, add -k to the transcode command line.

People are upside-down! How do I fix this?

Add -z to the transcode command line.

When trying to read a DVD I get something like (dvd_reader.c) no support for DVD reading configured - exit. What am I missing and what do I need to do to fix it?

You have probably installed transcode from source and you don't have the libdvdread package installed (including -devel if you're working with pre-built packages), so transcode did not compile in the support for it.

I am missing the mp3 import module (! What am I missing and what do I need to do to fix it?

See previous question. You need to have a recent version of lame installed (including -devel if you're working with pre-built packages).

What does "Can't step back 17" (or similar) mean?

This message comes from the mp3 decoder (lame). It means that one or more previous mp3 chunks are missing. mp3 uses interdependent chunks, so if any chunks are missing the other chunks that depend on it couldn't be decoded properly. This usually happens when the file was split at some time or had its beginning cut off. There is not much you can do about it.

I have problems encoding with the divx4linux libraries from, what's going on and how do I fix it?

Transcode supports two DivX encoder modules. One is divx4 and the other is divx5. Please note that the `4' in divx_4_linux only stands for the word "for", it does not denote the version number. Use -y divx4 if you have a really old version of the divx4linux libraries installed. The divx5 export module depends on the divx4linux libraries you had installed when you compiled transcode. The developers from changed their API in a non-backwards incompatible way causing -y divx5 to either supports the new API or the old one. They are mutually exclusive. If you have problems with -y divx4 try -y divx5.

Please note that the current version of the divx4linux libraries available from have a bug which may cause a segfault on Pentium 4 systems. There is another bug in older versions of divx4linux which results in a crash when writing data to a FAT32 windows partition. See for details.

Also note that DivX is really crap. You can make DivX-alike files (mpeg4) with the ffmpeg and xvid export modules. We don't support DivX ;^)

Transcode cannot find ...

The best place to put these libraries is the transcode libdir (/usr/local/lib/transcode/ by default). You can find out the libdir of your transcode installation by executing tcmodinfo -p. Transcode will look into this libdir first when searching for a library. When that fails, transcode will look at the standard library locations. You should make sure that the location of the library is in /etc/ and don't forget to run ldconfig afterwards. You do not need to put the transcode libdir into the dlloader config file.

I have VOB files from a DVD which transcode won't decode correctly. At some point, there's a "broken stream" error, and in the resulting AVI the picture exhibits some artifacts at that point and the AV sync is gone from there on. The VOB files can be played back perfectly without any problems with various players, though.

First, concatenate the VOB files into a single VOB file (called all.vob here). Next, use mencoder to generate an AVI file (and a fixed index, which really fixes your problem):

mencoder all.vob -o all.avi -ovc copy -oac copy

Then process the AVI file with transcode. If mencoder crashes (as it did on my system), do it in two pieces like this:

mencoder all.vob -o all_noaudio.avi -ovc copy -nosound\\ tcextract -i all.vob -x mp3 -a 0 > all_audio.mp3

which will give you an AVI without sound, and an MP3 with all the sound. Transcode that (I use xvid for video output module, you can use whatever you want):

transcode -i all_noaudio.avi -x mpeg2,null -y xvid,null -o transcoded_noaudio.avi

and finally merge audio and video with

avimerge -i all_noaudio.avi -p all_audio.mp3 -o all.avi

This can probably be improved; I was happy enough that it worked. (meier)

I'm trying to encode a series of images into a raw DV file using the dvraw export module, but no matter what I do I get an empty output file.

Raw DV is a container format that requires both a video stream and and audio stream. The dvraw export module doesn't write any data until it has received both a video frame and enough audio for that frame, so if your input doesn't have any audio, no frames will get written to the output file. In order to force the dvraw module to output frames, you have to tell transcode to provide a dummy audio stream. This can be done with (using the im import module as an example):

transcode -x im,null -y dvraw

By explicitly adding a ,null to the -x option, transcode knows that it needs to generate dummy audio data for the dvraw module. (Do not add a ,null to the -y option, however; this disables all audio output and leaves you back where you started!)

I have a capture card that produces MPEG output, but when I try to transcode the MPEG data to something else, transcode hangs or gives errors like "invalid program stream packet size".

Use -x mpeg2 in the command line:

transcode -i data.mpg -x mpeg2 -o outfile ...