3

私は私のloadViewメソッド内thusly埋め込まMPMoviePlayerControllerを作成します。設定ContentURLは二回

self.moviePlayerController = [[[MPMoviePlayerController alloc] init] autorelease]; 

// add to view, setup moviePlayerController's view frame, etc 

そして私は、後に、ユーザーは以下のようなものを選択し、ムービーをロードすることができます。

NSURL *fileUrl = ... 
self.moviePlayerController.contentURL = fileUrl; 

を、すべてが素晴らしい作品。

しかし、私は再びcontentURLを設定した場合:

NSURL * fileUrl2 = ... self.movi​​ePlayerController.contentURL = fileUrl2。

fileUrl2 == fileUrl1の場合でも、これは機能しません。

私はcontentURLを変更すると、私は次のようplaybackStateとにloadStateを得る:最初setContentURL後

にloadState ==プレイ可能|私の第二setContentURL後

をプレイplaythroughOK

playbackState ==:

playbackState ==は、私はもちろん、作成することができます

不明

にloadState ==を停止しましたすべての映画のための新しいMPMoviePlayerControllerが、私は確かめたいより大きな問題を示すものではありません。

ありがとうございます!

答えて

9

私の初期のバージョンでは、映画は埋め込みコントロールを介して再生することしかできませんでした。 contentURLを設定した直後に映画の再生が開始された場合は、すべて正常に動作します。

しかし、これは私が望む動作ではありません。私は

-[MPMoviePlayerController play] 

が呼び出されたときに、

-[MPMoviePlayerController prepareToPlay] 

が自動的に呼び出されることを発見しました。どうやら、組み込みのコントロールとムービーの最初のフレームが表示されるためには、prepareToPlayを呼び出す必要があります。これは、setContentURLが初めて呼び出されたときに自動的に呼び出されたようです。

私はsetContentURLの呼び出しを次のように変更しました。すべてが機能しました。

self.moviePlayerController.contentURL = fileUrl; 
[self.moviePlayerController prepareToPlay]; 
+0

デバッグ時間が1行に短縮されました:)投稿してくれてありがとうございました。 – elibud

1

contentURL財産状態のドキュメント:ムービーの再生中にこのプロパティを設定すると、その映画が一時停止して、新しい映画がロードを開始します

。新しい映画は最初から再生を開始します。

これは予想された動作ではありません。 errorLogプロパティを使用して、MPMoviePlayerControllerのエラーログを取得して確認することができます。

+1

ファイルからローカルにムービーをロードしているためerrorLogを使用できません。エラーログにはネットワークストリームのみが表示されます。 –