Conversion Guide
Part 1: AVI to VCD/SVCD
This is the really easy part. Most MPEG encoders allow for avi file input, after all that's the way they were supposed to work. For those who don't allow to resize the video we simply use an AviSynth script which does the resizing for us.
Step 1: Convert the audio
Depending on the source you have and the encoding program you use you may have to convert your audio to 44.1KHz. For instance bbMPEG can't convert the audio whereas TMPEGEnc can do it. If in doubt about the capabilities of your encoder read the documentation or simply convert the audio to be on the safe side.
You can do exactly as described in this guide but there's one exception: Chose a suitable audio format, not DivX audio. If the source has uncompressed audio (you can usually find out when you right-click in Media Player during playback and then select properties) then I suggest you leave it uncompressed, otherwise you'd loose quality as the audio will be compressed in any case when you're encoding the avi later on. Keep in mind that every conversion decreases quality.
Some encoders can't handle files that contain a compressed audio track. Therefore you'll have to use VirtualDub to extract the audio to wav, then compress it again using your encoding program. This results in a loss of quality but there's nothing we can do about it. Read here how to extract a soundtrack from an AVI file, then load the AVI and the separate wav in the encoder.
Step 2: Preparing the source
I sincerely hope that you got a source that is in a usable format: e.g. 23.976/24/29.97fps for NTSC and 25fps for PAL. If not we have a more or less serious problem. As you know VCD/SVCD don't allow for other settings than 29.97fps, but in the case of a SVCD that framerate can be achieved by different means. First of all let's make sure that we have a usable framerate. You should be able to do a PAL->NTSC conversion (or the other way round) by setting another framerate using avifrate but of course that slows down/speeds up the video slightly but nothing to worry if you're dealing with framerates between 23.976 and 25fps. If you have an 29.97 source and want to make a PAL movie that's somewhat a problem since we'd have to perform an Inverse Telecine to get the original 24fps out of the 29.97fps source - note that this only works on sources that were telecined, so only on progressive DVD sources that were captured at 29.97fps. As of now I don't know how to achieve this process. AviSynth does not include an IVTC filter but VirtualDub could probably help us. If you have any idea on how to perform this please contact me.
CCE and Heuris need a 29.97fps source for NTSC and so does any encoder when you're going to make a VCD. If you have a 23.976/24fps we can perform a 3:2 pulldown in an AviSynth script. Open notepad and write the following and save it as movie.avs.
AVISource("f:\videoout.avi")
AssumeFrameBased
SeparateFields
SelectEvery(8, 0,1, 2,3,2, 5,4, 7,6,7)
Weave
Step 3: Encoding
TMPEGEnc is the easiest of 'em all. You can do exactly as described in my VCD/SVCD guides with the exception that you don't load an avs file but rather you load the avi and since we have no audio problem here you can use the same avi as audio source and set Stream Type to System (Video and Audio). Then load the right settings and start encoding. As mentioned above in case of a VCD you have to use the AviSynth pulldown to get 29.97fps in case of an NTSC source so load the avs script rather than the avi. Of course you won't have to encode the audio separately but the guide will also teach you how to cut and burn in the end.
bbMPEG is also quite easy since it can do the resizing and 3:2 pulldown but you'll have to convert the audio sampling rate if you have an 48KHz source. Start up AVI2MPG2:
Press Add and load your source avi (or avs). Set the right Resolution and make sure you select Convert to output resolution by: Fixed. The Press Start Encoding and the rest is the same as in the VCD/SVCD guide.
CCE can't perform resizing so we have to use AviSynth to do the task for us. Start up Notepad and write the following:
AVISource("f:\videoout.avi").BilinearResize(480,480)
This will resize videoout.avi to 480x480. Of course you have to replace the resolution with the one you need for your SVCD/VCD. SVCD is 480x480/576, VCD is 352x240/288 (the second vertical resolution is for PAL). Then load the avs script in CCE SP and go on according to the guide. Once again encoding the audio separately is not necessary. Of course CCE can't do VCD but the values can be used for Heuris..
Heuris also can't resize so the same as above applies about the avs script. Then act according to the guide. This guide is SVCD only but Heuris can also do VCD, just select the right profile.
Panasonic is a VCD encoder only but it supports resizing and audio bitrate conversion.
If you press Advanced Settings you'll get to the same settings as described in the VCD guide. Use the settings described there and make sure you set the rest exactly as I did. Selecting the right Type will fill in the correct values for audio sampling rate and resolution but make sure you set 29.97/25 fps (NTSC/PAL) and 224kbit/s audio and 1150kbit/s video bitrate. Then press Start Encoding.
A final word: TMPEGEnc was recently rated 2nd after CCE SP in a MPEG Encoder test. Considering the fact that it has many more options, nice MPEG utilities included, is easier for our tasks to use and is completely free (CCE SP is $2500) this should be your obvious choice. TMPEGEnc can deliver even better results if you set the right options and the only disadvantage is speed.
Part 2: VCD/SVCD to AVI
Let's start with non standard MPEG1/2 program stream. FlaskMpeg is a really powerful tool and can read most MPEG1/2 program streams. Proceed according to the FlaskMpeg guide. Note that you have to open a File rather than a DVD but that's the only difference. You can of course only encode a movie to 23.976/24fps if the source had indeed that framerate. True 29.97fps sources must be encoded at 29.97fps otherwise they get choppy. To find out whether a movie is true 29.97fps start the FlaskMpeg Player (Run - Player) and watch Detected FPS in the status window. If it's an NTSC movie and it says 25fps PAL then set it to 23.976fps.. the detection is not really fool-proof.
SVCD: Unfortunately as of now I don't know any tool to convert the SVCD streams on a SVCD disc to another format since the files on the disc are somehow different from the source files you use to burn your SVCD. However source SVCD files can be converted as long as they haven't been burned. Simply proceed according to the FlaskMpeg guide and keep in mind that the aspect ratio has to be changed. You'll have 480x480/576 which is not 4:3 so stretch/squeeze the picture in order to get a true 4:3 aspect ratio. For instance stretching a 480x480 movie horizontally to 640x480 will get you the right aspect ratio again. Also note that in my tests converting a SVCD that I made out of a progressive DVD and encoded at 23.976fps with 3:2 pulldown was choppy when I selected 23.976fps so you have to convert to use 29.97fps.
VCD: If you have a VCD mpg on your harddisk then you can load that into FlaskMpeg and go the usual way. If you have the file from a VCD disk then it's in DAT format which you have to convert to mpg format first before flasking it. Start up VCD Gear, load the Dat and select dat -> mpeg. Then press start.
After that load the created mpg file in FlaskMpeg.
Part 3: ASF to AVI/MPG
You can load an ASF file in VirtualDub 1.3c or lower, then save it as avi. Set audio and video to Direct Stream Copy and save the file again.
TMPEGEnc seems to be the only decoder which is able to handle asf files directly. Simply load the asf instead of an avi or avs file and encode. Here's how you created VCD / SVCD using TMPEGEnc. Keep in mind that you don't have to convert audio separately.
Some other encoders may be able to use DirectShowSource and hence also load an ASF but since I have no files to test I need your feedback to find out where it works.
Part 4: MPG to MPG/VCD/SVCD
Since VOB files are essentially MPEG files this should be rather easy. First check if your source is maybe already in a format that you can use for VCD/SVCD by simply trying to burn the VCD / SVCD. If not then you'll have to load the file in FlaskMpeg and create a VCD / SVCD compatible stream. You are of course free to not stick to the settings given in my guides but use your own non standard settings but the file will only be playable on a pc (or as a miniDVD but I'll cover that subject later).
This document was last updated on 08/26/01