2009-09-04 13 views
10

Piszę prostą aplikację do przesyłania filmów na iPhone'a 3GS, gdzie najpierw kieruję użytkownika do albumu ze zdjęciami, a następnie wybieram film do udostępnienia lub przesłania. Używam UIImagePickerController w następujący sposób:UIImagePickerController do filmu Pozycja

videoPickerCtrl = [[UIImagePickerController alloc] init]; 
videoPickerCtrl.delegate = self; 
videoPickerCtrl.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
videoPickerCtrl.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:videoPickerCtrl.sourceType]; 

videoPickerCtrl.allowsImageEditing = NO; 
videoPickerCtrl.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; 
[window addSubview:videoPickerCtrl.view]; 

Ale widzę, że gdy kontroler jest wywoływany, jest niepokojące interfejs wideo przycinanie, który jest przedstawiony. Po naciśnięciu "wybierz" wideo jest zawsze przycinane niezależnie od tego, czy dotknę elementów sterujących przycinaniem, czy nie. Czy istnieje sposób obejścia tego interfejsu przycinania i uzyskania bezpośrednio ścieżki pliku wideo?

+0

Właściwość allowImageEditing Przestarzała w systemie iOS 3.1 – kamleshwar

+0

wystarczy skopiować plik do katalogu tmp w obszarze izolowanym aplikacji. nie dostaniesz pliku orignal, tylko kopię ... tak, że pasek postępu jest plikiem do kopiowania. – n3wscott

Odpowiedz

2

Powinieneś ustawić allowsEditing = NO; zamiast allowsImageEditing = NO; (który jest przestarzały w 3.1). Następnie interfejs przycinania nie powinien się pojawiać, chyba że wybrany film jest dłuższy niż 10 minut (z dokumentacji: "Maksymalny czas trwania filmu to 10 minut. Jeśli użytkownik wybierze film dłuższy niż 10 minut, musi przyciąć przed zapisaniem. ").

1

Ok, więc mam to działa długo po starannie patrząc na dokumenty SDK. Jestem w stanie uzyskać filmy z katalogu Camera Roll na moim 3GS. Ale nie mogę znaleźć sposobu, w jaki UIImagePickerController może wybrać wideo z katalogów innych niż Camera Roll (na przykład biblioteka zdjęć urządzenia, w której użytkownik synchronizuje wideo przez iTunes). Czy jest jakiś standardowy sposób w SDK, aby to zrobić?

+0

To nie jest odpowiedź. – memmons

+0

wiemy, że dobrze ?? – humblePilgrim

2

Interesujący problem. Jest to po prostu informacja, gdyby ktoś na nią patrzył. W systemie iPad OS 3.2 wykryłem pewne problemy z odtwarzaniem wideo, chociaż selektor działa i mogę wybrać wideo z albumów, a nie tylko z rolki aparatu.

Oto mój kod frag roboczego

Wezwanie

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]; 
    } 

I tu jest metoda delegata

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]; 
} 

Jednak URL wideo, który odzyskać z próbnika ma postać

plik:/lo calhost/private/var/mobile/Applications/C6FAC491-D27D-45A6-B805-951727ED2CEC/tmp/-Tmp-/trim.KOzqps.MOV

Tak to wygląda mi, że film może być przetwarzany przez kod przycinania, nawet jeśli wybieram film jako całość. Zauważ też, że film, pierwotnie typu m4v, gdy załadowałem go przez iTunes, jest typu MOV, który oczywiście nie może być odtwarzany na urządzeniu! Próbowałem zagrać w adres URL, ale otrzymałem ostrzeżenie "Nie można odtwarzać tego rodzaju filmu"

Nie bardzo rozumiem, co Apple tu gra, interfejs API wydaje się nie nadawać się do użytku jako sposób ładowania i odtwarzania wideo z biblioteki zdjęć.

Mam nadzieję, że system IOS 4 będzie bardziej dostępny, ale w przypadku mojej aplikacji na iPada to jeszcze kilka miesięcy.

+0

problemy nie zostały rozwiązane przez iOS 4.2. Wciąż je widzę.Czy odkryłeś jakiś sposób, aby to zadziałało? – SpaceDog

+0

Cześć chłopaki, czy istnieje jakieś rozwiązanie tego problemu? –

Powiązane problemy