视频媒体类型不起作用的 MPMediaPickerController

Posted

技术标签:

【中文标题】视频媒体类型不起作用的 MPMediaPickerController【英文标题】:MPMediaPickerController with video media types not working 【发布时间】:2012-02-27 23:53:58 【问题描述】:

我正在尝试使用新的视频媒体类型浏览存储在我的 iPod 库中的视频。对于任何视频类型,我都会在控制台上收到此错误:

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,

【问题讨论】:

【参考方案1】:

你能否成功地在代码中查询电影库例如:

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 上这对我来说没问题。不过我仍然有你的问题。一种解决方法是将上述代码结果放在它自己的模态视图中。

【讨论】:

太棒了!我假设Apple会在某个时候为此提供UI。但这行得通。 嗨,你能得到你的网址吗?我可以打印出标题,但 url 为空,我想获取电影的 url。你知道这是否可能吗?【参考方案2】:

SWIFT 3 来自@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)")
    

然后您可以根据需要更改类型。

【讨论】:

以上是关于视频媒体类型不起作用的 MPMediaPickerController的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QMediaPlayer 中获取媒体类型(视频或音频)?

不同视口的 HTML5 媒体查询视频(断点不起作用)

使用 MPMediaPicker 选择作为 AVAudioPlayer 输入

IE 11 - 屏幕字体、带有媒体类型的打印字体不起作用

将 MPEG4 源过滤器扩展到其他媒体类型

媒体视频播放器 HTML5 JS