Когда необходимо быстро искать что-то, имение всего этого на одной странице может помочь.
Вы должны установить allowEditing = NO;
вместо allowImageEditing = NO;
(который устарел в 3.1). Затем интерфейс обрезки не должен отображаться, если длина выбранного фильма не превышает 10 минут (из документов: «Максимальная продолжительность фильма составляет 10 минут. Если пользователь выбирает фильм, продолжительность которого превышает 10 минут, они вынуждены обрезать перед сохранением. ").
Хорошо, после внимательного просмотра документации SDK он заработал давно. Я могу получать видео из каталога Camera Roll на моем 3GS. Но я не могу найти способ, которым UIImagePickerController может выбирать видео из каталогов, отличных от Camera Roll (например, из библиотеки фотографий устройства, где пользователь синхронизирует видео через iTunes). Есть ли в SDK стандартный способ сделать это?
Интересная задача. Это просто для информации, если кто-то еще взглянет на это. На iPad OS 3.2 я обнаружил некоторые проблемы с получением видео, хотя средство выбора работает, и я могу выбирать видео из альбомов, а не только из камеры.
Вот мой рабочий код frag
Вызов
NSArray *mediaTypesAllowed = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[picker setMediaTypes:mediaTypesAllowed];
picker.delegate = self;
picker.allowsEditing = NO;
picker.wantsFullScreenLayout = YES;
if(!IsEmpty(self.editBackgroundPopover)){
[self.editBackgroundPopover setContentViewController:picker animated:YES];
}
А вот и метод делегата
imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[self.editBackgroundPopover dismissPopoverAnimated:true];
NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
//not production code, do not use hard coded string in real app
if ( [ mediaType isEqualToString:@"public.image" ]) {
NSLog(@"Picked a photo");
}
//not production code, do not use hard coded string in real app
else if ( [ mediaType isEqualToString:@"public.movie" ]){
NSLog(@"Picked a movie at URL %@", [info objectForKey:UIImagePickerControllerMediaURL]);
NSURL *url = [info objectForKey:UIImagePickerControllerMediaURL];
NSLog(@"> %@", [url absoluteString]);
}
[[picker self] dismissModalViewControllerAnimated:YES];
}
Однако URL-адрес видео, который я получаю из средства выбора, имеет вид
файл: / localhost / private / var / mobile / Applications / C6FAC491-D27D-45A6-B805-951727ED2CEC / tmp / -Tmp- / trim.KOzqps.MOV
Мне кажется, что видео может обрабатываться с помощью кода обрезки, даже если я выбираю видео в целом.Также обратите внимание, что фильм, изначально имеющий тип m4v, когда я загружал его через iTunes, имеет тип MOV, который, конечно же, не воспроизводится на устройстве! Я попытался воспроизвести URL-адрес, но получил предупреждение: «Этот тип фильма не может быть воспроизведен»
. Я не совсем понимаю, что Apple играет здесь, API, похоже, действительно не годится для использования в качестве способа загрузки и воспроизведения видео из библиотеки фотографий.
Будем надеяться, что выпуск iOS 4 будет больше, но для моего приложения для iPad до этого еще несколько месяцев.