|Convert 8mm film to DVD (the hard way)|
It all started when my wife was trying to figure out a good present to get her parents for Christmas this year. A couple of months ago, she came across several dozen boxes of 3in reel 8mm files that were taken in the mid to late 1950's. We initially thought about sending them out to have them converted by a professional, but with the number of reels, it was quickly apparent that this would be cost prohibitive. I spent the next couple of days searching for solutions and came across the Wolverine Data MovieMaker Pro.
It was a bit over the Christmas budget, but her brother offered to chip in. Wolverine has two different models, the Wolverine 8mm and Super 8, and the Movie Maker Pro. From what I researched, the only difference between the two units is that the Pro version has two motors (one for each reel), as opposed to the other version, which uses a belt drive for both reels to a single motor. There were a couple of complaints about the belt slipping or getting loose over time, so I opted for the Pro version.
We received the unit directly from Wolverine just short of week after ordering. At the time, my wife's parents were out of town and she managed to grab a couple of reels that were labeled "Christmas". We thought we could play these while opening presents so we could show them what the exactly this unit does.
The premise is pretty simple. Load the reel, and center the frame using the buttons and LCD screen on the unit. Once everything is lined up where you want it, it's a matter of just start the scanning. As each frame passes through, a picture is taken and appended to a MP4 file on an inserted SD-Card. Photos and MP4 are encoded at 1440x1040 at 20fps. This process is actually pretty quick, taking around 20-30 minutes for a 3in reel.
The Conversion Begins
I'd like to say that this is a "fire and forget" process, but it is not. Keeping in mind that these films have been around for over 50 years, the feeder tends to be a little fickle. By that, I mean some reels process without any interaction, while others you have to babysit the entire time. After a couple of reels, I figured out through trial and error that if you apply a little lateral pressure to the film coming off of the source reel, this resolves a lot of the problems with feed slippage/skipping. In my case, I just used a salt shaker to direct the film a little forward.
Another point to consider is that this is a not a professional multi-thousand dollar unit. Do not expect perfect results. I found that some films tend to "creep" after some time, either showing the top/bottom of the adjacent frame or sides of the frame. Each time, I was forced to stop the conversion and use the on-board software to adjust the frame size/location, and in some cases (when I wasn't paying attention) re position the film.
The Wolverine unit does not have the ability to input the names of the video files. The filenames just consists of a incrementing number, eg. 0001.MP4, 0002.MP4. So if you are dealing with several clips on several reels, you may want to take notes. Considering the panel consists of just a couple of buttons, this seems like a logical solution.
MP4 Clean Up
I use FreeBSD almost exclusively at work, so most of my desktops at work and at home run the OS. I'm also a huge fan of FFmpeg software. This is command line video editing that is a Swiss Army knife of video/audio processing. There are some front-ends available for just about every OS, but I'm a sadist and prefer to do everything using a keyboard.
The first two things to do is downsize the video and adjust the frames per second. If I was to keep the videos at 20fps, when you play them on a TV they will appear sped up. For my initial conversion, I ended up with 25 MP4 videos. To streamline to process, I scripted out the scaling and frame rate change:
The "scale=720:-1" scales the video to 720 wide keeping the aspect ratio. The final videos comes out as 720x540. The script just rescales and adjust the frame rate of each video in the current directory prefixing each video with "scale_". So the new 0040.MP4 video is now named scale_0040.mp4. I just ran the script and let it do its thing. Here's an animated gif sample of the video (scaled down to 320x240):
A couple of things stand out is this clip. First of all is the unknown kid blocking the frame. Second is the black bar at the top. This is the frame "creeping" that I talked about earlier. The third and final issue is that the video is pretty shaky. Lets skip past the kid and crop out the black bar:
I prefixed the filename with "crop_" to keep track which filters have been applied to each video. To determine where to skip, I used ffplay and just noted the run-time when the kid was out of the picture (1.82 seconds). Here's what the sample now looks like:
Now that the kid and the frame bar at the top of the screen have been dispatched, let's stabilize the video:
The first ffmpeg command creates a filed called transform_vectors.trf that contains a vector map of frame movements. The second command takes that file and smooths out the movements over a specified number of frames. Here's a side by side comparison of before and after the stabilization:
I spent several days experimenting with the variables to figure out what does what. The documentation is pretty good, but I found that just setting each variable to a extremely high number one at a time gives you an idea of what is going on. As a side note, try setting crop=black and zoom=-40 on the second command to show how frames are adjusted. Also, you can set show=1 and add a filename to the first command to visually show the vector mapping.
From there it's rinse and repeat for each video. Some video may not need to be touched at all, other may need the full gamut of filters to clean them up. Some other filters that may come in handy:
owdenoise : Reduces video noise. Surprisingly, I found this worked better than hqdn3d in my case.
deficker : Reduces video flicker.
For a full list of filters and information about them, please visit: https://ffmpeg.org/ffmpeg-filters.html
The nicest thing about the conversion process regarding 8mm films is that there is no sound. So there is no need to worry about audio syncing issues and multiplexing video.
Converting to DVD
Now that we have our MP4 videos cleaned up, we need to convert them to MPEG2 videos and create a DVD structure. Honestly, I was crunched for time and broke down and used DeVeDe to do the MP4 to MPEG2 conversion and DVD layout all in one process. But, now as I'm typing this, let's do this using the command line.
Converting to MPEG2 is pretty painless:
To create the DVD file structure, two other programs are used:
dvdauthor - http://dvdauthor.sourceforge.net/
mkisofs - http://cdrtools.sourceforge.net/private/cdrecord.html
We'll need to create a basic DVD layout in XML for the DVD structure. After a couple of tries, I managed this very basic layout conveniently called layout.xml:
I then created a directory within my current directory called "dvd". In this layout, each video file is it's own chapter. Creating the DVD structure is as easy as:
I did get several warnings concerning aspect ratio, though the finished DVD displayed just fine for me. To convert the DVD structure to a burnable ISO image, we just run:
Now we have a burnable ISO image. That's pretty much the entire process. So to recap, here is my workflow: