美文网首页
从相册里获取所有的视频并展示

从相册里获取所有的视频并展示

作者: 神一样的队友 | 来源:发表于2019-08-02 16:02 被阅读0次

    从相册里获取所有的视频并展示

    需要引入#import <Photos/Photos.h> 这个库

     PHFetchOptions *options = [[PHFetchOptions alloc] init];

       options.predicate = [NSPredicate predicateWithFormat:@"mediaType == %ld",PHAssetMediaTypeVideo];

        options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];

        PHFetchResult*assetsFetchResults = [PHAssetfetchAssetsWithOptions:options];

        __block  NSInteger count = assetsFetchResults.count;

        for(NSIntegeri =0; i < assetsFetchResults.count; i++) {

               PHAsset*phAsset = assetsFetchResults[i];

                //获取图片后处理

                PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];

                options.version = PHImageRequestOptionsVersionCurrent;

                options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic;                   

    PHCachingImageManager *manager = [[PHCachingImageManager alloc]init];

            [manager requestPlayerItemForVideo:phAssetoptions:optionsresultHandler:^(AVPlayerItem*_NullableplayerItem,NSDictionary*_Nullableinfo) {

                    AVURLAsset*urlAsset =  (AVURLAsset*)playerItem.asset;

                    CMTime timeStr = [playerItem.asset  duration];

                    //url

                    NSURL*url = urlAsset.URL;

                    if(url !=nil) {

                        NSIntegerdTotalSeconds =CMTimeGetSeconds(timeStr);

                        NSIntegerdHours =floor(dTotalSeconds /3600);

                        NSIntegerdMinutes =floor(dTotalSeconds %3600/60);

                        NSIntegerdSeconds =floor(dTotalSeconds %3600%60);

                        //时长

                        NSString*videoDurationText = [NSString stringWithFormat:@"%ld:%ld:%ld",dHours, dMinutes, dSeconds];

                        NSDictionary*dic =@{@"time":videoDurationText,@"url":url};

                        [self.videoArraddObject:dic];

                    }else{

                        count = count-1;

                    }

                    if(count ==self.videoArr.count) {

                        NSLog(@"videoArr.count == %ld",self.videoArr.count);

                        [self.collectionViewreloadData];

                    }

                }];

        }

    相关文章

      网友评论

          本文标题:从相册里获取所有的视频并展示

          本文链接:https://www.haomeiwen.com/subject/liwldctx.html