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

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

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

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

非常感谢任何帮助。

【问题讨论】:

    标签: iphone ios ipad ipod


    【解决方案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 方法:

    【讨论】:

    • 谢谢,你和下面的马蒂亚斯给出了解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多