VCD Authoring Notes
By Michael Hernandez
Last Updated: 11/15/20
- Splitting Long Videos
- Aspect Ratio
- VCDImager XML File
I am a big fan of technology.
And for some odd reason, I have always been interested in obsolete technology.
My appreciation for obsolete technology runs fairly wide and is probably influenced by my first-hand experience with various older formats.
Take video distribution as an example: I have witnessed the evolution of video distribution as it moved from VHS to DVD to Blu-ray to direct downloads and online streaming.
Along the way, there were a number of formats that failed to gain mainstream support (I am looking at you, HD DVD). Among those, there was also Video CD (VCD).
VCD failed to gain traction for a number reasons including inferior picture quality when compared to DVD. But I think the greatest factor was the lack of copy protection and the proliferation of CD-burning capabilities on personal computers. I am fairly certain that this would have caused concern among the movie studios that made heavy investments in making their movies.
This article actually started out as a collection of my own personal notes on the subject. I had to do quite a bit of research to figure out how to prepare my own VCDs. I thought it might be helpful to share what I discovered in one document, like a stand-alone Video CD authoring guide.
Video CD (VCD) Specifcations (White Book)
|Framerate||29.97 FPS or 23.976 FPS|
|Codec||MPEG-1 Layer 2|
|Sampling Rate||44.1 kHz|
|Channels||Stereo, Joint Mono, or Split L/R Mono|
Right now, my VCD-Authoring workflow employs the following tools:
I use ffmpeg to convert the source into VCD-compliant MPEG-1 video files.
From there, I write an XML file that controls how VCDImager compiles the CUE/BIN disc image, including any advanced play-back options.
Then I use Infrarecorder to to burn the image to a physical Compact Disc.
Splitting Long Videos
VCD capacity is dependent upon the underlying media: CD. A a 700 MB CD can hold almost 80 minutes of VCD-compliant video, plus-or-minus a bit depending on formatting and other content added to the disc.
As a rule of thumb, it is usually safe to figure that every minute of VCD-compliant video will consume 10MB of disc space.
To split a video into three one-hour sections, use the following commands:
ffmpeg -i source.mp4 -t 01:00:00 movie-1.mpg ffmpeg -i source.mp4 -ss 01:00:01 -t 02:00:00 movie-2.mpg ffmpeg -i source.mp4 -ss 02:00:01 -t 03:00:00 movie-3.mpg
Fullscreen Source Material
Source video can be directly scaled to 352x240 and it should display correctly when played from the VCD.
ffmpeg -i source.mp4 -threads 1 -vf scale=352:240 -target ntsc-vcd movie.mpg
Widescreen Source Material
Special considerations need to be taken into account for preserving the proper aspect ratio. VCD specification calls for video with a resolution of 352x240 to be displayed at 4:3, making for non-square pixels. To compensate, divide by 1.1 when figuring picture height. Then, simply pad the image to fill the frame to 352x240 and center the picture vertically.
Let us go through the process of figuring how to scale a video as an example with the aspect ratio of 1:85:1. Use 352 for the video width and figure the height according to the aspect ratio (190 for 1.85:1) and then divide by 1.1 (190/1.1= approximately 173) to find the appropriate picture size (352x173). Then, simply pad the image to fill the frame to 352x240 and center the picture vertically.
ffmpeg -i source.mp4 -threads 1 -vf scale=352:173,pad=352:240:0:33 -target ntsc-vcd movie.mpg
For 16:9, the proper picture scaling should come out to be 352x180 and the command would be:
ffmpeg -i source.mp4 -threads 1 -vf scale=352:180,pad=352:240:0:30 -target ntsc-vcd movie.mpg
VCDImager XML File
For the sake of simplicity, here is a copy of the basic XML file that I use to control how VCDImager assembles the disc image for a simple Video CD without any fancy playback options.
<?xml version="1.0"?> <!DOCTYPE videocd PUBLIC "-//GNU//DTD VideoCD//EN" "http://www.gnu.org/software/vcdimager/videocd.dtd"> <videocd xmlns="http://www.gnu.org/software/vcdimager/1.0/" class="vcd" version="2.0"> <info> <album-id>ALBUM_TITLE</album-id> <volume-count>1</volume-count> <volume-number>1</volume-number> <restriction>0</restriction> </info> <pvd> <volume-id>DISC_LABEL</volume-id> <system-id>CD-RTOS CD-BRIDGE</system-id> <application-id>CDI/CDI_VCD.APP</application-id> <publisher-id>PUBLISHER NAME</publisher-id> </pvd> <filesystem> <folder> <name>CDI</name> <file src="CDI/CDI_VCD.APP"><name>CDI_VCD.APP</name></file> <file src="CDI/CDI_IMAG.RTF"><name>CDI_IMAG.RTF</name></file> <file src="CDI/CDI_TEXT.FNT"><name>CDI_TEXT.FNT</name></file> </folder> <folder> <name>EXTRA</name> </folder> </filesystem> <sequence-items> <sequence-item src="movie-01.mpg" id="movie-01"> <entry id="ch01">0.00</entry> <entry id="ch02">300.00</entry> <entry id="ch03">600.00</entry> </sequence-item> <sequence-item src="extra-01.mpg" id="extra-01"/> </sequence-items> </videocd>
And now for some (hopefully brief and simple) explanation:
<info> section describes information about the Video CD. You can specify a title in
<volume-count> records the total number of discs in the album (in case the movie did not fit on one disc) while
<volume-number> reports which disc is currently being played.
<pvd> section defines information about the disc itself. You can use
<volume-id> to specify the disc label and
<publisher-id> to add your own information (name, brand, company, etc.) if you want.
You can add any file to the disc with the
<filesystem> section. You can even create a hierarchy of folders to organize files.
<sequence-items> sections is where all the magic happens. It is where you add the compliant video files to the disc. You can define chapter-points in seconds with the
<entry> tags. Note that not all VCD players will support chapters without PBC (something that Michael Tam covers really well in his guide on the subject).
What is with the Phillips CD-i stuff? Well, for that I would have to refer you to the The New International CD-i Association. But the short-and-simple explanation: a fully standards-compliant Video CD includes a CD-i bridge application for compatibility with the older Green Book standard. The VCD will probably play in most non-CD-i hardware without the bridge application, so you can actually ignore this if you are not a stickler for standards.
Video CD may be an obsolete format. It will probably never see a resurgence like Vinyl has and is vastly inferior in quality and capacity compared to contemporary formats. For those of us who have had experience with VCD though, the power and mystique of the format will forever hold a special place in our hearts.
I hope that you find these notes useful in your ventures, and have fun discovering the magic of producing your own Video CD.
If you enjoyed reading this article you might like visiting my website because I wrote that too! MichaelHernandez.xyz