f3n*_*1kc 9 objective-c ios photosframework photokit
使用Photos框架从图库上传视频的最佳方式是什么?在我使用ALAssetRepresentation和下一个方法之前:
- (NSUInteger)getBytes:(uint8_t *)buffer fromOffset:(long long)offset length:(NSUInteger)length error:(NSError **)error;
Run Code Online (Sandbox Code Playgroud)
这允许上传文件而不先将其复制到app临时目录.在Photos框架中看不到任何替代方案.唯一的方法似乎是使用AVAssetExportSession - >导出到本地目录 - >上传,但这需要额外的存储空间(如果视频太大可能是个问题)
f3n*_*1kc 14
似乎是唯一有效的办法是要求AVAsset从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
}
}];
Run Code Online (Sandbox Code Playgroud)
这不适用于慢动作视频,因为AVComposition而不是AVURLAsset返回.可能的解决方案是使用PHVideoRequestOptionsVersionOriginal视频文件版本:
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
}
}];
Run Code Online (Sandbox Code Playgroud)
并获得fullsize图像网址:
PHContentEditingInputRequestOptions *options = [[PHContentEditingInputRequestOptions alloc] init];
options.canHandleAdjustmentData = ^BOOL(PHAdjustmentData *adjustmentData) {
return YES;
};
[imageAsset requestContentEditingInputWithOptions:options completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
// use contentEditingInput.fullSizeImageURL
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5243 次 |
| 最近记录: |