最近项目中想使用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