2012-05-10 15 views
0

ユーザーはビデオを録画したり、フォトライブラリからビデオを選んだり、ビデオをサーバーにアップロードすることができます。動画を録画した後、アセットのURLを取得します。iOS 5 - ALAssetsライブラリ - 動画のURLをアセットからNSDATAファイルに変換する

私は次のコードでassetURLへのNSDataを設定しよう:

NSString *vidString =[NSString stringWithFormat:@"%@",savedVideoURL]; 
NSURL *vidURL = [NSURL URLWithString:vidString]; 
NSData *videoData = [NSData dataWithContentsOfURL:vidURL]; 

savedVideoURLは、記録中に得られた資産URLです。アセットURLは次のようになります。assets-library://asset/asset.MOV?id=6EB7A04D-3DF8-44E5-A6D8-FD98461AE75E&ext=MOV

NSDataをそのURLに設定しようとすると、NSDataはそれ以降はnilと同じになります。

私は、次の解決策を動作させることができなかった:Get video NSData from ALAsset url iOS

誰がその資産のURLにNSDataの設定方法を知っていますか?

ありがとうございます!

答えて

8

インポートすることを忘れないでください:AssetsLibrary/ALAssetRepresentation.h

やコード:

ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init]; 
    [assetLibrary assetForURL:YOURURL resultBlock:^(ALAsset *asset) // substitute YOURURL with your url of video 
    { 
     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];//this is NSData may be what you want 
     [data writeToFile:photoFile atomically:YES]; //you can remove this if only nsdata needed 
    } 
    failureBlock:^(NSError *err) { 
     NSLog(@"Error: %@",[err localizedDescription]); 
    }]; 
関連する問題