2012-02-27 8 views
5

Estoy intentando buscar videos almacenados en la biblioteca de mi iPod utilizando los nuevos tipos de medios de video. Con cualquier tipo de video, aparece este error en la consola:MPMediaPickerController con tipos de medios de video que no funcionan

Warning: Unsupported media types (1024), using MPMediaTypeAny. 

Después de este error, el selector solo muestra los tipos de audio.

Como referencia, estos son los nuevos tipos de medios disponibles en iOS5.0 (definidos en MediaPlayer.framework/MediaItem.h):

// video (available in iOS 5.0) 
MPMediaTypeMovie  = 1 << 8, 
MPMediaTypeTVShow  = 1 << 9, 
MPMediaTypeVideoPodcast = 1 << 10, 
MPMediaTypeMusicVideo = 1 << 11, 
MPMediaTypeVideoITunesU = 1 << 12, 
MPMediaTypeAnyVideo  = 0xff00, 

Respuesta

11

¿Se puede consultar la biblioteca de la película en el código con éxito por ejemplo:

MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInteger:MPMediaTypeMovie] forProperty:MPMediaItemPropertyMediaType]; 

MPMediaQuery *query = [[MPMediaQuery alloc] init]; 
[query addFilterPredicate:predicate]; 

NSArray *items = [query items]; 

for (MPMediaItem* item in items) 
{ 
    NSString* title = [item valueForProperty:MPMediaItemPropertyTitle]; 

    url = [item valueForProperty:MPMediaItemPropertyAssetURL]; 

} 

Debería ver todos los títulos de las películas. Esto está bien para mí en IOS5 y iPad 2. Todavía tengo tu problema. Una solución alternativa es colocar los resultados del código anterior en su propia vista modal.

+0

¡Fantástico! Supongo que Apple proporcionará UI para esto en algún momento. Pero esto funciona – bentford

+0

Hola, ¿puedes obtener tu URL realmente? Puedo imprimir el título, pero la url es nula, quiero obtener las URL de las películas. ¿Sabes si eso es posible? –

1

SWIFT 3 forma @John Goodstadt

import MediaPlayer 

let predicate = MPMediaPropertyPredicate(value: MPMediaType.any.rawValue, forProperty: MPMediaItemPropertyMediaType) 
    let query = MPMediaQuery() 
    query.addFilterPredicate(predicate) 
    let items = query.items 
    for item in items! { 
     DLog("title: \(item.title); url: \(item.assetURL)") 
    } 

entonces usted puede cambiar el tipo como sea necesario.

Cuestiones relacionadas