如何将 mp4 文件从文档复制到照片库(在 iPhone 中)?

Posted

技术标签:

【中文标题】如何将 mp4 文件从文档复制到照片库(在 iPhone 中)?【英文标题】:how can I copy mp4 file from documents to photolibrary (in iPhone)? 【发布时间】:2013-02-20 09:35:33 【问题描述】:

我的应用程序中有一个 mp4 视频(位于 Document 文件夹中)!我想将其复制或移动到 Photolibrary... 我怎样才能做到这一点?请帮帮我!

【问题讨论】:

【参考方案1】:

如果你不想使用 assest 库,这里是代码

 NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
 NSString *videoFile = [documentDirectory stringByAppendingPathComponent:@"video.mp4"];
 UISaveVideoAtPathToSavedPhotosAlbum(videoFile, self, @selector(video:didFinishSavingWithError:contextInfo:), nil);


- (void)video:(NSString *) videoPath didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo 
     if(error)
           NSLog(@\"didFinishSavingWithError: %@\", error);

【讨论】:

UISaveVideoAtPathToSavedPhotosAlbum 对我不起作用:(!而且也没有发生错误...... 也可以使用UIVideoAtPathIsCompatibleWithSavedPhotosAlbum函数来检查视频是否兼容。【参考方案2】:

我认为你可以使用:

- (void)writeVideoAtPathToSavedPhotosAlbum:(NSURL *)videoPathURL completionBlock:(ALAssetsLibraryWriteVideoCompletionBlock)completionBlock

来自ALAssetsLibrary的方法

【讨论】:

如何使用 ALAssetsLibrary?【参考方案3】:

要移动到照片库(在 ios 中称为相机胶卷):

NSString *fileURLString = @"file://....somepath.../somefile.mp4";
NSURL *fileURL = [NSURL URLWithString:fileURLString];

// Check compatibility
if ([[ALAssetsLibrary new] videoAtPathIsCompatibleWithSavedPhotosAlbum:fileURL]) 
    // Save to Photo Library / Camera Roll
    [[ALAssetsLibrary new] writeVideoAtPathToSavedPhotosAlbum:fileURL completionBlock:nil];
 else 
    NSLog(@"Incompatible type. Cannot save to Photo Library.");

要复制到任何文件夹,尽管您可能不想这样做:

NSFileManager *fileManager = [NSFilemanager defaultManager];
NSURL *originalDirectory = [NSURL fileURLWithPath:@"/originalDir/filename.mp4"];
NSURL *newDirectory = [NSURL fileURLWithPath:@"/newDirectory/filename.mp4"];

[fileManager moveItemAtURL:originalDirectory toURL:newDirectory error:nil];

如果您需要先下载,请执行以下操作:

如下使用ALAssetsLibrary

  #import <AssetsLibrary/AssetsLibrary.h>
  // ...
  ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
  [assetsLibrary writeVideoAtPathToSavedPhotosAlbum:yourVideoURL completionBlock:^(NSURL *assetURL, NSError *error)
    if (error) 
      // Do something, like show an Alert View describing the error
    
  ];

【讨论】:

以上是关于如何将 mp4 文件从文档复制到照片库(在 iPhone 中)?的主要内容,如果未能解决你的问题,请参考以下文章

将文件从临时 url 复制到文档目录总是抛出。 NSURLSessionDownloadTask

如何将图片从图片库保存到应用程序的文档文件夹中

如何将照片库中的图像保存到应用程序的文档文件夹

如何从 iPhone 照片库中删除照片

ffmpeg 从 MOV 转换为 mp4 - 如何保存创建日期

如何在应用程序中将所选图片从图片库动态复制到图片文件夹中?