簡體   English   中英

使用Swift將視頻文件保存到照片庫

[英]Saving video file to photo gallery using Swift

我正在處理一部20秒的視頻。 我正要將該視頻保存到我的照片庫中。 視頻修剪成功后,我需要調用此函數,任何人都可以幫助我在Swift中轉換以下代碼。 我粘貼了兩個版本的代碼,是否有人可以識別我的錯誤?

目標C

-(void)writeVideoToPhotoLibrary:(NSURL*)aURL
{
    NSURL *url = aURL;
    NSData *data = [NSData dataWithContentsOfURL:url];

    // Write it to cache directory
    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"file.mov"];
    [data writeToFile:path atomically:YES];

    NSLog(@"Path:%@",path);

    // After that use this path to save it to PhotoLibrary

    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    [library writeVideoAtPathToSavedPhotosAlbum:[NSURL fileURLWithPath:path] completionBlock:^(NSURL *assetURL, NSError *error) {

        if (error) {
            NSLog(@"%@", error.description);
        }else {
            NSLog(@"Done :)");
        }

    }];


}

迅速

 func SaveVideoToPhotoLibrary(outputFileURL: NSURL)

    {

        assetsLibrary = ALAssetsLibrary()

        let videoURL = outputFileURL as NSURL?

        if let library = assetsLibrary{

            if let url = videoURL{

                library.writeVideoAtPathToSavedPhotosAlbum(url,
                    completionBlock: {(url: NSURL!, error: NSError!) in

                        print(url)

                        if let theError = error{
                            print("Error happened while saving the video")
                            print("The error is = \(theError)")
                        } else {
                            print("no errors happened")
                        }

                })
            } else {
                print("Could not find the video in the app bundle")
            }

        }

            }
func saveToCameraRoll(URL: NSURL!) {
            NSLog("srcURL: %@", URL)
            var library: ALAssetsLibrary = ALAssetsLibrary()
            var videoWriteCompletionBlock: ALAssetsLibraryWriteVideoCompletionBlock = {(newURL: NSURL!, error: NSError!) in
                if (error != nil) {
            NSLog("Error writing image with metadata to Photo Library: %@", error)
        }
            else {
            NSLog("Wrote image with metadata to Photo Library %@", newURL.absoluteString!)
            }

            }
            if library.videoAtPathIsCompatibleWithSavedPhotosAlbum(URL) {
            library.writeVideoAtPathToSavedPhotosAlbum(URL, completionBlock: videoWriteCompletionBlock)
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM