我正在制作一款相机应用,我想要了解用户在iPhone上创建的所有视频。
目前我的代码仅从用户Camera Roll获取视频。我的一些用户抱怨他们在Photo Album应用程序下创建了多个自定义文件夹,并在那里存储了一些视频。由于我的代码仅查看“相机胶卷”,因此它不会从其他文件夹中拾取影片。我可以到他们的其他文件夹吗?
这是我到目前为止所做的。
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
[group enumerateAssetsUsingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop)
{
if (alAsset)
{
ALAssetRepresentation *representation =[alAsset defaultRepresentation];
NSURL *url = [representation url];
NSString *assetType=[alAsset valueForProperty:ALAssetPropertyType];
//videos only
if ([assetType isEqualToString:@"ALAssetTypeVideo"])
{
.....
答案 0 :(得分:2)
你必须为资产创建一个过滤器,如下所示:
ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
ALAssetsFilter *allVideosFilter = [ALAssetsFilter allVideos];
[group setAssetsFilter:allVideosFilter];
//...
};
过滤器选项包括: - allAssets - allVideos - allPhotos
希望这有帮助
答案 1 :(得分:1)
要获取从iTunes同步的媒体,您需要使用ALAssetsGroupLibrary。 Here您可以找到ALAssetsGroupType的所有可能变体。所以只需改变
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:...
到
[library enumerateGroupsWithTypes:(ALAssetsGroupSavedPhotos | ALAssetsGroupLibrary) usingBlock:...
答案 2 :(得分:0)
这将检索所有视频,包括用户已从iTunes同步的所有视频:
// Enumerate just the photos and videos by using ALAssetsGroupSavedPhotos
[library enumerateGroupsWithTypes:ALAssetsGroupAll | ALAssetsGroupLibrary
usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
if (group != nil)
{
// Within the group enumeration block, filter to enumerate just videos.
[group setAssetsFilter:[ALAssetsFilter allVideos]];
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
// Do whatever you need to with `result`
}
}];
} else {
// If group is nil, we're done enumerating
// e.g. if you're using a UICollectionView reload it here
[collectionView reloadData];
}
} failureBlock:^(NSError *error) {
// If the user denied the authorization request
NSLog(@"Authorization declined");
}];
请注意ALAssetsGroupAll | ALAssetsGroupLibrary
。
根据docs ALAssetsGroupAll
"与将ALAssetsGroupLibrary
"除外的所有组类型进行OR运算相同。因此,我们还添加ALAssetsGroupLibrary
,其中"包括从iTunes"同步的所有资产。