MPMoviePlayerController не работает с фильмом в папке документов - PullRequest
1 голос
/ 24 января 2012

У меня есть ViewController, который воспроизводит фильм. Если фильм был загружен (с ASI-HTTP-запросом), он принимает локальную версию. В противном случае он передает его из Интернета. Это точно такой же фильм.

Потоковая передача работает очень хорошо, но воспроизведение локального файла не работает. Просто черный экран и никаких элементов управления. Файл был загружен правильно. Я проверил контрольную сумму md5.

Это видео Apple QuickTime (.mov) размером 1024x5xx пикселей.

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 Ответ

1 голос
/ 24 января 2012

Проверить URL к видеофайлу.Эта строка возвращает путь к каталогу документов.

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"]]];
...