MPMoviePlayerContentPreloadDidFinishNotification似乎比MPMoviePlayerLoadStateDidChangeNotification更可靠

时间:2011-01-08 09:44:05

标签: ios4 video-streaming mpmovieplayercontroller mpmovieplayer

我将小型电影(1-3MB)从我的网站流式传输到我的iPhone应用程序中。我有一个slicehost网络服务器,我认为这是一个“500MB切片”。我不确定这是如何转化为带宽的,但我可以稍后解决这个问题。

我对MPMoviePlayerLoadStateDidChangeNotification的体验不是很好。 使用旧的MPMoviePlayerContentPreloadDidFinishNotification

我得到更可靠的结果

如果我收到MPMoviePlayerContentPreloadDidFinishNotification,电影将播放时不会出现口吃,但如果我使用MPMoviePlayerLoadStateDidChangeNotification,则电影会频繁停止播放。

我不确定要检查哪种加载状态:

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

MPMovieLoadStatePlaythroughOK似乎是我想要的(基于文档中的描述):

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

但是在我的应用中,负载状态从未设置为此。

我错过了什么吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:5)

只是确保您注意到这是一个标志,而不是一个值

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

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