我必须从设备获取视频列表。我知道如何在UIImagePickerController的帮助下从相机胶卷中获取视频。但是,使用UIImagePickerController,我无法获得“视频”应用程序(标准iOS应用程序)中显示的视频。
我应该使用什么?我的目的是任何标准(或GitHub)控制器吗?
答案 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];
其中kUTTypeMovie
和kuTTypeImage
是MobileCoreServices框架的一部分。
答案 1 :(得分:1)
所以,我使用下一个代码来获取和枚举视频:
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];
}
}
然后我用已获取的电影列表创建了我自己的ViewController。
P.S。如果我错过了某些内容或发布了错误答案 - 请更正我