0

我使用UIImagePickerController拍摄视频后创建了相机。我点击了使用视频,我将此视频保存到了照片库。现在我想获得这部影片的大小。我用AlAssetLibrary将视频保存到照片库。如何才能获得视频的大小?请帮帮我。提前致谢。将此视频保存到iOS中的照片库后获取视频大小

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 

    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
    NSURL *recordedVideoURL= [info objectForKey:UIImagePickerControllerMediaURL]; 
    if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:recordedVideoURL]) { 
     [library writeVideoAtPathToSavedPhotosAlbum:recordedVideoURL 
            completionBlock:^(NSURL *assetURL, NSError *error){} 
     ]; 
    } 

} 

我想下面的代码,以获得视频的大小,但不工作:

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]; 
+0

它是如何失败? –

+0

我不知道,但当我的应用程序崩溃时,通过使用上面的代码获取视频的大小。 – user3168540

+0

也许视频非常大,你的应用正在被内存压力所杀。 –

回答

0

你可以做到这一点的方法有三种

使用 ALAssetRepresentationsize

1.使用NSData length

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 %d",data.length); 

2.Make

3. 最坏情况的情景io:使用指向保存的视频文件的videoPathURL,使用ALAsset再次检索它并调整大小。

1

1)请参阅this 问题,让您的视频。

2)得到您的视频后,将其转换为NSData作为this question

3)现在使用NSData的length function

它会给你的视频文件的长度。

+0

是的,我已阅读上面的链接,但我的应用程序崩溃时,试图获取视频的大小。你可以帮我吗?感谢 – user3168540

+0

你能告诉我在什么代码行你的应用崩溃了吗? – Ankush

0

,你也可以使用这个用于获取视频的大小:

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:YOURURL]; 

CMTime duration = playerItem.duration; 
float seconds = CMTimeGetSeconds(duration); 
相关问题