2009-09-04 14 views
10

Sto scrivendo una semplice applicazione per il caricamento di video su iPhone 3GS, in cui in primo luogo indirizzo l'utente all'album di foto, quindi seleziono il video da condividere o caricare. Sto usando l'UIImagePickerController nel seguente modo:UIImagePickerController per il filmato Articolo

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

ma posso vedere che una volta che il controller viene richiamato, v'è un'interfaccia video trimming inquietante che viene presentato. Una volta premuto "scegli", il video viene sempre ritagliato, indipendentemente dal fatto che tocchi i controlli di ritaglio o meno. C'è un modo per aggirare questa interfaccia di ritaglio e ottenere direttamente il percorso del file video?

+0

consente la proprietà ImagingEditing Deprecato in iOS 3.1 – kamleshwar

+0

ci vuole solo tempo per copiare il file nella directory tmp della sandbox dell'applicazione. non ti viene dato il file originale, solo una copia ... in modo che la barra di avanzamento sia l'os che copia il file. – n3wscott

risposta

2

È necessario impostare allowsEditing = NO; anziché allowsImageEditing = NO; (che è stato dichiarato obsoleto in 3.1). Quindi, l'interfaccia di ritaglio non dovrebbe apparire a meno che il film selezionato sia più lungo di 10 minuti (dai documenti: "La durata massima del filmato è 10 minuti. Se un utente sceglie un film che dura più di 10 minuti, è costretto a tagliare prima di salvarlo. ").

1

Ok, quindi ho funzionato a lungo dopo aver attentamente esaminato i documenti SDK. Sono in grado di ottenere video dalla directory Camera Roll sul mio 3GS. Ma non riesco a trovare alcun modo in cui UIImagePickerController possa scegliere il video da directory diverse da Camera Roll (ad esempio, Photo Library del dispositivo in cui l'utente sincronizza i video tramite iTunes). C'è un modo standard in SDK per farlo?

+0

Questa non è una risposta. – memmons

+0

sappiamo che ok ?? I problemi – humblePilgrim

2

Interessante problema. Questo è solo per informazione dovrebbe essere visto da chiunque altro. Su iPad OS 3.2 ho riscontrato alcuni problemi nel recupero del video, anche se il picker funziona e posso selezionare il video dagli album e non solo dal rullino fotografico.

Ecco il mio codice di lavoro frag

La chiamata

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

Ed ecco il metodo delegato

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

Tuttavia l'URL del video che ho recuperare dal selettore ha la forma

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

Così sembra a me che il video potrebbe essere in fase di elaborazione attraverso il codice di ritaglio anche se sto selezionando il video nel suo complesso. Nota anche che il film, originariamente di tipo m4v quando l'ho caricato tramite iTunes, è di tipo MOV, che ovviamente non è riproducibile sul dispositivo! Ho provato a riprodurre l'URL ma ho ricevuto un avviso che diceva "Questo tipo di film non può essere riprodotto"

Non capisco cosa stia riproducendo Apple qui, l'API sembra non essere utilizzabile come modalità di caricamento e riproduzione di video dalla libreria fotografica.

Speriamo che IOS 4 sarà più disponibile, ma per la mia app per iPad è ancora mesi.

+0

non sono stati risolti da iOS 4.2. Li sto ancora vedendo.Hai scoperto un modo per farlo funzionare? – SpaceDog

+0

Ciao Ragazzi, c'è qualche soluzione a questo? –

Problemi correlati