我试图将大小限制AVAssetExportSession
为 10mb。不设置fileLengthLimit
,“导出完成”。设置后fileLengthLimit = 10*1024*1024
,“导出失败:无法打开”。
- (void) splitVideo{
AVURLAsset *videoAsset = [AVURLAsset URLAssetWithURL:output options:nil];
CMTime videoDuration = videoAsset.duration;
CMTime start = CMTimeMakeWithSeconds(0, 1);
CMTimeRange range = CMTimeRangeMake(start, videoDuration);
NSString *outputPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"output1.mp4"];
[self cutVideo:output withRange:range withOutput:outputPath];
}
- (void) cutVideo:(NSURL *)url withRange:(CMTimeRange)range withOutput:(NSString*)path{
AVAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:asset];
if ([compatiblePresets containsObject:AVAssetExportPresetHighestQuality]) {
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]
initWithAsset:asset presetName:AVAssetExportPresetPassthrough];
NSURL *finalUrl = [NSURL fileURLWithPath:path];
exportSession.outputURL = finalUrl;
exportSession.outputFileType = AVFileTypeMPEG4;
exportSession.fileLengthLimit = 10*1024*1024;
exportSession.timeRange = range;
[exportSession exportAsynchronouslyWithCompletionHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
});
if ([exportSession status] == AVAssetExportSessionStatusCompleted){
NSLog(@"Export completed");
}else if ([exportSession status] == AVAssetExportSessionStatusFailed){
NSLog(@"Export failed: %@", [[exportSession error] localizedDescription]);
}else if ([exportSession status] == AVAssetExportSessionStatusCancelled){
NSLog(@"Export canceled");
}
}];
}
}
导出的视频约为 25mb。