This is a digital video (dv) avi to mjpeg-encoded avi converter. It's a
quick hack to get me by until formal support is provided in other

During this process it converts a 720x480 29.970fps 48khz incoming a/v
stream to 352x240 29.970fps 48khz mjpeg-encoded. This frame size is
required if you want to burn NTSC VCDs (see PAL support below)

This is a quick hack. I don't have time to make the source pretty. It 
works quite well regardless. Please carefully read this document in its 
entirety; there's many intermediate steps and things can get confusing. 
Also, read the docs that are on the mjpeg tools web site for more help
on their end of the process.

The package can be retrieved from

The two prebuilt executables can be fetched from and

you'll need:
*) dvgrab, a digital video device, and a fireware card. I'm using
	the Dazzle Hollywood analog (composite) to digital converter to capture 
	output from my vcr.
*) libgdk-pixbuf; usually comes with redhat 7.0 "workstation" install.
*) the avilib package ripped from lavtools-1.2 (included)
*) libdv from sourceforge (quaser codec). you may need version 0.4.
*) mjpeg tools (rev >= 1.3b3) from sourceforge (the FRIGGEN greatest 
	thing since sliced bread!!  good job on the mjpeg avi support guys!!)
*) avilib converted for use with the DV codec (included)

since this is a quick hack, I haven't made the makefiles/source pretty, etc.
besides adjusting a few paths, things should build fine. I'm using
redhat 7.0/2.4.1.  There's two executables to build, dv2jpg and avijoin.

1) use dvgrab with the --format dv2 parameter to create avi files. 
	you'll notice that the avi files it creates are about 1gb in size,
	and contain about 4.5 minutes of video/audio. An hour and a half show
	takes up about 25 gigabytes.
2) use "dv2jpg dvavi mjpegavi" to convert one of the above-created DVavi's
	into mjpeg-encoded AVIs.  repeat for all DVavi's. You won't need the 
	DVavi's any more now that you have mjpeg-encoded AVIs. That'll free up 
	some much needed disk space, since they're much smaller.
3) use "avijoin showname_1-6.avi show1.avi show2.avi show3.avi show4.avi
	show5.avi show6.avi" to join together 6 of the 4.5 minute mjpeg-encoded
	avi's. you'll wind up with almost 1/2 hour of avi; about one gigabyte.
	this seems to be the about the max you can stick in an avi file;
	though I haven't tried putting more.
4) convert the audio to mpeg by using mjpeg tools. This will do a rate
	conversion from 48khz to 44.1khz in the process:
	lav2wav showname_1-6.avi | mp2enc -v -o showname_1-6_a.mpg"
5) convert the video to mpeg by using mjpeg tools:
	lav2yuv showname_1-6.avi | mpeg2enc -m 1 -b 1152 -o showname_1-6_v.mpg -r 32 -4 1 -2 1 -h
6) join the video and audio together using mjpeg tools:
	mplex -m 1 -f 1 showname_1-6_v.mpg showname_1-6_a.mpg showname_1-6.mpg
7) repeat the process for segments 7-12. you now have an hour's worth of
	mpeg-encoded video in two pieces.
8) use vcdtools and cdrdao to burn your two segments to vcd. NOTE: my
	Sony dvd player doesn't like any CD's other than... (I think they're
	called) "memorex platinum 650MB CDRW" NOTE that they're CDRW's; CDR's
	wont work because the laser is too weak. if you don't have a Sony,
	hopefully you'll have better luck than I did.
9) Insert VCD into dvd player, or use the 'mtv' package to play your movie.
10) enjoy. This is a required step. Do not skip.

	The exact amount you can fit on a 650MB CD can vary; it could be
	that you can fit 11,12,13, or 14 segments. Start with the
	12 like I do here and try more as you get comfortable. If you
	can use regular CDRs, try a 700MB disc.

Right now PAL isn't supported; I'm not sure of the vcd sizes required. If
someone can let me know what the image size is for a PAL VCD, I'll add support.
You can also change dv2jpg.c and substitute in the proper size yourself
(but do be nice and let me know).

The Gnome team for help with libgdk-pixbuf, rasterman for help with imlib2,
arne for help with dvgrab. *Tremendous* Kudos go to the mjpeg-tools team,
who built a nice fast mpeg encoder that can handle a common input format. 
More Kudos to Dr. Ranier for lavtools help. Charles 'Buck' Krasic for help 
with the LIBDV codec.  And of course Linus and every Open Source/Free Software 
contributer for helping us all get along fine without any Micro Sloth(tm) 

Die, inferior operating system, Die!  It's not dead yet! Yes it is; it'll
be stone dead in a moment. aww, well can't you do something? Na, I've got
to go to the Robinson's; they've lost 9 today. Well, do us a favor! 
(whomp) Thank you very much!    Bring out your dead! Bring out your Dead!...

paulb =at= foobox =dot= com