質問

アプリで複数のビデオを再生できる必要があります。

残念ながら、2 回目に再生ボタンを押すと、ビデオが点滅して表示されます。

動画の再生にはこのコードのみを使用します

NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease];

MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url];

mp.movi​​eControlMode = MPMovieControlModeDefault;

[mp 再生];

moviePlayer = mp;

[MP リリース];

どこに問題があるのか​​誰か教えてもらえますか?前もって感謝します!

更新 1: どうやらアップルは、 ムービープレーヤー 例にも同じ問題があります。

役に立ちましたか?

解決

play 関数を呼び出す前に、初期再生時間を -1.0 に設定することによってもこれを行うことができます。

mp.initialPlaybackTime = -1.0;

このコードを play メソッドが呼び出される前に置きます。

他のヒント

この問題は、MPMoviePlayerController の再生終了後に通知システムを使用してコールバックを実行し、そこでプレーヤー オブジェクトを解放することで解決しました。

ムービーを再生する前に通知を追加します。

NSURL *url = [[[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Movie" ofType:@"m4v"]] autorelease];

MPMoviePlayerController *mp = [[MPMoviePlayerController alloc]initWithContentURL:url];

mp.movieControlMode = MPMovieControlModeDefault;

//***Add this line***
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:mp];

[mp play];

次に、コールバック メソッドを追加します。

-(void)myMovieFinished:(NSNotification*)aNotification
{
    MPMoviePlayerController *moviePlayer = [aNotification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidFinishNotification object:moviePlayer];
    [moviePlayer release];
}

唯一の解決策は...3.1用のアプリを作るには

また、OS 3.1 以降のバージョンのシミュレータで実行すると、うまくプレイできることがわかりました。点滅は表示されません。しかし、追加すると

initialPlaybackTime = -1.0

OS 3.0 でも問題なく動作します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top