同时顺利地播放视频[没有可见的从一个切换到另一个]

时间:2012-11-02 12:40:31

标签: android video-streaming android-videoview

我是Android的新手,想要一个接一个地播放视频,以便它看起来像连续视频。

我发现stackoverflow上的这个链接非常有帮助。 how-to-play-videos-one-after-another-simultaneously 当我使用这个时,虽然我可以一个接一个地播放视频, 但是,从一个片段切换到另一个片段会导致暂停视频一秒钟,然后播放下一个因此,它看起来不像连续视频。

请帮我解决我的问题。 这是我的代码。

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类实例。 试图通过第一个播放器播放第一个视频,第二个播放器播放第二个视频, 来自第一个玩家的第三个视频和来自第二个玩家的第四个视频等等。

但我仍然无法顺利播放视频,同样存在问题。

这是我的双重播放器代码。

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();        

        }
    };

}

1 个答案:

答案 0 :(得分:2)

您根本没有真正使用两个VideoViews,而是将VideoViewVideoView1分配给R.id.VVSimpleVideo,因此它们是同一个对象。这意味着每次点击onCompletion时,它都会重新设置自己,而不是设置一个并播放另一个。

尝试在布局中创建两个单独的VideoView对象。将一个设置为VISIBLE,将一个设置为GONE / INVISIBLE,并在需要更改时进行交换。

但是,我不能保证它会“无缝”,因为这是一项几乎不可能完成的任务。即使大多数桌面媒体播放器也不是真正无缝的这取决于你对接缝的容忍度。