Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: TariqОтветов: 3

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

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

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

iphoneobjective-cvideosize

Ответы

Ответ 1 · рейтинг 3 · Gypsa

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");
    }

Ответ 3 · Mark Lilback

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы