Как проверить, превышает ли видеофайл 2 МБ?

Предположим, я взял видеофайл из библиотеки iphone. Я хочу поставить галочку, что размер видеофайла не должен превышать 2 МБ.

Я не могу использовать метод videoMaximumDuration. Потому что, если какое-либо видео имеет качество HD, даже видео продолжительностью 1 минута может быть огромным по размеру.

Любые взгляды?


person Tariq    schedule 13.05.2011    source источник


Ответы (3)


urlvideo содержит URL выбранного видеофайла

            NSString *strurl=[urlvideo path];
            NSFileManager *fileManager = [NSFileManager defaultManager];
            NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:strurl error:nil];

        if(fileAttributes != nil)
            {
                NSString *fileSize = [fileAttributes objectForKey:NSFileSize];
                //NSLog(@"File size: %@ kb", fileSize);             
                if ([fileSize intValue] > 2000000) {                    
                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"File size greater than 2MB.Please select another video file." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
                    [alert show];
                    [alert release];
                }               
                else {
NSLog(@"video size less than 2 mb");
    }
person Gypsa    schedule 13.05.2011


Решения NSURL не будут работать, потому что URL-адрес видео из библиотеки iPod или Photo пользователя будет не URL-адресом файла, а специальной схемой, которую обрабатывает MediaPlayer или ALAssetLibrary. (Я не уверен, что ALAssetLibrary делает это, но я знаю, что MediaPlayer делает это, и думаю, что библиотека фотографий тоже делает это, поэтому вы не можете возиться с вещами за его спиной).

Лучшее решение, которое я могу придумать, — это создать AVURLAsset с URL-адресом, а затем выполнить итерацию по дорожкам и умножить предполагаемую скорость передачи данных на продолжительность дорожки в секундах. Это должно дать вам приблизительную оценку размера каждой дорожки.

person Mark Lilback    schedule 13.05.2011