针对Android平台播放器开源库NiceVieoPlayer倍速的开发

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版),点击倍速就会按照顺序切换:

针对Android平台播放器开源库NiceVieoPlayer倍速的开发_第1张图片

注意:设置倍速必须在调用start方法之后设置,否则无效,笔者此处浪费很长时间,曾一度怀疑开源库代码有问题,罪过罪过,同时也特别感谢作者XiaoJianjun的开源贡献;

另附:本项目已发布,欢迎各位朋友体验指教:IT面试宝典 for Android版。

你可能感兴趣的:(移动开发)