使用照片框架从图库上传video
使用Photos框架从图库上传video的最佳方式是什么? 在我使用ALAssetRepresentation和下一个方法之前:
- (NSUInteger)getBytes:(uint8_t *)buffer fromOffset:(long long)offset length:(NSUInteger)length error:(NSError **)error;
这允许上传文件,而无需先将其复制到应用程序临时目录。 在照片框架中看不到任何替代品。 唯一的办法似乎使用AVAssetExportSession – >导出到本地目录 – >上传,但这需要额外的存储空间(如果video太大可能是一个问题)
似乎唯一有效的方法是从PHImageManager
请求PHImageManager
,并检查返回的资产是否是AVURLAsset
。 在这种情况下,URL可以用来直接访问文件并获得所需的字节块:
[[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:nil resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) { if ([asset isKindOfClass:[AVURLAsset class]]) { NSURL *URL = [(AVURLAsset *)asset URL]; // use URL to get file content } }];
这不适用于慢动作video,因为AVComposition
而不是AVURLAsset
被返回。 可能的解决scheme是使用PHVideoRequestOptionsVersionOriginal
video文件版本:
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init]; options.version = PHVideoRequestOptionsVersionOriginal; [[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) { if ([asset isKindOfClass:[AVURLAsset class]]) { NSURL *URL = [(AVURLAsset *)asset URL]; // use URL to get file content } }];
并获得全图像url:
PHContentEditingInputRequestOptions *options = [[PHContentEditingInputRequestOptions alloc] init]; options.canHandleAdjustmentData = ^BOOL(PHAdjustmentData *adjustmentData) { return YES; }; [imageAsset requestContentEditingInputWithOptions:options completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) { // use contentEditingInput.fullSizeImageURL }];
- XCode Build(CFBundleVersion)值是否曾被视为一个数字?
- Swift错误:源文件中的编辑器占位符
- 语音识别与标点符号
- 在iPhone上收到通知时(不是在通知被点击并打开之后)将会触发哪种方法?
- 用Xcode 5构buildOpenSSL
- iOS应用程序更新新版本从文档文件夹中删除文件
- objc_setAssociatedObject上的EXC_BAD_ACCESS使用-weak_library /usr/lib/libSystem.B.dylib链接器标志
- iOS:我如何生成8个独特的随机整数?
- 我是否必须在其didFinishWithResult委托方法中解除MFMessageComposeViewController?