A exportação de vídeo usando o PhotoKit (PHAsset) fornece diferentes arquivos de vídeo sempre
Eu uso o método (no final desta pergunta) para recuperar o vídeo do dispositivo. O que faz, encontra o primeiro vídeo na biblioteca, cria uma sessão de exportação e exporta o vídeo para um arquivo MOV.
Após duas execuções do aplicativo (interrompendo o aplicativo entre as execuções do método), dois arquivos resultantes estão sendo comparados. Ambos os arquivos são diferentes. Eu esperava que os dois arquivos fossem iguais, pois o mesmo ativo está sendo exportado.
Mais uma observação: executar o método duas vezes no mesmo aplicativo executa dois arquivos idênticos, conforme o esperado.
É possível fazer com que o PhotoKit exporte o mesmo arquivo toda vez que é executado?
- (void)testVideoRetrievalSO {
PHAsset *oneVideo = [[PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:nil] firstObject];
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
options.networkAccessAllowed = YES;
options.deliveryMode = PHVideoRequestOptionsDeliveryModeHighQualityFormat;
options.version = PHVideoRequestOptionsVersionOriginal;
[[PHImageManager defaultManager] requestExportSessionForVideo:oneVideo
options:options
exportPreset:AVAssetExportPresetPassthrough
resultHandler:
^(AVAssetExportSession * _Nullable exportSession, NSDictionary * _Nullable info) {
NSLog(@"Video test run on asset %@", oneVideo.localIdentifier);
NSString *folderPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *fileName = [[[NSUUID UUID] UUIDString] stringByAppendingPathExtension:@"mov"];
NSString *tempFile = [folderPath stringByAppendingPathComponent:fileName];
NSURL *tempFileUrl = [NSURL fileURLWithPath:tempFile];
[exportSession setOutputFileType:AVFileTypeQuickTimeMovie];
[exportSession setOutputURL:tempFileUrl];
[exportSession exportAsynchronouslyWithCompletionHandler:^{
NSLog(@"Video test run exported video into file: %@", tempFile);
}];
}];
}