如何从资源网址中保存视频

时间:2011-07-04 06:51:22

标签: iphone objective-c xcode ios4 alasset

我想从资源网址将视频保存到我的应用文档中。我的资产网址如下: -

"assets-library://asset/asset.MOV?id=1000000394&ext=MOV"

我试过了: -

NSString *str=@"assets-library://asset/asset.MOV?id=1000000394&ext=MOV";
NSData *videoData = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]];
[videoData writeToFile:mypath atomically:YES];

但在第二行[NSData dataWithContentsOfURL:[NSURL URLWithString:str]]我遇到了程序崩溃的原因: - 由于未捕获的异常'NSInvalidArgumentException'而终止应用,原因:' - [NSURL长度]:无法识别的选择器发送到实例

我想知道如何访问资产视频网址。

Thanx寻求帮助。

2 个答案:

答案 0 :(得分:16)

我认为你最好的选择是使用方法

getBytes:fromOffset:length:error:

ALAssetRepresentation

您可以获得类似资产的默认表示

ALAssetRepresentation *representation = [someVideoAsset defaultRepresentation];

所以我不应该这样做(我离开了我的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]);
}];

videoUrl 是您要复制的视频的资源网址,而 filePath 是您尝试将其保存到的路径。

答案 1 :(得分:2)

谢谢你......我需要改变的是

    errorBlock:^(NSError *err)

到此:

    failureBlock :^(NSError *err)