iPhone - выбрать видео ... URL с двумя полосами? - PullRequest
0 голосов
/ 26 декабря 2010

У меня есть UIPickerController для выбора видео в моем приложении, и происходит сбой при выборе видео с помощью средства выбора.Когда я передаю MPMoviePlayerController напрямую URL-адрес, он работает нормально, но когда URL-адрес поступает из UIPickerController, он загружает фильм правильно, но вылетает при создании эскизов.

Я выгрузил URL-адрес в консоль, сразу после выбора файла, и вот что я вижу

file://localhost/private/var/mobile/Applications/FA667F85-B009-46FA-A0B9-A7345A072651/tmp//trim.Ir0gqx.MOV

первый вопрос: почему перед именем файла стоит двойная полоса?Второй вопрос: почему имя файла идет с префиксом обрезки, если у меня есть редактирование НЕТ на сборщике?

это код сборщика:

- (void) selectMovie:(id) sender {

    if ([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypePhotoLibrary]) {

        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        NSArray *mediaTypesAllowed = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

        picker.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];
        picker.delegate = self;
        picker.allowsEditing = NO;
        picker.videoQuality = UIImagePickerControllerQualityTypeHigh; // I've added this trying to make it stop compressing the video, but it won't... any clues?


        UIPopoverController *aPopover = 
            [[UIPopoverController alloc] initWithContentViewController:picker];

        aPopover.delegate = self;


        CGRect myRect = [sender frame];

        [aPopover presentPopoverFromRect:myRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];

    }   
}



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

{
    NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];  

    if ( [ mediaType isEqualToString:@"public.movie" ]){
            movieURL =  [info objectForKey:UIImagePickerControllerMediaURL];
    } 

    NSLog(@"%@", movieURL);

    [self loadMovie:movieURL];

}

Ответы [ 2 ]

1 голос
/ 26 декабря 2010

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

NSFileManager *fm = [NSFileManager defaultManager];
[fm moveItemAtURL:fromURL toURL:toURL error:&error];

Предполагая, что у вас есть toURL, указывающий на имя файла в каталоге документов.

0 голосов
/ 26 декабря 2010

Я знаю только о первом, потому что вам нужно передать MPMoviePlayerController URL-адрес, URL-адрес должен начинаться со схемы, http://, smtp://, вроде этого.file:// также схема для файла URL

...