2017-04-01 10 views
-1

PHLivePhotoをインスタンス化しようとしていますが、ライブ写真を構成するビデオを保存しようとすると、動作できなくなります。私は動画検索しようとすると、Swift PlaygroundsのURLにビデオを保存するには

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) 
} 

これは、次のとおりです:現在

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? 
} 

を私の疑惑があり、

ここで私はそれががビデオをエクスポート扱う書いた小さなコードスニペットです指定されたURLに書き込むことができない場合があります。しかし、私が理解することは、PHLivePhotoオブジェクトを作成したいときは、Dataの代わりにURLというリソースを指定する必要があるということです。これが可能であれば、データを代わりにURLにエクスポートする代わりに使用することができます。私は間違っている可能性がありますが、実際にでPHLivePhotoを作成する方法を見つけることはできません。 PHAssetResourceクラスがありますが、PHLivePhotoのデータファイルがPHLivePhotoを作成しないようにするのに役立ちます。

だから私はこの時点で信じている私の可能な解決策は以下のとおりです。私はURLとしてビデオを保存することができますどのように

  1. 図アウト。
  2. URLの代わりにDataでライブフォトを試してみてください。
+0

fileURLデータがあるところです –

+0

@LeoDabus合意しましたが、 'PHLivePhoto'を作成する際、このメソッドを使用する必要があります:' request(リソースファイルのURL:プレースホルダーImage:targetサイズ:コンテンツモード:結果ハンドラ:) '。見ての通り、 'Data'の代わりに' [URL] 'を引数にとります。 – Harish

+0

@LeoDabusここに関連文書があります:https://developer.apple.com/reference/photos/phlivephoto/1616434-request – Harish

答えて

1

ファイルURLは、データが置かれている場所です。 temporary folderにデータを書き込み、そのファイルURLをメソッドに渡すだけです。

関連する問題