MPMoviePlayer加载并播放保存在应用文档中的电影

时间:2010-10-15 18:42:24

标签: iphone objective-c ipad mpmovieplayercontroller

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

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

我认为可能无法找到文件名(MPMoviePlayer只能将URL作为资产位置)。有没有人处理过这个问题或类似问题?

4 个答案:

答案 0 :(得分:1)

鉴于其他答案似乎都没有解决问题,我倾向于认为问题可能出在您正在制作的文档文件路径上。

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

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

答案 1 :(得分:0)

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

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

如果文件路径中有空格,则必须在创建URL之前转换它们

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

答案 2 :(得分:0)

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

NSURL *storeUrl = [NSURL fileURLWithPath:whatever];

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

答案 3 :(得分:0)

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

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

您将在以下方法中找到此代码段:

- (void) moviePlayerLoadStateChanged:(NSNotification*)notification 

这是教程的链接: Tutorial

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