MPMoviePlayerContentPreloadDidFinishNotification кажется более надежным, чем MPMoviePlayerLoadStateDidChangeNotification - PullRequest
1 голос
/ 08 января 2011

Я транслирую небольшие фильмы (1-3 МБ) со своего веб-сайта в приложение для iPhone. У меня есть веб-сервер slicehost, я думаю, что это «500MB слайс». Не уверен, насколько это возможно, но как я могу понять это позже.

Мой опыт работы с MPMoviePlayerLoadStateDidChangeNotification не очень хорош. Я получаю гораздо более надежные результаты со старым MPMoviePlayerContentPreloadDidFinishNotification

Если я получу MPMoviePlayerContentPreloadDidFinishNotification, фильм будет воспроизводиться без заикания, но если я использую MPMoviePlayerLoadStateDidChangeNotification, фильм часто останавливается.

Я не уверен, какое состояние загрузки проверять:

enum { MPMovieLoadStateUnknown = 0, MPMovieLoadStatePlayable = 1 << 0, MPMovieLoadStatePlaythroughOK = 1 << 1, MPMovieLoadStateStalled = 1 << 2, }; </p>

MPMovieLoadStatePlaythroughOK, кажется, то, что я хочу (основываясь на описании в документации):

MPMovieLoadStatePlaythroughOK
  Enough data has been buffered for playback to continue uninterrupted.
  Available in iOS 3.2 and later.

но это состояние загрузки НИКОГДА не устанавливается на это в моем приложении.

Я что-то упустил? Есть ли лучший способ сделать это?

1 Ответ

5 голосов
/ 08 апреля 2011

Просто убедившись, что вы заметили это флаг, а не значение ?

MPMoviePlayerController *mp = [aNotification object];
NSLog(@"LoadState: %i", (NSInteger)mp.loadState);

if (mp.loadState & MPMovieLoadStatePlaythroughOK)
{
    // Do stuff
}
...