Android平台的视频开源库可谓百花齐放,直接给出比较流行的几大框架github地址:https://github.com/search?l=Java&o=desc&q=ExoPlayer&s=stars&type=Repositories ,基本都是基于ExoPlayer、ijkplayer、MediaPlayer等库进一步的开发,这里不再赘述了,因为之前项目中用到NiceVieoPlayer这个开源库:Gthub地址: https://github.com/xiaoyanger0825/NiceVieoPlayer ,简单轻巧的结构和界面很适合笔者项目,在上线之后,体验也可以,本次迭代准备新增倍速播放,毕竟视频播放太慢看起来也枯燥,于是乎开发视频倍速播放功能:
第三步,设置倍速功能;
因开源库作者没有对倍速做进一步开放,故此笔者这里具体罗列下相关代码:
第一步,设置视频类型为IjkPlayer,只有它支持倍速,且系统在5.0以上;
mNiceVideoPlayer = (NiceVideoPlayer) findViewById(R.id.nice_video_player);
mNiceVideoPlayer.setPlayerType(NiceVideoPlayer.TYPE_IJK); // or NiceVideoPlayer.TYPE_NATIVE
第二步,笔者不需要设置清晰度,故此将清晰度作为倍速功能使用,开源库本身没有做倍速功能;
//清晰度 当做倍速 5.0 以上
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
TextView mClarity = (TextView) this.findViewById(com.xiao.nicevideoplayer.R.id.clarity);
mClarity.setVisibility(View.VISIBLE);
mClarity.setText(mFloat + "X");
mClarity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switchPlayVideoSpeed(view);
}
});
}
第三步,设置倍速功能;
/**
* 显示倍速比例
*/
private void switchPlayVideoSpeed(View view) {
mFloat = resolveSpeed(mFloat);
TextView mClarity = (TextView) view;
mClarity.setText(mFloat + "X");
//这里是播放,注意speed设置要在start或restart方法之后调用,否则设置不起作用。
mNiceVideoPlayer.restart();
mNiceVideoPlayer.setSpeed(mFloat);
}
public static float resolveSpeed(float speed) {
if (speed == 1) {
speed = 1.25f;
} else if (speed == 1.25f) {
speed = 1.5f;
} else if (speed == 1.5f) {
speed = 1.75f;
} else if (speed == 1.75f) {
speed = 2f;
} else if (speed == 2f) {
speed = 1f;
}
return speed;
}
第四,项目效果展示(IT面试宝典 for Android版),点击倍速就会按照顺序切换:
注意:设置倍速必须在调用start方法之后设置,否则无效,笔者此处浪费很长时间,曾一度怀疑开源库代码有问题,罪过罪过,同时也特别感谢作者XiaoJianjun的开源贡献;
另附:本项目已发布,欢迎各位朋友体验指教:IT面试宝典 for Android版。