MPMoviePlayerController不适用于文档文件夹中的影片

时间:2012-01-24 09:22:01

标签: ios stream mpmovieplayercontroller mov

我有一个播放电影的ViewController。如果下载了电影(使用ASI-HTTP-Request),则需要本地版本。否则它会从网络上传输它。它是完全相同的电影。

Streaming工作得很好,但播放本地文件不起作用。只是黑屏,没有控制。文件已正确下载我检查了md5校验和。

这是一款尺寸为1024x5xx像素的Apple QuickTime视频(.mov)。

player = [[MPMoviePlayerController alloc] init];
[player.view setFrame: self.view.bounds];
if (local) {
    // DOES not work
    // SHOULD be [NSURL fileURLWithString:...]
    [player setContentURL: [NSURL URLWithString: @"/path/to/the/movie.mov"]];
} else {
    // does work
    [player setContentURL: [NSURL URLWithString: @"http://mydomain.tld/path/to/the/movie.mov"]];
}
[self.view addSubview: player.view];
[player play]

我尝试了玩家MediaSourceType。但它没有任何帮助。 为什么不起作用? 我没有收到任何错误消息,因为我没有收到错误消息...,有没有办法从中获取错误消息?

解决方案

我发现了我的错误。

我使用[NSURL URLWithString: @"/the/path/..."]作为本地路径。

适用于[NSURL fileURLWithPath: @"/the/path/..."]

1 个答案:

答案 0 :(得分:1)

检查视频文件的URL。此行返回Documents文档目录。

NSString* docPath = [NSSearchPathForDirectoriesInDomains
               (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

您的路径与文档目录

无关
[player setContentURL: [NSURL URLWithString: @"/path/to/the/movie.mov"]];

试试这个

[player setContentURL: [NSURL URLWithString: [NSString stringWithFormat:@"%@%@", docPath, @"/path/to/the/movie.mov"]]];