【问题标题】:How to pick videos in imagePicker如何在 imagePicker 中选择视频
【发布时间】:2012-07-11 06:51:22
【问题描述】:

这是我从 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];

但此代码在 Picker 中同时显示照片和视频。我只想显示视频。我怎样才能做到这一点?

【问题讨论】:

    标签: ios video uiimagepickercontroller


    【解决方案1】:

    如果你只想要视频,你应该添加:

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

    记得将MobileCoreServices 框架添加到您的项目中。

    编辑:

    您应该事先通过以下方法检查设备可以使用哪些类型。

    + (NSArray *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType
    

    它将返回一个包含设备支持的所有媒体类型的数组。

    【讨论】:

      【解决方案2】:

      试试这个

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

      【讨论】:

        【解决方案3】:
            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];
        }
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多