MPMoviePlayer загружает и воспроизводит фильм, сохраненный в документах приложения - PullRequest
6 голосов
/ 15 октября 2010

Я пишу приложение, которое хранит фильмы в фотопленке в локальной папке документов для приложения. Я могу воспроизводить удаленные фильмы с помощью MPMoviePlayer, однако при попытке воспроизвести фильм, хранящийся в папке документов для приложения, всегда возвращается MPMovieLoadStateUnknown.

Все уведомления отправляются и принимаются из центра уведомлений по умолчанию (MPMoviePlayerLoadStateDidChangeNotification, MPMoviePlayerPlaybackDidFinishNotification). Вскоре после получения сообщения loadStateUnknown в консоли появляется окно с предупреждением о том, что фильм не может быть воспроизведен, а затем приложение получает уведомление о завершении воспроизведения фильма.

Я думаю, что это может быть случай, когда имя файла (MPMoviePlayer может принимать только URL в качестве местоположения ресурса) не может быть найдено. Кто-нибудь имел дело с этим вопросом или схожим?

Ответы [ 4 ]

1 голос
/ 18 октября 2010

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

Вы должны использовать следующий метод для создания пути к папке документов приложения:

NSString *userDocumentsPath = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
if ([paths count] > 0) 
{
     userDocumentsPath = [paths objectAtIndex:0];
}
0 голосов
/ 15 октября 2010

Шаблон Core Data преобразует путь к файлу в URL-адрес, например, так:

NSURL *storeUrl = [NSURL fileURLWithPath:whatever];

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

0 голосов
/ 15 октября 2010

Я не уверен, поможет ли это вам.В этом уроке есть несколько строк кода, которые, вероятно, приведут вас на правильный путь:

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

Этот фрагмент кода вы найдете в следующем методе:

- (void) moviePlayerLoadStateChanged:(NSNotification*)notification 

вот ссылка научебник: учебник

Надеюсь, это поможет вам ...

0 голосов
/ 15 октября 2010

вы пытались преобразовать локальный путь к файлу в URL

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

если в пути к файлу есть пробелы, вам придется преобразовать их до создания URL

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