如何获取视频 PHAsset 磁盘文件大小?

Posted

技术标签:

【中文标题】如何获取视频 PHAsset 磁盘文件大小?【英文标题】:How to get a video PHAsset disk file size? 【发布时间】:2016-08-06 08:25:14 【问题描述】:

我正在尝试确定 PHAsset 视频磁盘上的文件大小。

以下代码返回错误“无法打开文件“IMG_0188.mov”,因为您没有查看权限。”

PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
            options.version = PHVideoRequestOptionsVersionOriginal;

            [[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset *avAsset, AVAudioMix *audioMix, NSDictionary *info) 
                videoURL = [(AVURLAsset*)avAsset URL];

                NSNumber *videoDiskFileSize;
                NSError *error;
                [videoURL getResourceValue:&videoDiskFileSize forKey:NSURLFileSizeKey error:&error];

                if(error)
                    NSLog(@"ERROR %@", error.localizedDescription);
                

                NSLog(@"size is %f",[videoDiskFileSize floatValue]/(1024.0*1024.0));
            ];

【问题讨论】:

【参考方案1】:

这是正确的做法。

PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
            options.version = PHVideoRequestOptionsVersionOriginal;

            [[PHImageManager defaultManager] requestExportSessionForVideo:asset options:options exportPreset:AVAssetExportPresetHighestQuality resultHandler:^(AVAssetExportSession *exportSession, NSDictionary *info) 
                CMTime videoDuration = CMTimeMultiplyByFloat64(exportSession.asset.duration, 1);
                exportSession.timeRange = CMTimeRangeMake(kCMTimeZero, videoDuration);
                NSLog(@"Byyte size = %lld", exportSession.estimatedOutputFileLength);

                videoSize = exportSession.estimatedOutputFileLength;
            ];

【讨论】:

出口是个坏主意

以上是关于如何获取视频 PHAsset 磁盘文件大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何从视频 URL 获取视频的 PHAsset?

如何上传 PHAsset(仅限视频和图像)?

从 PHAsset 获取视频时如何检测视频是不是为横向/纵向?

如何从 PHAsset 获取视频的缩略图?

如何使用 fetchAssetsWithALAssetURLs 获取 PHAsset

以自定义尺寸阅读图库视频