iOS有什么方法可以检索所有视频吗?

时间:2015-02-08 09:51:32

标签: ios video movie

我必须从设备获取视频列表。我知道如何在UIImagePickerController的帮助下从相机胶卷中获取视频。但是,使用UIImagePickerController,我无法获得“视频”应用程序(标准iOS应用程序)中显示的视频。

我应该使用什么?我的目的是任何标准(或GitHub)控制器吗?

2 个答案:

答案 0 :(得分:1)

您可以通过ALAssetsLibrary对象枚举以获取所有视频,例如:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init];
NSMutableArray* videoAssets = [[NSMutableArray alloc] init];

[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { 
     if (group) {
         [group setAssetsFilter:[ALAssetsFilter allVideos]];    
         [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) { 
              if (asset) {
                  [videoAssets addObject:asset];
              }
         }];
     }
}

然后,如果你想要一个视频网址,你可以使用[[asset defaultRepresentation] url]从资产中访问它。

更新:默认情况下,您的UIImagePickerController只会显示包含照片的照片和相册,但如果您还指定自己喜欢UIImagePickerController,则会出现“视频”相册{1}}显示视频,例如:

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

[self presentViewController:imagePicker animated:true completion:nil];

其中kUTTypeMoviekuTTypeImage是MobileCoreServices框架的一部分。

答案 1 :(得分:1)

Okey,最后在 Lyndsey Scott 的帮助下,我回答了我自己的问题:

  1. 没有标准控件可以从媒体库中获取视频(UIImagePickerController仅从相机胶卷或相册中获取视频)。
  2. 所以,我使用下一个代码来获取和枚举视频:

    MPMediaQuery *videoQuery = [[MPMediaQuery alloc] init];
    
    NSMutableArray *items = [NSMutableArray arrayWithCapacity:0];
    NSArray *mediaItems = [videoQuery items];
    
    // Maybe do something with title and URL
    for (MPMediaItem *mediaItem in mediaItems) {
        NSURL *URL = (NSURL*)[mediaItem valueForProperty:MPMediaItemPropertyAssetURL];
        if (URL) {
            NSString *title = (NSString*)[mediaItem valueForProperty:MPMediaItemPropertyTitle];
        }
    }
    
  3. 然后我用已获取的电影列表创建了我自己的ViewController。

    P.S。如果我错过了某些内容或发布了错误答案 - 请更正我