100

ビデオを生のリソースとして取得し、ビデオを開始してループする次のコードがありますが、クリップの最後に来てクリップを再度開始すると、ビデオがシームレスにループする必要があります。一瞬ちらつきますが、これは私のアプリでは実際にはありません。

public class Example extends Activity {
    VideoView vv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        vv = (VideoView)findViewById(R.id.VideoView01);

        //Video Loop
        vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                vv.start(); //need to make transition seamless.
            }
        });

        Uri uri = Uri.parse("android.resource://com.example/"
                + R.raw.video);

        vv.setVideoURI(uri);
        vv.requestFocus();    
        vv.start();
    }
}

クリップの長さはわずか 22 秒ですが、シームレスに作成されているため、遅延なく作業できます。

4

8 に答える 8

248

これを試してみてください。100%うまくいきます


VideoView videoView;<---これをメソッドの外側に記述するか、最終変数として宣言します。

videoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
    }
});
于 2011-12-08T13:00:59.673 に答える
5

一時停止は、基礎となるMediaPlayerものがそのバッファーをリフレッシュするためのものです。かかる時間は多くの要因によって異なりますが、その多くは制御できません (CPU の速度、オンボードのフラッシュ ストレージの速度など)。

あなたが制御できるのは、ビデオをリソースから取り出してファイルシステムに入れることです。リソースは ZIP ファイルである APK に保存されるため、この方法でビデオを抽出するにはおそらく余分な時間がかかります。

から切り替えてaと twoを交互にVideoView使用する必要がある場合があります。1 つは再生中に次の準備が行われているため、再生が終了すると新しいプレーヤーに切り替えることができます。私はこれを試していないので、影響がどうなるかわかりません。ただし、この手法は、オーディオ再生で 1 つのクリップから別のクリップに移行するために頻繁に使用されることを知っています。SurfaceViewMediaPlayers

于 2011-01-20T12:45:01.283 に答える
2

少し遅くなりましたが、以下を使用できない理由はありますか?

MediaPlayer.setLooping(true);
于 2011-07-17T21:17:48.720 に答える
0

これが友達への回答です。クラスで使用vv.resumeする必要がありますsetOnCompletionListener

[ https://stackoverflow.com/a/27606389/3414469][1]

于 2014-12-22T16:20:44.740 に答える
0

これに対する答えは、ビデオからオーディオを削除し、.oggそれをシームレスにループできるファイルに変換してから、オーディオのないビデオを使用してループすることです。これは機能します。

于 2011-01-21T09:56:42.360 に答える