我正在使用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);}
答案 0 :(得分:0)
在estimatedOutputFileLength之前尝试添加,您需要提供要导出的媒体范围
CMTime full = CMTimeMultiplyByFloat64(exportSession.asset.duration, 1);
exportSession.timeRange = CMTimeRangeMake(kCMTimeZero, full);
见下文 此外,您 使用 AVAssetExportPresetPassthrough ,因为
/ *表示导出文件的估计字节大小。导出预设为AVAssetExportPresetPassthrough或AVAssetExportPresetAppleProRes422LPCM时返回零。如果尚未设置timeRange属性的数值(即,无效,无限期或无限),则此属性也将返回零。 * /