Если вы используете AVFoundation
и AssetLibrary, вы можете перечислить все активы, применить фильтр только для видео и получить продолжительность каждого видео с помощью метода - (id)valueForProperty:(NSString *)property
. Передайте ALAssetPropertyDuration
для собственности. Приведенный ниже код выводит на консоль следующее:
видеоклип номер 0 равен 66.80833333333334 секунд
видеоклип номер 1 составляет 190,06 секунд
видеоклип № 2 составляет 13,74 секунды
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
if (!assetItems) {
assetItems = [[NSMutableArray alloc] init];
} else {
[assetItems removeAllObjects];
}
if (!assetLibrary) {
assetLibrary = [[ALAssetsLibrary alloc] init];
}
ALAssetsLibraryGroupsEnumerationResultsBlock listBlock = ^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
[group setAssetsFilter:[ALAssetsFilter allVideos]];
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
[assetItems addObject:result];
NSString *duration = [result valueForProperty:ALAssetPropertyDuration];
NSLog(@"video clip number %d is %@ seconds\n",index, duration);
}
}];
}
};
ALAssetsLibraryAccessFailureBlock failBlock = ^(NSError *error) { // error handler block
NSString *errorTitle = [error localizedDescription];
NSString *errorMessage = [error localizedRecoverySuggestion];
NSLog(@"%@...\n %@\n",errorTitle,errorMessage);
};
[assetLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:listBlock failureBlock:failBlock];
}