2012-05-10 2 views
0

그래서 사용자가 동영상을 녹화하거나 사진 라이브러리에서 동영상을 선택한 다음 서버에 동영상을 업로드 할 수있는 앱이 있습니다. 동영상을 녹화 한 후 저작물의 URL을받습니다.iOS 5 - ALAssets 라이브러리 - 애셋에서 NSDATA 파일로 동영상의 URL 변환

나는 다음 코드로 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]); 
    }]; 
관련 문제