1

小さな動画 (1 ~ 3 MB) を Web サイトから iPhone アプリにストリーミングしています。私はスライスホスト Web サーバーを持っています。「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.

しかし、そのロード状態は私のアプリでこれに設定されることはありません。

何か不足していますか?これを行うより良い方法はありますか?

4

1 に答える 1

5

値ではなくフラグであることに気付いたことを確認してください。

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

if (mp.loadState & MPMovieLoadStatePlaythroughOK)
{
    // Do stuff
}
于 2011-04-08T11:12:44.753 に答える