Das Exportieren von Videos mit PhotoKit (PHAsset) liefert jedes Mal eine andere Videodatei

Ich verwende die Methode (am Ende dieser Frage), um Videos vom Gerät abzurufen. Dabei wird das erste Video in der Bibliothek gefunden, eine Exportsitzung erstellt und das Video in eine MOV-Datei exportiert.

Nach zwei Anwendungsläufen (Anhalten der Anwendung zwischen den Methodenläufen) werden zwei resultierende Dateien verglichen. Beide Dateien sind unterschiedlich. Ich hatte erwartet, dass beide Dateien identisch sind, da das gleiche Asset exportiert wird.

Eine weitere Bemerkung: Wenn Sie die Methode zweimal in derselben Anwendung ausführen, erhalte ich erwartungsgemäß zwei identische Dateien.

Ist es möglich, PhotoKit so zu konfigurieren, dass es bei jeder Ausführung dieselbe Datei exportiert?

- (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);
         }];
     }];
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage