ios - 使用 UISaveVideoAtPathToSavedPhotosAlbum 重命名文件?

标签 ios

我想从 URL 下载视频,并在保存之前重命名该视频的文件。我使用UISaveVideoAtPathToSavedPhotosAlbum。我必须做什么?

 NSData *imageData = [NSData dataWithContentsOfURL:
     [NSURL URLWithString:@"www.xyz.com/image.mp4"]];

最佳答案

你会做这样的事情:

- (void) downloadVideo
   NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.xyz.com/image.mp4"]];
   NSString *tempPath = [NSString stringWithFormat:@"%@/%@", NSTemporaryDirectory(), temp.mp4];
   [imageData writeToFile:tempPath atomically:NO];
   UISaveVideoAtPathToSavedPhotosAlbum (@ tempPath, self, @selector(video:didFinishSavingWithError: contextInfo:), nil);
);

- (void) video: (NSString *) videoPath
    didFinishSavingWithError: (NSError *) error
    contextInfo: (void *) contextInfo {
  NSLog(@"Finished saving video with error: %@", error);
}

有两点需要注意:

  1. 确保指定 URL 的架构。这不是浏览器,它不会尝试自动填充 http 并为您猜测。
  2. 如果这是在主线程上,则会在 dataWithContentsOfURL: 发生时导致同步停顿。如果主线程停止超过 20 秒,手机将认为应用程序陷入无限循环并终止它。因此,如果此代码位于主线程上,您需要将其移至后台线程或使用 NSURLConnection 移至异步下载。

关于ios - 使用 UISaveVideoAtPathToSavedPhotosAlbum 重命名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1706276/

相关文章:

ios - Firebase iOS 查询未按预期排序

ios - 如何以 12 小时格式获取当前时间?

ios - 获取 JSON 文本不是以数组或对象开头以及允许未设置片段的选项

ios - NSBundle pathForResource : returns nil

ios - UICollectionView - 在其他单元格中重复的 subview 实例

ios - iOS kABPersonModificationDateProperty 的奇怪行为,似乎一直在更新

ios - Xcode SwiftUI 如何滚动预览 Canvas ?

ios - WKWebView 中的刷新按钮

ios - 在 iOS 12 中更改 UITabBarItem 角标(Badge)字体

ios - 使用 Swift 隐藏取消隐藏静态 TableView 单元格