从 MPMediaItem 播放电影 (iPad/IOS5)

Posted

技术标签:

【中文标题】从 MPMediaItem 播放电影 (iPad/IOS5)【英文标题】:Playing a Movie from MPMediaItem (iPad/IOS5) 【发布时间】:2012-03-28 11:33:16 【问题描述】:

我需要在 iPad 上的视图中播放已经从 iTunes 同步到 Apple 的“电影”应用程序的电影。

我可以使用 MPMoviePlayerController 播放捆绑包中的电影。我可以获得所有电影的媒体项(使用 MPMediaQuery 的 MPMediaItem 的 NSArray)。但是 MPMoviePlayerController 只接受 NSURL - 而不是 MPMediaItem。

那么,当我只有电影的 MPMediaItem 时,如何播放电影?除了 MPMoviePlayerController 之外,还有其他对象可以做到这一点吗?有几篇文章解释了如何“获取”媒体项目,而不是如何“设置”项目。

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

每个MPMediaItem 都有一个可以使用valueForProperty: 访问的URL。

我不知道你是否可以用它在MPMoviePlayerController 中播放它。理论上它应该可以工作。

NSURL *url = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL];

编辑:看起来不可能使用它。

MPMediaItemPropertyAssetURL 指向媒体项目的 URL,可以从中创建 AVAsset 对象(或其他基于 URL 的 AV Foundation 对象),并根据需要使用任何选项。值是一个 NSURL 对象。 该 URL 具有 ipod-library 的自定义方案。例如,一个 URL 可能如下所示: ipod-library://item/item.m4a?id=12345不支持在 AV Foundation 框架之外使用 URL。

来自:General Media Item Property Keys

【讨论】:

感谢这工作!找出“[mediaItem valueForProperty:MPMediaItemPropertyAssetURL]”需要很长时间 - 不是很直观。【参考方案2】:

试试这个

NSURL *url = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL];

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:   url];
[player prepareToPlay];
[player.view setFrame: myView.bounds];  // player's frame must match parent's
[myView addSubview: player.view];
[player play];

我认为这应该可行..

MPMediaItem 继承自 MPMediaEntity,它具有 valueForProperty 方法:

【讨论】:

谢谢,你和下面的马蒂亚斯给出了解决方案

以上是关于从 MPMediaItem 播放电影 (iPad/IOS5)的主要内容,如果未能解决你的问题,请参考以下文章

DVD视频转换无法播放?如何将DVD复制到iPad正常播放

iPad SDK:嵌入式 YouTube 电影在 UIWebView 后面播放全屏版本

MPMediaItem 你是怎么玩的?

如何比较 AVPlayer Current Item 和 MPMediaItem?

如何使用 MPMediaItem 属性持久 ID 在 iPhone 音乐播放器框架中播放音乐?

nowPlayingItem 在播放列表中的位置/向 MPMediaItem 添加类别