views:

1065

answers:

1

No, dropping the videos to

~/Library/Application Support/iPhone Simulator/3.2/Media/DCIM/100APPLE

does not work totally, because the simulator can see the video on Photos.app, but when I try to pick a video using UIImagePickerController my application crashes.

I think this may have some relation to the format the video has to have. I am using QuickTime to generate the video. I am using the settings "for iPhone"... so it is generating a M4V with 480x360 pixels H264. I have tried to create a MOV with the same characteristics and one with 640x480 but nothing works. I have also dropped a movie created with iPhone 3GS and it still crashes.

I have the file named as VID_0001.MOV, all uppercase.

this is the error I see when it crashes

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (1) beyond bounds (0)'

the method didFinishPickingMediaWithInfo is never called, so its some issue on the simulator or on the video. The app crashes as soon as I pick the video.

No solution for this question? c'mon guys! :-)

thanks.

+6  A: 

Took a sec (and some deviousness) but I figured it out. Put a video file into your application's Documents directory, I tried a .MOV but that didn't work, a .m4v worked. Then put this early in your app (I just stuck it in application:didFinishLaunchingWithOptions):

    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/myMovie.m4v"]];
    UISaveVideoAtPathToSavedPhotosAlbum(path, self, @selector(video:didFinishSavingWithError:contextInfo:), nil);

And add this function (so you can see if an error happened and why):

- (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    if (error != nil) {
        NSLog(@"Error: %@", error);
    }
}

Worked like a charm, I now have a video in my 'Saved Photos' on the simulator.

Shizam
That works so well:)
vodkhang