tirsdag den 30. december 2008

iMovie'08 and dvd's.

I have a Sony harddisk recorder and I have until now been using Handbrake to pull recorded shows into my iPod (with a two-pass encoding which makes transitions nicer), but then I had to do the show editing on the harddisk recorder which was rather tedious.

It then turns out that iMovie 08 understands how to pull off movies from a DVD-based camcorder, which happens to be the same as inserting an unprotected DVD in the slot-in drive, which is great! Unfortunately iMovie'08 apparently very frequently crashes when reading such DVD's and it also happened for me when trying.

The stack trace looks like:
0 com.apple.MPEG2PSRADPlugin 0x1ab531a5 0x1ab51000 + 8613
1 com.apple.Foundation 0x969f1a07 -[NSObject(NSKeyValueCoding) valueForKey:] + 135
2 com.apple.proapps.MIO 0x1a14e8ed -[MIORADClipDataSourceContainer clipID] + 61
3 com.apple.proapps.MIO 0x1a140d04 -[MIORADClip valueInMetadataFileForProperty:] + 158
4 com.apple.proapps.MIO 0x1a13d9d4 -[MIORADClip inTC] + 56
5 com.apple.proapps.MIO 0x1a13e1c5 -[MIORADClip durationTC] + 41
6 com.apple.iMovie7 0x00027812 0x1000 + 157714
7 com.apple.iMovie7 0x00027736 0x1000 + 157494
8 com.apple.iMovie7 0x00025ebc 0x1000 + 151228
9 com.apple.iMovie7 0x0001ecf8 0x1000 + 122104
10 com.apple.Foundation 0x969cdf1c _nsnote_callback + 364
11 com.apple.CoreFoundation 0x956448da __CFXNotificationPost + 362
12 com.apple.CoreFoundation 0x95644bb3 _CFXNotificationPostNotification + 179
13 com.apple.Foundation 0x969cb080 -[NSNotificationCenter postNotificationName:object:userInfo:] + 128
14 com.apple.Foundation 0x969d48c8 -[NSNotificationCenter postNotificationName:object:] + 56
15 com.apple.iMovie7 0x0000fffb 0x1000 + 61435
16 com.apple.Foundation 0x96a4de94 _NSSetObjectValueAndNotify + 164
17 com.apple.iMovie7 0x000122cb 0x1000 + 70347
18 com.apple.Foundation 0x96a4eb0e NSKVONotify + 62
19 com.apple.Foundation 0x969cafd2 -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] + 546
20 com.apple.CoreFoundation 0x956ccdd9 -[CFXPreferencesPropertyListSource setValue:forKey:] + 73
21 com.apple.CoreFoundation 0x956ceb06 _CFXPreferencesSetValue + 102
22 com.apple.Foundation 0x96a27a91 -[NSUserDefaults(NSUserDefaults) setObject:forKey:] + 113
23 com.apple.iMovie7 0x0000f502 0x1000 + 58626
24 com.apple.iMovie7 0x001540a9 0x1000 + 1388713
25 com.apple.AppKit 0x94d5753b -[NSApplication sendAction:to:from:] + 112
26 com.apple.AppKit 0x94d57478 -[NSControl sendAction:to:] + 108
27 com.apple.AppKit 0x94d572fe -[NSCell _sendActionFrom:] + 169
28 com.apple.AppKit 0x94d56957 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 1827
29 com.apple.AppKit 0x94d561aa -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 541
30 com.apple.AppKit 0x94d55a64 -[NSControl mouseDown:] + 888
31 com.apple.AppKit 0x94d541a3 -[NSWindow sendEvent:] + 5381
32 com.apple.AppKit 0x94d20d49 -[NSApplication sendEvent:] + 2941
33 com.apple.iMovie7 0x00031cda 0x1000 + 199898
34 com.apple.AppKit 0x94c7e69f -[NSApplication run] + 847
35 com.apple.AppKit 0x94c4b8a4 NSApplicationMain + 574
36 com.apple.iMovie7 0x00005474 0x1000 + 17524
37 com.apple.iMovie7 0x00002e92 0x1000 + 7826
38 com.apple.iMovie7 0x00002db9 0x1000 + 7609

The method names in the stack trace indicates that there was a problematic key-value pair in the data stored about the movie snippets which from visual inspection appears to happen when creating miniatures in the scan process.

I then did some trial-and-error and found that
  • Removing menus did not influence the crashing.
  • By splitting up a recording in pieces - thinking that the length of the movie was the troublesome meta data- iMovie didn't crash while scanning and allowed me to pull in the pieces.
  • The "create miniatures" post processing then hanged. The progress bar kept moving from about 65% to 70%, and then jumping back to 65%. Right-clicking on iMovie and telling it to "Stop" made the process finish without stopping iMovie.
Right now I believe that it is only in some places that the problem is present, and that the splitting caused the miniature generation to look in untroubled locations allowing me to finish. If it is a missing value for a given key, or an unexpected value of a given key, is too early to tell yet.

For now I am leaving this - I got the songs on the iPod I wanted :) - but I think that the next step would be to isolate a small clip with this problem, and then look into the MPEG stream to see if there is anything out of the ordinary.

Ingen kommentarer: