Я записал видео в 120FPS. Это SLOW_Mo видео. ЕСЛИ я экспортирую это видео в CameraRoll, используя PHImageManager. Все нормально, как VIDEO Effect - slow_mo. Я могу играть в нее, используя QuickPlayer и AVPlayer, и эффект составляет 120FPS.
Это мой рабочий код:
PHAsset *oneVideo = [[PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:nil] lastObject];
PHVideoRequestOptions *options = [PHVideoRequestOptions new];
options.networkAccessAllowed = YES;
options.version = PHVideoRequestOptionsVersionCurrent;
options.deliveryMode = PHVideoRequestOptionsDeliveryModeHighQualityFormat;
[[PHImageManager defaultManager] requestAVAssetForVideo:oneVideo options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
if(([asset isKindOfClass:[AVComposition class]])){
BOOL bResult = FALSE;
DebugLog(@"\navPlayer.outputFileURL.absoluteString:%@", URl);
bResult = [[NSFileManager defaultManager] removeItemAtURL:URl error:nil];
DebugLog(@"\nremoveItemAtPath:%d", bResult);
//Begin slow mo video export
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];
exporter.outputURL = avPlayer.outputFileURL;
// exporter.outputURL = urlFirstVideoPath;
exporter.outputFileType = AVFileTypeQuickTimeMovie;
exporter.shouldOptimizeForNetworkUse = YES;
[exporter exportAsynchronouslyWithCompletionHandler:^{
NSLog(@"Video test run exported video into file: %@", exporter.outputURL);
NSLog(@"exportSession.status: %ld", (long)exporter.status);
dispatch_async(dispatch_get_main_queue(), ^{
if (exporter.status == AVAssetExportSessionStatusCompleted) {
NSLog(@"exportSession.status: okkkkkkk");
}
});
}];
}
}];
СЕЙЧАС Я не хочу сохранять это видео в CAMERAROLL. Я сохранил видео в папке «Документ». и получить AVAssets. Но эффект не медленный_mo 120FPS Я читал об этом и получил, что я должен использовать AVComposition для экспорта видео slow_mo. но я не могу этого сделать. Ниже мой НЕ рабочий код.
AVAsset *assetURL = [AVURLAsset URLAssetWithURL:URl options:nil];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = paths.firstObject;
NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"mergeSlowMoVideo-%d.mov",arc4random() % 1000]];
NSURL *_filePath = [NSURL fileURLWithPath:myPathDocs];
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:assetURL presetName:AVAssetExportPresetHighestQuality];
exporter.outputURL = _filePath;
exporter.outputFileType = AVFileTypeQuickTimeMovie;
exporter.shouldOptimizeForNetworkUse = YES;
[exporter exportAsynchronouslyWithCompletionHandler:^{ //start
NSLog(@"Export failed: %@", [[exporter error] localizedDescription]);
NSLog(@"Video test run exported video into file: %@", exporter.outputURL);
NSLog(@"export %ld", (long)exporter.status);
dispatch_async(dispatch_get_main_queue(), ^{
if (exporter.status == AVAssetExportSessionStatusCompleted) {
}
});
}];
Пожалуйста, помогите мне любой эксперт.
ОБНОВЛЕНИЕ: это моя актуальная проблема.
В этом вопросе содержится мое объяснение фактической проблемы