Table of Contents

archiving mini dv

This details how I'm pulling all video off of my mini dv tapes for easy access on my computers or PS3.

  1. rip footage to iMovie
  2. re-encode .dv files with MPEG Streamclip
  3. rename files according to my archive scheme
  4. I then use MediaTomb to automatically read certain directories and make these videos available for my PS3 to stream

iMovie

  1. Open a new iMovie project, in either DV or DV Widescreen format (depending on how you recorded the video onto your tape)
  2. Allow iMovie to import the entire tape into clips
  3. Save the project and close iMovie

MPEG Streamclip

  1. create a preset with the following:
    • MPEG-4 container
    • H.264 video encoding
    • AAC audio encoding, stereo, 128 kbps
    • 60% Quality
    • Multipass
    • Limit Data Rate to 1000 Kbps
    • Deinterlace Video
    • 640 x 480 (4:3) frame size (or 854 x 480, 16:9 for widescreen)
  2. if encoding many files
    1. go to List → Batch List
    2. click the Add Files… button
    3. select “All Files” from the filter at the bottom
    4. go to where your iMovie project is and expand to the Media folder (or open any folder with the files you want to encode if you didn't use iMovie)
    5. select all files and click “To Batch”
    6. select Export to MPEG-4 as the task and click OK
    7. click Presets…
    8. select your preset and click Load
    9. click To Batch
    10. click start to begin encoding all files in the batch
  3. if encoding one file
    1. open a single file
    2. go to File → Export to MPEG-4…
    3. click Presets…
    4. select your preset and click Load
    5. click Make MP4

rename files

All of my dv tapes are numbered, such as 001, 013, 021, etc… I put the encoded files into a folder of the same name. I then wrote a php script that would take the iMovie named files such as Clip 01.dv (which after encoding is probably Clip 01.mp4), and name them as 001_01.mp4.

rename_home_movies.php

<?php
 
/* usage: php rename_home_movies.php <dirname>
 *
 * all files in <dirname> will be renamed if they begin with "Clip " to 
 * "dirname_" + file suffix
 */
 
if( !isset($argc) || $argc < 2 )
	exit(basename(__FILE__) . " <dir>\n");
 
if( !is_dir($argv[1]) || !is_readable($argv[1]) )
	exit("$argv[1] is not a readable directory\n");
 
$dirpath = $argv[1];
 
chdir($dirpath);
$dh = opendir($dirpath);
$dirname = str_replace(realpath("../") . "/", "", realpath("."));
 
$noFilesRenamed = true;
 
while( $file = readdir($dh) ){
	if( preg_match("/^Clip (.*)$/", $file, $matches) == 0 )
		continue;
 
	$newName = "{$dirname}_{$matches[1]}";
 
	$result = rename($file, $newName);
	// $result = true; // use this line to test
 
	if( !$result ){
		echo "FAILED to rename $file\n";
	}else{
		echo "renamed $file to $newName\n";
		$noFilesRenamed = false;
	}
 
}
 
closedir($dh);
 
if( $noFilesRenamed )
	echo "no files were found to rename\n";

See Also