设置同一个Vitamio中的VideoView播放不同URL下的视频

最近项目中想使用Vitamio作为视频播放的框架,需要在同一个VideoView中切换不同的URL播放不同的视频,但是切换过程中声音切换过去了,图像却卡住了,百度上居然没有一篇文章解决此问题的,请教各位解决办法

代码如下:
...
// ---------------------------------------以下为视频播放相关----------------------------

/**
 * 视频播放
 */
private void playVideo(String videoUrl)
{

    String[] split = videoUrl.split("/");// 把URL上最后的视频名字添加到标题
    mCustomMediaController.setVideoName(split[split.length - 1]);

    vv.setVideoURI(Uri.parse(videoUrl));// 设置视频播放地址
    mCustomMediaController.show(7000);// 设置控制条显示时间
    vv.setMediaController(mCustomMediaController);
    vv.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);// 高画质
    vv.requestFocus();

    // 设置信息接口
    vv.setOnInfoListener(new OnInfoListener()
    {

        @Override
        public boolean onInfo(MediaPlayer mp, int what, int extra)
        {
            switch (what)
            {
            case MediaPlayer.MEDIA_INFO_BUFFERING_START:
                if (vv.isPlaying())
                {
                    vv.pause();
                    pb.setVisibility(View.VISIBLE);
                    downloadRateView.setText("");
                    loadRateView.setText("");
                    downloadRateView.setVisibility(View.VISIBLE);
                    loadRateView.setVisibility(View.VISIBLE);

                }
                break;
            case MediaPlayer.MEDIA_INFO_BUFFERING_END:
                vv.pause();// 缓冲完成暂停,等待用户点击播放
                pb.setVisibility(View.GONE);
                downloadRateView.setVisibility(View.GONE);
                loadRateView.setVisibility(View.GONE);
                break;
            case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED:
                downloadRateView.setText("" + extra + "kb/s" + "  ");
                break;
            }
            return true;

        }
    });

    // 设置缓存接口
    vv.setOnBufferingUpdateListener(new OnBufferingUpdateListener()
    {

        @Override
        public void onBufferingUpdate(MediaPlayer mp, int percent)
        {
            loadRateView.setText(percent + "%");
        }
    });

    // 设置准备接口
    vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
    {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer)
        {

            mediaPlayer.setPlaybackSpeed(1.0f);

        }
    });

    vv.pause();
}

}
...

调用的地方如下:
...


            
                    vv.stopPlayback();// 释放之前播放过的资源

                    playVideo(videoUrl);//点击按钮调用此方法,传入不同的URL
                    
                    
                
            
阅读 3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题