2017-04-01 3 views
-1

Je suis en train de instancier un PHLivePhoto mais chaque fois que je tente de sauver la vidéo qui constitue la photo en direct, je ne peux pas le faire fonctionner.Comment enregistrer une vidéo sur une URL dans Playgrounds Swift

Voici un petit extrait de code que j'ai écrit que poignées exportation la vidéo:

public func exportFilteredVideo(to outputURL: URL, completion: @escaping (Void) -> Void) { 
    if FileManager.default.fileExists(atPath: outputURL.path) { 
     try? FileManager.default.removeItem(at: outputURL) 
    } 

    let export = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetMediumQuality)! 
    export.outputFileType = AVFileTypeQuickTimeMovie 
    export.outputURL = outputURL 
    export.videoComposition = generateComposition() 
    export.exportAsynchronously(completionHandler: completion) 
} 

C'est lorsque je tente de récupérer la vidéo:

let destURL = url.deletingLastPathComponent().appendingPathComponent("Test.mov") 
pixellationFilter.exportFilteredVideo(to: destURL) { 
    print(try! destURL.checkResourceIsReachable()) //An error is thrown! Why though, isn't the export completed? 
} 

Actuellement, mes soupçons sont vous pourriez ne pas être en mesure d'écrire au URL spécifié. Cependant, je crois comprendre que chaque fois que je veux créer un objet PHLivePhoto je besoin de préciser les ressources comme URL au lieu de Data. Si cela est possible, je serais en mesure d'utiliser plutôt les données au lieu de l'exporter vers un URL. Je peux me tromper, mais je ne trouve pas vraiment un moyen de créer un PHLivePhoto avec Data. Il y a une classe PHAssetResource mais qui aide seulement pour obtenir les fichiers de données du PHLivePhoto ne pas créer un PHLivePhoto.

Alors mes solutions possibles, je crois, à ce moment sont:

  1. Figure comment je peux enregistrer la vidéo en tant que URL.
  2. essayer de créer une photo en direct par Data au lieu de URL.
+0

l'URL fileURL où se trouvent les données –

+0

@LeoDabus D'accord, mais lors de la création d'une «PHLivePhoto», j'ai besoin d'utiliser cette méthode: 'request (avec URL de fichier de ressources: placeholder Image: target Taille: contenu Mode: résultat Gestionnaire:) '. Comme vous pouvez le voir, il prend un '[URL]' comme argument au lieu de 'Data'. – Harish

+0

@LeoDabus Voici la documentation pertinente: https://developer.apple.com/reference/photos/phlivephoto/1616434-request – Harish

Répondre

1

Le fileURL est à l'endroit où se trouvent les données. Il suffit d'écrire les données dans un temporary folder et de transmettre ce fichier à la méthode.