Wednesday, July 06, 2005

Entropy and Chaos

Entropy, uncertainty won't yield to you...

NeroVision Express has been aligning pixels weird in 3-5 vertical rows on the right side of my encoded MPEG2's. I haven't really noticed 'till now, but all of my 16:9 DV video is consistantly encoded with those weird aberrations. I took my occasion of feeling unsettled to try the latest version of Kino/ffmpeg/MJPEG/SuSE 9.3. I did a head-to-head comparison encoding the same AVI Type 2 DVI file with all the new stuff from SuSE, PackMan and Guru's RPM Site.

Tests were done using the default settings for a 16:9 NTSC DVD. Note that MJPEG still looks awful and blocksizes are way too big. NeroVision's encoder almost looks okay, but motion lines are rendered all over the place. ffmpeg looks good however - lines are even, things aren't harshly blocked. Bear in mind, however, that MJPEG in Kino is a single-pass encoding, while ffmpeg is a dual-pass encoding. I'm sure this is a big reason for the difference.

ffmpeg is looking much better, but I'll probably stick to NeroVision for now. Kino only processes ffmpeg files one at a time (as opposed to its MJPEG batch conversion), so doing an entire batch of AVI's has to be done manually, typing individual file names and selecting individual frame sets. I could possible write a shellscript to do what Kino does, but Kino an internal (and very nice) YUV generator which pipes output directly to ffmpeg, as opposed to creating the YUV and then processing it. For example, here's the first pass of the encoder:
ffmpeg -v 0 -f dv -i pipe: -f rawvideo -pix_fmt yuv420p pipe: -vn -f ac3 -ac 2 -ab 192 -ar 48000 -y /home/jellis/Documents/March 2005/2005.03.27_13-17-44.ac3
ffmpeg -v 0 -f rawvideo -pix_fmt yuv420p -s ntsc -r ntsc -i pipe: -an -target dvd -f mpeg1video -maxrate 8000 -ildct -ilme -aspect 16:9 -pass 1 -passlogfile /home/jellis/Documents/March 2005/2005.03.27_13-17-44 -y /home/jellis/Documents/March 2005/2005.03.27_13-17-44.m2v

And the second pass:
ffmpeg -v 0 -f dv -i pipe: -an -f rawvideo -pix_fmt yuv420p pipe:
ffmpeg -v 0 -f rawvideo -pix_fmt yuv420p -s ntsc -r ntsc -i pipe: -an -target dvd -f mpeg1video -maxrate 8000 -ildct -ilme -aspect 16:9 -pass 2 -passlogfile /home/jellis/Documents/March 2005/2005.03.27_13-17-44 -y /home/jellis/Documents/March 2005/2005.03.27_13-17-44.m2v

Then it seems to multiplex using:
mplex -f 8 -o /home/jellis/Documents/March 2005/2005.03.27_13-17-44.vob /home/jellis/Documents/March 2005/2005.03.27_13-17-44.m2v /home/jellis/Documents/March 2005/2005.03.27_13-17-44.ac3

Both using internal deinterlacing (I'm guessing from the 420 progressive format it selects). Kino does this pretty well, and I might have problems trying to hack it on my own. Notice that it pipes both audio and video streams in seperately... so the source format is kind of a black box to me.

NeroVision, however, works fairly well right out of the box and will batch everything together for me automagically. I want seperate VOB's for each chunk of video sometimes, and others I want to splice them together. But most of my video should have its own VOB... something I can't very easily define in any DVD authoring or video authoring software currently available in Linux.

I'll give a quick pass at demux'ing the Type 2 AVI's and creating raw source audio/video files... I'll let you know if I figure anything out. I might just try piping
dvgrab --format raw --frames 0 --size 0 -
to stdout and see how that works. dvgrab is part of the Kino project, so I'm hoping it'll be just as nice.

This latest round of entropy has killed any productivity I once had. It's frustruating, especially when I wanted to have the isometric camera for CEL done by now.

No comments:

Post a Comment