如何找到导出的电影在iOS上占用的内存大小?

时间:2014-11-23 09:00:10

标签: ios movie avassetexportsession

我正在使用AVAssetExportSession导出我选择的电影。如何获得导出的电影实际需要的字节数?

这是我的代码中的一个片段。请注意我:“exportSession.estimatedOutputFileLength”,但它只给出0。 此外,我需要一个确切的大小,而不是估计,所以即使它工作,我不确定这是正确的方法。

if ([compatiblePresets containsObject:AVAssetExportPresetLowQuality])
{
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:avAsset presetName:AVAssetExportPresetPassthrough];
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString* docsDir = [paths objectAtIndex:0];
    NSString* targetFileName = [[mediaPath.description lastPathComponent] stringByDeletingPathExtension];
    NSString* formattedFileName = [NSString stringWithFormat:@"%@.mp4", targetFileName];
    NSString* videoPath = [NSString stringWithFormat:@"%@/%@", docsDir, formattedFileName];
    exportSession.outputURL = [NSURL fileURLWithPath:videoPath];
    exportSession.outputFileType = AVFileTypeMPEG4;
    exportSession.shouldOptimizeForNetworkUse = NO;

    NSLog(@"file size = %lld", exportSession.estimatedOutputFileLength);}

1 个答案:

答案 0 :(得分:0)

在estimatedOutputFileLength之前尝试添加,您需要提供要导出的媒体范围

CMTime full = CMTimeMultiplyByFloat64(exportSession.asset.duration, 1);
exportSession.timeRange = CMTimeRangeMake(kCMTimeZero, full);

见下文 此外,您 使用 AVAssetExportPresetPassthrough ,因为

/ *表示导出文件的估计字节大小。导出预设为AVAssetExportPresetPassthrough或AVAssetExportPresetAppleProRes422LPCM时返回零。如果尚未设置timeRange属性的数值(即,无效,无限期或无限),则此属性也将返回零。 * /