问题
I am succeeding in understanding how to make a camera app in my learning journey:-)
The only thing I am stuck with is saving a video that I have recorded. I am able to save a photo, but the same does not work for videos.
So I think I have almost got it with the help of iBrad Apps.
got this code:
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
[self dismissModalViewControllerAnimated:YES];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = [info
objectForKey:UIImagePickerControllerOriginalImage];
imageView.image = image;
if (newMedia)
UIImageWriteToSavedPhotosAlbum(image,
self,
@selector(image:finishedSavingWithError:contextInfo:),
nil);
}
else{
if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) {
UIImage *movie = [info
objectForKey:UIImagePickerControllerQualityTypeHigh];
videoRecorder2.image = movie;
if (newMedia)
UISaveVideoAtPathToSavedPhotosAlbum(movie,
self,
@selector(movie:finishedSavingWithError:contextInfo:),
nil);
}}}
I have an if statement because the app can take both video and still images.
The first part is for still - which works and then the second part I am still tutu-ing with:-)
回答1:
Try this:
UISaveVideoAtPathToSavedPhotosAlbum(moviepath,nil,nil,nil);
Edit: Try this and modify your code to this method:
// For responding to the user tapping Cancel.
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker {
[[picker parentViewController] dismissModalViewControllerAnimated: YES];
[picker release];
}
// For responding to the user accepting a newly-captured picture or movie
- (void) imagePickerController: (UIImagePickerController *) picker
didFinishPickingMediaWithInfo: (NSDictionary *) info {
NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
UIImage *originalImage, *editedImage, *imageToSave;
// Handle a still image capture
if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0)
== kCFCompareEqualTo) {
editedImage = (UIImage *) [info objectForKey:
UIImagePickerControllerEditedImage];
originalImage = (UIImage *) [info objectForKey:
UIImagePickerControllerOriginalImage];
if (editedImage) {
imageToSave = editedImage;
} else {
imageToSave = originalImage;
}
// Save the new image (original or edited) to the Camera Roll
UIImageWriteToSavedPhotosAlbum (imageToSave, nil, nil , nil);
}
// Handle a movie capture
if (CFStringCompare ((CFStringRef) mediaType, kUTTypeMovie, 0)
== kCFCompareEqualTo) {
NSString *moviePath = [[info objectForKey:
UIImagePickerControllerMediaURL] path];
if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {
UISaveVideoAtPathToSavedPhotosAlbum (
moviePath, nil, nil, nil);
}
}
[[picker parentViewController] dismissModalViewControllerAnimated: YES];
[picker release];
}
来源:https://stackoverflow.com/questions/8304164/save-a-video-that-i-record-in-my-app