14

私はAndroidを初めて使用し、連続したビデオのように見えるように、ビデオを次々に同時に再生したいと考えています。

私はstackoverflowのこのリンクが非常に役立つことを発見しました。how-to-play-videos-one-after-another-同時に これを使用しているときは、ビデオを次々に再生できますが、 あるセグメントから別のセグメントに切り替えると、次の再生前にビデオが1秒間一時停止します1つ そのため、これが原因で連続動画のようには見えません。

私の問題を解決するのを手伝ってください。これが私のコードです。

public class VideoActivity extends Activity{

     VideoView videoView, videoView1;
     MediaController mc;
     int count = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);

        videoView = (VideoView) findViewById(R.id.VVSimpleVideo);
        setup();
        videoView.setOnCompletionListener(completionListener);

    }

    public void setup() {

        String _path = "/mnt/sdcard/Video/"+count+".mp4";
        videoView.setVideoPath(_path);
        videoView.start();
        count++;
    }


    private OnCompletionListener completionListener=new OnCompletionListener() {

        public void onCompletion(MediaPlayer mp) {
            mp.stop();
            setup();
        }
    };

}

今、私はVideoViewクラスの2つのインスタンスを取得して再生しようとしました。 最初のビデオを最初のプレーヤーで、2番目のビデオを2番目のプレーヤーで、3番目のビデオを最初のプレーヤーで、4番目のビデオを2番目のプレーヤーで再生しようとしました。

しかし、それでも私はビデオをスムーズに再生することができず、同じ問題が存在します。

これがダブルプレーヤーの私のコードです。

public class VideoActivity extends Activity{

     VideoView videoView, videoView1;
     MediaController mc;
     int count = 0;
     String _path;
     String _path1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);

        videoView = (VideoView) findViewById(R.id.VVSimpleVideo);
        _path = "/mnt/sdcard/Video/"+count+".mp4";
        videoView.setVideoPath(_path);
         videoView.start();
        //setup();
        videoView.setOnCompletionListener(completionListener);

        videoView1 = (VideoView) findViewById(R.id.VVSimpleVideo);

        videoView1.setOnCompletionListener(completionListener1);
        count++;
        _path1 = "/mnt/sdcard/Video/"+count+".mp4";
        videoView1.setVideoPath(_path1);
    }

    public void setup() {


        videoView.start();
        count++;
        _path1 = "/mnt/sdcard/Video/"+count+".mp4";
        videoView1.setVideoPath(_path1);
    }

    public void setup1() {


        videoView1.start();

        count++;
        _path = "/mnt/sdcard/Video/"+count+".mp4";
        videoView.setVideoPath(_path);
    }

    private OnCompletionListener completionListener=new OnCompletionListener() {

        public void onCompletion(MediaPlayer mp) {
            mp.stop();
            setup1();       

        }
    };

    private OnCompletionListener completionListener1=new OnCompletionListener() {

        public void onCompletion(MediaPlayer mp) {
            mp.stop();

            setup();        

        }
    };

}
4

1 に答える 1

2

実際には2つを使用していません。両方とをVideoViews割り当てているので、これらは同じオブジェクトです。つまり、を押すたびに、一方を設定してもう一方を再生するのではなく、もう一度設定し直します。VideoViewVideoView1R.id.VVSimpleVideoonCompletion

レイアウトに2つの別々VideoViewのオブジェクトを作成してみてください。1つを/にVISIBLE設定し、変更するときに交換します。GONEINVISIBLE

それがほとんど不可能な作業なので、それが「シームレス」になることを保証することはできません。ほとんどのデスクトップメディアプレーヤーでさえ、真にシームレスではありません。縫い目に対する許容度によって異なります。

于 2012-11-02T17:12:53.150 に答える