I have always had problems while playing VCDs on my Linux machine. The VCD file system is still not supported by the Linux kernel. After browsing the net and trying out various options, I will enlist the following which I find most useful.
This is the most flexible command and copies the contents of VCD in the .bin and .toc format. This can be played by mplayer, or can be burnt into another cd. First we need to determine the device name for the cd drive. We do this either by:
parted -l
or
cdrdao scanbus
Suppose the device is /dev/sr0. We then need to unmount this device:
umount /dev/sr0
Next, the following command will extract the contents of the VCD into .bin and a .toc files:
cdrdao read-cd --read-raw --read-subchan rw_raw --datafile fileName.bin --device /dev/sr0 --driver generic-mmc-raw fileName.toc
We can directly play the .bin file using mplayer. In case we want to create an iso from the .bin and .toc, we can use the bchunk. In order to install it, just do:
yum install bchunk
bchunk works only with cue. So, you need to convert the .toc to .cue:
toc2cue fileName.toc fileName.cue
Then:
bchunk -v -r fileName.bin fileName.cue fileName
This will give you .iso
mencoder vcd://2 -oac lavc -ovc lavc -o fileName.avi
vcdxrip -i /dev/sr0 -v -p -t 1 --nofiles --nosegments
Here i denotes the mount point of the CDROM drive, t denotes the Track Number. This way, a VCD can be ripped from a Linux machine. I have tested this on Fedora (10) and it works great.
The following sites have more detailed info about the above: