我正在尝试从设备库的 mp4 文件获取 NSData。
这个链接看起来像这样:
assets-library://asset/asset.mp4?id=32515720-939A-456F-958F-0B2F397416EB&ext=mp4
我试过这段代码:
ALAssetRepresentation *rep = [asset defaultRepresentation];
Byte *buffer = (Byte*)malloc((NSUInteger)rep.size);
NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:(NSUInteger)rep.size error:nil];
NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
But defaultRepresentation
在 iOS 9 中已弃用。
我也尝试过[NSData dataWithContentsOfFile:url];
但它返回零。
全班的ALAsset
在 iOS 9 中已弃用。您现在应该考虑使用PHAsset
反而。有一个API可以获取PHAsset
来自旧资产 URLALAsset
。请参阅下列的:
Assets Library 框架在 iOS 8.0 及更高版本中已弃用,取而代之的是 Photos 框架。如果您的应用程序之前存储了来自 ALAsset 对象的 URL,并且您需要检索相应的照片框架对象,请使用此方法。
+ (PHFetchResult<PHAsset *> *)fetchAssetsWithALAssetURLs:(NSArray<NSURL *> *)assetURLs
options:(PHFetchOptions *)options
然后你可以使用以下内容method in PHImageManager
得到NSData
of the PHAsset
:
- (PHImageRequestID)requestImageDataForAsset:(PHAsset *)asset
options:(PHImageRequestOptions *)options
resultHandler:(void (^)(NSData *imageData,
NSString *dataUTI,
UIImageOrientation orientation,
NSDictionary *info))resultHandler
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)