2012-02-27 39 views
5

我试图使用新的视频媒体类型浏览存储在我的i​​Pod库中的视频。对于任何视频类型,我都会在控制台上看到以下错误:MPMediaPickerController与视频媒体类型不工作

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

发生此错误后,选取器仅显示音频类型。

供参考,这些都是在iOS5.0提供的新的媒体类型(在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, 

回答

11

可以查询电影库中的代码成功例如:

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

} 

您应该看到所有电影名称。这对我来说在IOS5和iPad 2上是可以的。我仍然有你的问题。解决方法是将上述代码结果置于其自己的模式视图中。

+0

太棒了!我假设苹果会在某个时候为此提供UI。但是,这工作。 – bentford 2012-03-29 23:40:19

+0

嗨,你能找到你的网址吗?我可以打印出标题,但url为空,我想要看电影的网址。你知道这可能吗? – 2013-04-19 16:36:49

1

SWIFT 3形式@约翰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)") 
    } 

,那么你可以根据需要更改类型。