Dha*_*wal 1 iphone xcode objective-c ios4 alasset
我想从资源网址将视频保存到我的应用文档中.我的资产网址如下: -
"assets-library://asset/asset.MOV?id=1000000394&ext=MOV"
Run Code Online (Sandbox Code Playgroud)
我试过这个: -
NSString *str=@"assets-library://asset/asset.MOV?id=1000000394&ext=MOV";
NSData *videoData = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]];
[videoData writeToFile:mypath atomically:YES];
Run Code Online (Sandbox Code Playgroud)
但在第二行[NSData dataWithContentsOfURL:[NSURL URLWithString:str]]我得到了程序崩溃的原因: - 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [NSURL长度]:发送到实例的无法识别的选择器
我想知道如何访问资产视频网址.
Thanx任何帮助.
Mic*_*gle 16
我认为你最好的选择是使用这种方法
getBytes:fromOffset:length:error:
Run Code Online (Sandbox Code Playgroud)
的
ALAssetRepresentation
Run Code Online (Sandbox Code Playgroud)
您可以像这样获得资产的默认表示
ALAssetRepresentation *representation = [someVideoAsset defaultRepresentation];
Run Code Online (Sandbox Code Playgroud)
所以我的头脑应该是这样的(我远离我的Mac,所以这还没有经过测试)
ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
[assetLibrary assetForURL:videoUrl resultBlock:^(ALAsset *asset) {
ALAssetRepresentation *rep = [asset defaultRepresentation];
Byte *buffer = (Byte*)malloc(rep.size);
NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
[data writeToFile:filePath atomically:YES];
} errorBlock:^(NSError *err) {
NSLog(@"Error: %@",[err localizedDescription]);
}];
Run Code Online (Sandbox Code Playgroud)
其中videoUrl是您要复制的视频的资产网址,而filePath是您尝试将其保存到的路径.
| 归档时间: |
|
| 查看次数: |
9486 次 |
| 最近记录: |