As you might know, I despise flash as a way to deliver video, but just have to use it if you want to publish videos for poor M$ excuse for web browser. I don't like DVD either, mostly because it's encrypted, but let's finish with rants here.
So, I have DVD in my hand and need high quality flv file from it with readable slides if at all possible. You really don't want to encode video file more than once since it's already in mpeg format, and event two times re-encode could make your slides unreadable.
First step is to make local copy of whole disk (which will take 4+ Gb) so I can re-try encoding without listening to spinning DVD all the time and mount it:
$ dd if=/dev/cdrom of=dvd.iso $ mkdir mnt $ sudo mount dvd.iso mnt -o loop $ ls -al mnt/ total 10 dr-xr-xr-x 4 4294967295 4294967295 136 2009-09-30 20:45 . drwxr-xr-x 5 dpavlin dpavlin 4096 2009-10-15 22:01 .. dr-xr-xr-x 2 4294967295 4294967295 40 2009-09-30 17:25 AUDIO_TS dr-xr-xr-x 2 4294967295 4294967295 560 2009-09-30 18:45 VIDEO_TSLooks good so far. However, to add insult in injury, video is in multiple files (it's 60 minute lecture):
dpavlin@klin:/rest/iso/Zimbardo$ ls -al mnt/VIDEO_TS/ total 4093324 dr-xr-xr-x 2 4294967295 4294967295 560 2009-09-30 18:45 . dr-xr-xr-x 4 4294967295 4294967295 136 2009-09-30 20:45 .. -r--r--r-- 1 4294967295 4294967295 14336 2009-09-30 18:45 VIDEO_TS.BUP -r--r--r-- 1 4294967295 4294967295 14336 2009-09-30 18:45 VIDEO_TS.IFO -r--r--r-- 1 4294967295 4294967295 157696 2009-09-30 18:41 VIDEO_TS.VOB -r--r--r-- 1 4294967295 4294967295 73728 2009-09-30 18:45 VTS_01_0.BUP -r--r--r-- 1 4294967295 4294967295 73728 2009-09-30 18:45 VTS_01_0.IFO -r--r--r-- 1 4294967295 4294967295 12288 2009-09-30 18:41 VTS_01_0.VOB -r--r--r-- 1 4294967295 4294967295 1073565696 2009-09-30 18:42 VTS_01_1.VOB -r--r--r-- 1 4294967295 4294967295 1073565696 2009-09-30 18:43 VTS_01_2.VOB -r--r--r-- 1 4294967295 4294967295 1073565696 2009-09-30 18:45 VTS_01_3.VOB -r--r--r-- 1 4294967295 4294967295 970516480 2009-09-30 18:45 VTS_01_4.VOBSo, I created following script to help me with it:
#!/bin/sh -x input="`ls mnt/VIDEO_TS/VTS_01_[1234].VOB | sed 's/^/-i /'`" out_flv="lecture.flv" format="-ab 48k -ar 44100 -vcodec flv -b 400k -g 160 -cmp 3 -subcmp 3 -mbd 2 -flags aic+cbp+mv0+mv4 -trellis 1 -deinterlace" ffmpeg $input $limit -pass 1 $format -y $out_flv || exit ffmpeg $input $limit -pass 2 $format -y $out_flv || exitIt does two pass encoding, preserving most of audio fidelity while creating stream which takes about 50Kb/s to stream smoothly. You will notice that I didn't encode VTS_01_0.VOB which isn't really a just a subtitle stub:
$ ffplay mnt/VIDEO_TS/VTS_01_0.VOB Input #0, mpeg, from 'mnt/VIDEO_TS/VTS_01_0.VOB': Duration: N/A, start: 0.360000, bitrate: N/A Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576 [PAR 16:15 DAR 4:3], 7000 kb/s, 25 Stream #0.1[0x20]: Subtitle: dvdsub
If you are recoding and editing video which will later be on Internet, please don't use fancy transitions. There is no hope for those to look good after re-encoding. This video had 3D box rotating effect (although simple fade would be enough) which turned into ugly blur, but other than that, it's perfectly readable.