【问题标题】:How to save video from assets url如何从资产网址保存视频
【发布时间】:2011-07-04 06:51:21
【问题描述】:

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

"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 长度]:无法识别的选择器已发送到实例

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

感谢任何帮助。

【问题讨论】:

    标签: iphone objective-c xcode ios4 alasset


    【解决方案1】:

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

    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 是您要保存的路径。 p>

    【讨论】:

      【解决方案2】:

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

          errorBlock:^(NSError *err)
      

      到这里:

          failureBlock :^(NSError *err)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-03
        • 2013-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多