本篇文章主要介绍了"视频播放三——视频播放",主要涉及到方面的内容,对于移动开发感兴趣的同学可以参考一下:
这一篇开始讲视频播放,这是整个项目最重要的部分,所以尽量说的详细点。我们的视频播放使用的是surfaceView+MediaPlayer,下面一步一步来看具体的...
case SEEKBAR_TOUCHED:
mVideoPlayer.seekTo(mTopSeekBar.getProgress());
mBottomSeekBar.setProgress(mTopSeekBar.getProgress());
mTvPlayedTime.setText(Utils.formatToString(mTopSeekBar.getProgress()));break;
调用seekTo方法改变播放位置,并且更新已播放时间。
(3) 在线视频缓存的更新:
记得在初始化mVideoPlayer时设置的一堆监听吗?有一个mVideoPlayer.setOnBufferingUpdateListener(PlayActivity.this),这个就是设置缓存变化的监听。当缓存发生变化时,会调用onBufferingUpdate方法,如下:
/**
*
* @param mp
* @param percent 表示缓存加载进度,0为没开始,100表示加载完成,
* 在加载完成以后也会一直调用该方法
*/@OverridepublicvoidonBufferingUpdate(MediaPlayer mp, int percent) {
// 如果是本地视频,则不更新缓存进度(按理说本地缓存不会调用此方法,// 但不知道为什么rmvb格式的视频会调用这个,所以需要做此判断)if (mVideoFrom == Contants.LOCAL)
return;
if (!isVideoCacheComplate){
int second = (mTopSeekBar.getMax() * percent / 100);
mTopSeekBar.setSecondaryProgress(second);
mBottomSeekBar.setSecondaryProgress(second);
if (percent == 100){
isVideoCacheComplate = true;
}
}
}
参数precent表示缓存加载进度,因为当precent==100时,此方法还是会不停地调用,所以设置了一个标志isVideoCacheComplate,当percent==100时让isVideoCacheComplate = true,就不需要再设置缓存进度了。当然,当isVideoCacheComplate == false时,需要根据percent的值计算当前的缓存进度,然后通过setSecondaryProgress方法设置给seekbar。
按照个人理解,onBufferingUpdate放只有播放在线视频时才会调用,但是测试时发现在播放本地的rmvb格式时候是也会调用,所以需要判断当前视频的来源mVideoFrom,如果时本地视频直接返回。
来张在线视频的图:

可以看到,缓存完的进度是黄色的,对比之前的横屏图,没有缓存的是灰色的。
这一篇将的东西有些多,还有两个功能播放界面顶部底部布局的隐藏和横竖屏的切换放在下一篇总结中讲,这一篇就到这里。
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('
').text(i));
};
$numbering.fadeIn(1700);
});
});
以上就介绍了视频播放三——视频播放,包括了方面的内容,希望对移动开发有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_539125_4.html