【问题标题】:MPMoviePlayer load and play movie saved in app documentsMPMoviePlayer 加载和播放保存在应用文档中的电影
【发布时间】:2011-04-26 02:22:05
【问题描述】:

我正在编写一个应用程序,它将照片卷中的电影存储到应用程序的本地文档文件夹中。我可以使用 MPMoviePlayer 播放远程电影,但是尝试播放存储在应用程序文档文件夹中的电影总是返回 MPMovieLoadStateUnknown

所有通知都是从默认通知中心(MPMoviePlayerLoadStateDidChangeNotificationMPMoviePlayerPlaybackDidFinishNotification)发送和接收的。 在控制台中收到 loadStateUnknown 消息后不久会出现一个警告框,提示无法播放电影,然后应用会收到电影播放完成通知。

我认为可能是找不到文件名(MPMoviePlayer 只能以 URL 作为资产位置)的情况。有没有人处理过这个问题或类似问题?

【问题讨论】:

    标签: iphone objective-c ipad mpmovieplayercontroller


    【解决方案1】:

    鉴于其他答案似乎都无法解决问题,我倾向于认为问题可能出在您正在生成的 Documents 文件路径上。

    您应该使用以下方法生成应用程序文档文件夹的路径:

    NSString *userDocumentsPath = nil;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    if ([paths count] > 0) 
    {
         userDocumentsPath = [paths objectAtIndex:0];
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试过将本地文件路径转换为 ​​url

      [NSURL URLWithString: [NSString stringWithFormat:@"file:/%@//",filePath]];
      

      如果文件路径中有空格,则必须在创建 URL 之前对其进行转换

      filePath = [filePath stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
      filePath = [filePath stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
      

      【讨论】:

        【解决方案3】:

        Core Data 模板将文件路径转换为如下所示的 URL:

        NSURL *storeUrl = [NSURL fileURLWithPath:whatever];
        

        这似乎做了所有正确的空间转义和东西,因为我正在使用它来加载路径中带有空格的文件。

        【讨论】:

        • 这样做提供了与我的原始问题相同的结果。如果我执行 [NSData dataWithContentsOfURL:storeUrl] 和 NSLog ,我会得到一个巨大的十六进制数字列表,所以我知道正在查找文件,否则数据将为零。 MPMoviePlayer 的文件是否需要扩展名?
        • 您是否测试了电影以确保它在拖入 iTunes 并同步时可以播放?
        • 这部电影是在 PhotoBooth 中创建的,并通过电子邮件发送到 ipad。影片保存为与 Quicktime 兼容的 iPhone,可从照片胶卷和 Mac 上播放。
        【解决方案4】:

        我不确定这是否会对您有所帮助。 在本教程中,有一些代码行可能会让您走上正确的道路:

            // Unless state is unknown, start playback
        if ([mp loadState] != MPMovieLoadStateUnknown)
        ...
        

        你会在下面的方法中找到这个sn-p:

        - (void) moviePlayerLoadStateChanged:(NSNotification*)notification 
        

        这里是教程的链接: Tutorial

        希望这会对你有所帮助...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多