Сокращайте AVAsset быстрее

У меня есть этот код для вырезания моего видео AVAsset:

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:_url options:nil];

[[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@",_url] error:nil];

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *outputURL = paths[0];
NSFileManager *manager = [NSFileManager defaultManager];
[manager createDirectoryAtPath:outputURL withIntermediateDirectories:YES attributes:nil error:nil];
outputURL = [outputURL stringByAppendingPathComponent:@"output.mp4"];
[manager removeItemAtPath:outputURL error:nil];

exportSession.outputURL = [NSURL fileURLWithPath:outputURL];
exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
CMTime start = CMTimeMakeWithSeconds(slider.min*(videoDuration-1), 600);
CMTime duration = CMTimeMakeWithSeconds(slider.max*(videoDuration-1), 600);
CMTimeRange range = CMTimeRangeMake(start, duration);
exportSession.timeRange = range;
[exportSession exportAsynchronouslyWithCompletionHandler:^(void) {
     switch (exportSession.status) {
         case AVAssetExportSessionStatusCompleted:

             _url = [NSURL URLWithString:[NSString stringWithFormat:@"file://%@",outputURL]];

             break;
         default:
             break;
     }

 }];

Проблема: требуется некоторое время, чтобы сохранить AVAsset по URL-адресу и перезагрузить его. Можно ли сделать быстрее?


person Peter    schedule 25.08.2016    source источник


Ответы (1)


Вы можете использовать AVAssetExportPresetPassthrough в качестве имени предустановки вместо AVAssetExportPresetHighestQuality. Таким образом, вы можете избежать дорогостоящего перекодирования. Установка временного диапазона может предотвратить это для некоторых форматов, но попробовать стоит.

person Rhythmic Fistman    schedule 25.08.2016