4

Mediaplayer が関連付けられたカスタム ビューを作成しようとしています。私がやりたいことは、最初のフレームが画面にレンダリングされると、MediaPlayer が 1 ~ 2 秒間一時停止してからビデオを終了することです。その最初のフレームがいつ画面に表示されるかを把握しようとして問題が発生しています。私は使用してみました:

MediaPlayer.start() の直後に Mediaplayer.pause() - システムがビデオをロードするのに時間がかかり、これを行うと画面が黒くなるため、これは機能しません。

OnBufferingUpdateListener - インターネットからのビデオにのみ適用されるため、機能しません

OnInfoListener MEDIA_INFO_VIDEO_RENDERING_START - API は 17 で、高すぎます。

カスタム ビューでの onDraw - 現在テスト中ですが、ビデオ フレームがいつ描画されているかを知る方法がわかりません。

私が現在行っているのは、コードでタイマーを設定して 50 ミリ秒のように待機し、タイマーが完了するとビデオを一定時間一時停止することです。ただし、これは応急処置であり、長期的な解決策ではありません。

この問題を解決する唯一の方法は、ある種のカスタム リスナーを設定するか、ビデオ フレームが画面に表示されると呼び出されるメソッドを使用することだと思います。ただし、私の問題は、何をリッスンするかわからないことと、ビデオの再生が開始されたときに呼び出されるメソッドが見つからないことです。したがって、この問題を解決するための助けをいただければ幸いです。

4

2 に答える 2

1

あなたは正しいです:

mediaPlayer.start();
mediaPlayer.pause();

最初のフレームで停止しません。

mediaPlayer.seek(0);

最初のフレームを更新して表示し、一時停止状態のままにします。

于 2015-02-11T15:45:35.313 に答える