2014-01-13 3 views
1

비디오를 선택할 때 비디오의 크기를 얻으려면 아래 코드를 시도했지만 내 비디오는 추락했습니다. 각 비디오의 크기를 가져 오려면 ALAsset에서 가져온 다음 Array에 추가하십시오. 어떻게 할 수 있니? 제게 조언 해주세요. 감사.ALASSET에서 비디오의 크기를 얻는 방법 ios

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UICollectionViewCell *cell = (UICollectionViewCell*)[collectionView cellForItemAtIndexPath:indexPath]; 
    UIImageView *OverlayImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 75, 75)]; 
    OverlayImageView.image = [UIImage imageNamed:@"Overlay-old.png"]; 
    [cell addSubview:OverlayImageView]; 
    alasset = [allVideos objectAtIndex:indexPath.row]; 
    NSDate* date = [alasset valueForProperty:ALAssetPropertyDate]; 
    NSLog(@"Date Time Modify %@",date); 


    //get size of video 
    ALAssetRepresentation *rep = [alasset defaultRepresentation]; 
    Byte *buffer = (Byte*)malloc(rep.size); 
    NSError *error = nil; 
    NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:&error]; 
    NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES]; 
    NSLog(@"Size of video %@",data); 
} 

답변

2

사용 NSLog(@"Size of video %d",data.length); //length returns the number of bytes contained in the receiver.

또는 표현의 파일의 크기를 바이트 단위로 반환 ALAssetRepresentation크기를 사용합니다.

+0

감사합니다 아래 등등 MB, GB 등의 관련 양식에

전화를 변환하려면, 내가 했어요. – user3168540

3

여기 ALAssetRepresentation

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath { 

     static NSString *cellIdentifier = @"CollectionCell"; 
     CollectionCell *cell = [cv dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]; 
     ALAsset *asset = self.arrAssetsMedia[indexPath.row]; 

     //To Show ThumbNailImage 
     CGImageRef thumbnailImageRef = [asset thumbnail]; 
     UIImage *thumbnail = [UIImage imageWithCGImage:thumbnailImageRef]; 
     cell.cellMediaImage.image = thumbnail; 

     //To get the FileSize 
     ALAssetRepresentation *rep = [asset defaultRepresentation]; 
     int Filesize=(int)[rep size]; 
     [cell.lblMediaSize setText:[self stringFromFileSize:Filesize]]; 
     return cell; 
    } 

주의 도움으로 미디어 길이를 얻을 수있는 전체 코드입니다 : 크기는 바이트의 형태이다. 방법

- (NSString *)stringFromFileSize:(int)theSize 
{ 
    float floatSize = theSize; 
    if (theSize<1023) 
     return([NSString stringWithFormat:@"%i bytes",theSize]); 
    floatSize = floatSize/1024; 
    if (floatSize<1023) 
     return([NSString stringWithFormat:@"%1.1f KB",floatSize]); 
    floatSize = floatSize/1024; 
    if (floatSize<1023) 
     return([NSString stringWithFormat:@"%1.1f MB",floatSize]); 
    floatSize = floatSize/1024; 

    // Add as many as you like 

    return([NSString stringWithFormat:@"%1.1f GB",floatSize]); 
}