lossless 1

We rented a 35mm print of the Wizard of Oz We scanned 48 frames just before Dorothy is returned to Kansas.

lossless 2

lossless 3

cairn.com_files_gimgs_3_talk.jpg

We enlarged the vistavision to 1280×720 square pix image sequences and gathered them into QT Pro to output the full-frame 720p image. We're satisfied with the final result out of both VisualHub and MPEGStreamclip. Need to compare the two media in the gallery for a final evaluation.

lossless 4

Most time-based compressors make L4 into hamburger. Watch for softness and macroblock dropouts about 30 seconds into playback. Unacceptable. I considered lowering the frame rate and keeping everything progressive (attempting to pad with black frames) but the animation isn't completely consistent.

lossless 5


MiniDV

Linda at CalArts produced a PAL MiniDV for us to show in the September Bijou screening. We've had good luck in the past screening MiniDV (at the HFA and in VO3 at the Carpenter Center) but this really looked terrible. We blame the projector but we actually don't know why it looked so bad.

HDCAM

L2 for Toronto. I used rb-magick to prepare 1280x720pix frames (uncompressed PNGs) from the final edit (an uncompressed progressive quicktime sequence). We ran experiments of different algorithms (Blackman, Lanczos) for enlarging the frames. We liked the results from the Blackman method best. Once the frames were ready I pulled the sequence into Quicktime, re-introduced the audio track, and produced the final 25fps video. This was saved as an uncompressed .mov file and placed in a HDCAM PAL sequence in Final Cut Pro for the post-production house (FinishEdit in Boston).

DigiBeta

L2 for London, +series for general screenings Uncompressed PAL quicktime movies were layed into FCP PAL sequences. The fcp project files and media were put on a drive and left with a post-production house (Point360 in Burbank) for shipping to London. The quality of this tape is unknown.

AppleTV

We tried VisualHub and MPEGStreamclip to produce these videos. Both command open-source video software suites (FFMPEG, MEncoder, LAME, etc.) to generate media, but MPEGStreamclip gives you more control over the settings. Note that the resulting files need to have the “loop” flag set using QT Pro and re-saved before being introduced to iTunes and trnasferred to the AppleTV device. The indirectness of this method makes us both uncomfortable.

iPod

The uncompressed SD video was put into VisualHub and the iPod setting was used to produce an H264 encoded video. A second file was generated with MPEGStreamclip.

NTSC

We tried hard to avoid this transfer mainly because we want people to focus on one area of compression artifacts at a time. Yet the pressures of distributing to the North American market have forced us to make an NTSC version. Here are some frame-grabs from both media. Note the aspect-ratio change and a few mouse-teeth and blended frames.

Thanks to Graeme Nattress for the effective software!

NTSC vs PAL for Lossless #2

Lossless #4

requires special treatment. Here's a script I whipped up to expand L4 from 25fps to 29.97:

import os, shutil
 
# expand L4 to 29.97 fps from 25fps 
# by adding a black frame every 6 frames
# (this is python)
 
# cd into the directory containing the frames then:
 
# build an array of all frames
palframes = []
 
# drop the filenames into the list
for i in range(1, 22278):
	filename = 'L4_%05d.tga' % (i)
	palframes.append(filename)
 
# insert a black frame every six frames
n = 1
for i in range(1,4967):
	palframes.insert(n,"black.tga")
	n=n+6
 
# now make a new sequence that includes the black frames in sequence	
i = 1
for eachframe in palframes:
	newframe = 'NTSC/L4_%05d.tga' % (i,)
	if os.path.isfile (eachframe):
		print "shutil.copy(%s,%s)" %(eachframe,newframe)
		shutil.copy(eachframe,newframe)
	i=i+1
import os, shutil,stat, os.path, glob
 
# expand 6fps animation to 29.97
# by multiplying the frames
 
# build an array of all frames
ntscframes = []
 
# get the existing frames (@ 6fps)
pathName 	= '/Volumes/vertov/Movies/_egehr/6pfs/'
png_files	= glob.glob(os.path.join(pathName,'*.png'))
png_files.sort()
 
# drop the filenames into the list
for i in range(0,26553):
	filename = 'L4_%05d.png' % (i)
	ntscframes.append(filename)
 
ntscframes.sort()
 
# reverse the sequence (for popping)
ntscframes.reverse()
 
for eachframe in png_files:
	# make five copies
	for f in range(0,5):
		if os.path.isfile (eachframe):
			newframe = ntscframes.pop()
			# make five new frames
			print "copy %s to %s" %(eachframe,newframe)
			shutil.copy(eachframe,newframe)
# then run this 
mencoder \
 mf://*.png -mf w=648:h=486:fps=29.97:type=png \
 -o ../sv_ntsc_GRAY.avi \
 -vf scale=648:486,harddup \
 -ovc lavc \
 -ofps 29.97 \
 -oac lavc \
 -lavdopts vismv=1:debug=32:gray \
 -noslices ;
mplayer \
 -lavdopts vismv=1:debug=32 \
 -vo png:z=1 ../sv_ntsc_GRAY.avi

After completing this programming pass we went back to the Serene Velocity source video (which was originally encoded at NTSC speed 29.97fps) and remade the whole video from scratch. It went something like this.

  1. output progressive PNG frames from the source
  2. remove frames containing pulldown artifacts
  3. replace the missing frames with neighboring copies
  4. make the video frames blue monotones
  5. show the sequence's motion vectors using the vismv=1:debug=32 lavd options
  6. pack the sequence into a QT movie
  7. employ AFX to map all blue color to black and increase the contrast of the vectors
  8. output the final, uncompressed NTSC video

motion vectors laying over a blue frame.

/var/www/cairn.com/lossless/data/pages/notes_on_preparing_the_media.txt · Last modified: 2008/10/20 02:20 by dgoodwin