2012-02-27 49 views
5

Tôi đang cố gắng duyệt video được lưu trữ trong thư viện iPod bằng cách sử dụng các loại phương tiện video mới. Với bất kỳ loại video nào tôi gặp phải lỗi này trên bảng điều khiển:MPMediaPickerController với các loại phương tiện video không hoạt động

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

Sau khi lỗi này, bộ chọn chỉ hiển thị các loại âm thanh.

Để tham khảo, đây là các loại phương tiện truyền thông mới có sẵn trong iOS5.0 (quy định tại 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, 

Trả lời

11

Bạn có thể truy vấn các thư viện Movie trong mã thành công ví dụ:

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

} 

Bạn sẽ thấy tất cả các tiêu đề phim. Điều này là OK cho tôi trên IOS5 và iPad 2. Tôi vẫn có vấn đề của bạn mặc dù. Cách giải quyết khác là đặt mã ở trên dẫn đến chế độ xem phương thức của riêng nó.

+0

Tuyệt vời! Tôi giả định Apple sẽ cung cấp giao diện người dùng cho điều này tại một số điểm. Nhưng điều này hoạt động. – bentford

+0

Xin chào, bạn có thể nhận được url của mình thực sự không? Tôi có thể in ra tiêu đề, nhưng url là null, tôi muốn nhận được các url của phim. Bạn có biết nếu điều đó là có thể? –

1

SWIFT 3 dạng @ 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)") 
    } 

sau đó bạn có thể thay đổi kiểu như bạn cần.

Các vấn đề liên quan