2012-02-27 36 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)") 
    } 

,那麼你可以根據需要更改類型。