我正在编写一个应用程序,将照片卷中的电影存储到应用程序的本地文档文件夹中。我可以使用MPMoviePlayer播放远程电影,但是尝试播放存储在应用程序的文档文件夹中的电影总是返回MPMovieLoadStateUnknown
。
通知都是从默认通知中心(MPMoviePlayerLoadStateDidChangeNotification
,MPMoviePlayerPlaybackDidFinishNotification
)发送和接收的。
在控制台中获取loadStateUnknown消息后不久会显示一个警告框,表示无法播放电影,然后应用程序会收到电影播放完成通知。
我认为可能无法找到文件名(MPMoviePlayer只能将URL作为资产位置)。有没有人处理过这个问题或类似问题?
答案 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
希望这会对你有帮助......