2012-05-07 16 views
24

से किसी भी वीडियो या मूवी फ़ाइल का चयन कैसे करें मेरे ऐप में, मुझे किसी भी वीडियो फ़ाइल का चयन करने और एप्लिकेशन में वीडियो फ़ाइल के लिए यूआरएल प्रदर्शित करने की आवश्यकता है।UIImagePickerController

-(void)viewDidLoad{ 

    [super viewDidLoad]; 

    self.imgPicker = [[UIImagePickerController alloc] init]; 
    self.imgPicker.delegate = self; 
    self.imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
    self.imgPicker.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeMovie, (NSString *)kUTTypeImage, nil]; 
    self.imgPicker.allowsEditing = NO; 

    [self presentModalViewController:self.imgPicker animated:YES]; 
} 

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ 

    [picker dismissModalViewControllerAnimated:YES]; 
} 


-(void)imagePickerController:(UIImagePickerController *)picker 
     didFinishPickingImage : (UIImage *)image 
       editingInfo:(NSDictionary *)editingInfo{ 

} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 

    value = 1; 

    IMAGE_COUNTER = IMAGE_COUNTER + 1; 

    NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
    if ([mediaType isEqualToString:@"public.movie" ]) 
    { 
     NSLog(@"Picked a movie at URL %@", [info objectForKey:UIImagePickerControllerMediaURL]); 
     NSURL *url = [info objectForKey:UIImagePickerControllerMediaURL]; 
     NSLog(@"> %@", [url absoluteString]); 
    } 

    else 
    { 
     UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

     NSData* imageData = UIImageJPEGRepresentation(image, 1.0); 

     NSString* incrementedImgStr = [NSString stringWithFormat: @"UserCustomPotraitPic%d.jpg", IMAGE_COUNTER]; 

     NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString* documentsDirectory = [paths objectAtIndex:0]; 

     NSString* fullPathToFile2 = [documentsDirectory stringByAppendingPathComponent:incrementedImgStr]; 
     [imageData writeToFile:fullPathToFile2 atomically:NO]; 
    } 
} 

मैं छवि और वीडियो प्रदर्शित करने के लिए ऊपर दिए गए कोड का इस्तेमाल किया है, हर चीज ठीक आ रहा है, लेकिन जब मैं किसी भी वीडियो फ़ाइल का चयन करें, यह UIImagePickerController प्रतिनिधि विधि की बात आती है नहीं था, वीडियो फ़ाइल सीधे निभाता है, मैं डॉन 'टी किसी भी वीडियो फ़ाइल खेलना चाहते हैं, जब मैं किसी भी वीडियो फ़ाइल का चयन करें इसे अपनी प्रतिनिधि संपत्ति में आना चाहिए

उत्तर

57

आईफोन लाइब्रेरी से वीडियो चुनना आईओएस सिम्युलेटर पर काम नहीं करता है। एक असली आईफोन पर कोशिश करो।

आईओएस फोटो लाइब्रेरी से वीडियो चुनने का कोड यहां है जिसे मैंने अपनी परियोजनाओं में उपयोग किया है। चयनकर्ता से अपने वांछित बटन पर बस वीडियो विधि जोड़ें।

- (void)video { 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.delegate = self; 
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    imagePicker.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie,  nil]; 

    [self presentModalViewController:imagePicker animated:YES]; 
} 


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType]; 

    if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo) { 
     NSURL *videoUrl=(NSURL*)[info objectForKey:UIImagePickerControllerMediaURL]; 
     NSString *moviePath = [videoUrl path]; 

     if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) { 
      UISaveVideoAtPathToSavedPhotosAlbum (moviePath, nil, nil, nil); 
     } 
    } 

    [self dismissModalViewControllerAnimated:YES]; 
    [picker release]; 
} 

स्ट्रिंग moviepath आप चयनित वीडियो जो कि वीडियो के साथ किसी भी इच्छित कार्य करने के लिए इस्तेमाल किया जा सकता है की राह देता है।

MobileCoreServices.framework अपनी परियोजना में फ्रेमवर्क जोड़ने के लिए मत भूलना! फिर इसे इस तरह आयात करें:

#import <MobileCoreServices/UTCoreTypes.h> 
+1

यदि आप एआरसी का उपयोग कर रहे हैं, तो आप मीडिया प्रकार की तुलना थोड़ा अधिक आसानी से कर सकते हैं। अगर ([मीडियाटाइप isEqualToString: (__ पुल एनएसएसटींग *) kUTTypeMovie]) { – averydev

+0

आप इस तरह की सरणी बनाने के लिए वाक्य रचनात्मक चीनी का भी उपयोग कर सकते हैं: 'imagePicker.mediaTypes = @ [(NSString *) kUTTypeMovie, (NSString *) kUTTypeImage];' (आदि, वांछित के रूप में प्रकार जोड़ें।) समान कार्यक्षमता, बस थोड़ा कम टाइपिंग।:) – Olie

+0

ग्रेट उत्तर :)। मैंने पाया कि picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum सेट करके; केवल वीडियो की एक सूची लाई और पाया कि यह मेरे लिए क्या उपयोगी था। ध्यान रखें कि विभिन्न स्रोत प्रकार अलग-अलग मेनू दिखाएंगे (मेरे लिए UIImagePickerControllerSourceTypePhotoLibrary का उपयोग करके मेरे फोटो एलबम लाए लेकिन फिर उन्हें वीडियो के खाली दिखाए गए) –

4

इस कोशिश: -

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]; 
} 
    } 
+0

धन्यवाद उत्तर के लिए धन्यवाद जिप्सा हालांकि यह काम नहीं कर रहा है, फिर भी यह किसी भी फिल्म का चयन करते समय प्रतिनिधि पद्धति के तहत नहीं आ रहा है, मेरे पास सिम्युलेटर – user1379448

+0

में 3 एम 4 वी फिल्में हैं। एच फाइल में आप लिखना नहीं भूल गए हैं: - Gypsa

+0

मैंने कार्यान्वित किया है कि हालांकि अभी भी कोई सफलता नहीं है, – user1379448

1

@ दिनेश कौशिक का कोड मेरी समस्या के साथ मदद करता है।

मैं बदल दिया है:

//NSArray * availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
     //imagePickerController.mediaTypes = availableMediaTypes; 

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

और केवल इस तरह से, मैं वीडियो को देखने और उसका चयन कर सकते हैं। अजीब

-4

UIImagePicker उपयोग नहीं करते, सिर्फ assetlibrary का उपयोग, कस्टम वीडियो पिकर, चयनित वीडियो फ़ाइल के लिए उपयोग सीधे लागू, वीडियो फ़ाइल बचाने के लिए और फ़ाइल अगर आप चाहते हैं compess ..

+6

ऐप्पल ने पहले से ही पहिया को फिर से शुरू क्यों किया? आज हम सभी को जल्दबाजी करने की जरूरत है और हम में से कई स्थायी रूप से एक तंग कार्यक्रम पर हैं। तो तैयार-लागू 'UIImagePickerController' का उपयोग करना निश्चित रूप से अच्छा अभ्यास है! एक महान प्लस के रूप में उपयोगकर्ता इस पिकर से अच्छी तरह से परिचित हैं। –

0

स्विफ्ट 3 अद्यतन:

func galleryVideo() 
{   
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.savedPhotosAlbum) { 

     let videoPicker = UIImagePickerController() 
     videoPicker.delegate = self 
     videoPicker.sourceType = .photoLibrary 
     videoPicker.mediaTypes = [kUTTypeMovie as String] 
     self.present(videoPicker, animated: true, completion: nil) 
    } 
} 

आयात आयात MobileCoreServices और जोड़ने प्रतिनिधियों UIImagePickerControllerDelegate और UINavigationControllerDelegate

संबंधित मुद्दे