2012-07-11 22 views
1

這裏是我的代碼從imagePicker挑選視頻:如何挑選影片在imagePicker

imagepicker = [[UIImagePickerController alloc] init]; 
[imagepicker setDelegate:self];  

NSArray *mediaTypesAllowed = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
[imagepicker setMediaTypes:mediaTypesAllowed]; 

imagepicker.wantsFullScreenLayout = YES; 

pickImagePop = [[UIPopoverController alloc] initWithContentViewController:imagepicker]; 

[pickImagePop setDelegate:self]; 
[pickImagePop presentPopoverFromRect:CGRectMake(60, 100, 1, 20) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
[pickImagePop setPopoverContentSize:CGSizeMake(320, 400) animated:YES]; 

但這個代碼顯示的照片和視頻一起選擇器。我只想顯示視頻。我怎樣才能做到這一點?

回答

2

如果你只想要視頻你應該增加:

imagepicker.mediaTypes = 
[[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil]; 

記住的MobileCoreServices框架添加到項目中。

編輯:

您應事先檢查哪些類型可以通過該裝置用以下的方法來使用。

+ (NSArray *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType 

它將返回與由設備所支持的所有媒體類型的陣列。

0
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.delegate = self; 
    imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
    imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; 
    NSArray *sourceTypes = [UIImagePickerController availableMediaTypesForSourceType:imagePicker.sourceType]; 
    if (![sourceTypes containsObject:(NSString *)kUTTypeMovie ]) 
    { 
     //NSLog(@"no video"); 
    } 


    [self presentModalViewController:imagePicker animated:YES]; 




- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    { 
      NSString *type = [info objectForKey:UIImagePickerControllerMediaType]; 
      //NSLog(@"type=%@",type); 
      if ([type isEqualToString:(NSString *)kUTTypeVideo] || 
       [type isEqualToString:(NSString *)kUTTypeMovie]) 
      {// movie != video 
       NSURL *urlvideo = [info objectForKey:UIImagePickerControllerMediaURL]; 
} 
    } 
1

簡單地嘗試這

1.Add MobileCoreServices framework to your project and import to your view controller 
    #import <MobileCoreServices/UTCoreTypes.h> . 
2.Add this delegate methods in Interface 
    <UIImagePickerControllerDelegate, UINavigationControllerDelegate> 
3.Create a Button Action for Record Video and play video like this 

- (IBAction)recordVideo:(UIButton*)sender { 
    UIImagePickerController *videoScreen = [[UIImagePickerController alloc] init]; 
    videoScreen.sourceType = UIImagePickerControllerSourceTypeCamera; 

    // Displays movie capture control 
    videoScreen.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil]; 

    videoScreen.allowsEditing = NO; 
    videoScreen.delegate = self; 

    [self presentViewController:videoScreen animated: YES completion:NO]; 
} 

//ImagePickerDelegate 

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType]; 
    [self dismissViewControllerAnimated:NO completion:NO]; 
    // Handle a movie capture 
    if (CFStringCompare ((__bridge_retained CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo) { 
     NSString *moviePath = [[info objectForKey:UIImagePickerControllerMediaURL] path]; 
     if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(moviePath)) { 
      UISaveVideoAtPathToSavedPhotosAlbum(moviePath, self, nil, nil); 
     } 
    } 
} 
} 

- (IBAction)playVideo:(id)sender { 
    UIImagePickerController *mediaLibrary = [[UIImagePickerController alloc] init]; 
    mediaLibrary.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
    mediaLibrary.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil]; 

    mediaLibrary.allowsEditing = NO; 
    [self presentViewController:mediaLibrary animated:YES completion:NO]; 
}