Skip to content

视频播放器,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频本身自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,直接添加控件为封面,列表全屏动画,列表小窗口支持拖动,5.0的过场效果,其他一些小动画效果。简书:

Notifications You must be signed in to change notification settings

geolo123/GSYVideoPlayer

Repository files navigation

基于IJKPlayer的播放器,直接参考了JieCaoVideoPlayer进行了一些自己想要的调整

====================== ``` com.shuyu gsyVideoPlayer 1.1.0 pom ``` ```

compile 'com.shuyu:gsyVideoPlayer:1.1.0'

```
  • 支持基本的拖动,声音、亮度调节

  • 支持边播边缓存,使用了AndroidVideoCache的代理模式实现

  • 支持视频本身自带rotation的旋转

  • 增加了重力旋转与手动旋转的同步支持

  • 支持列表播放

  • 直接添加控件为封面

  • 兼容一些5.0的过场效果

效果,录屏下的屏幕旋转和实际有些出入

*

1、打开一个播放

*

2、列表

*

3、详情模式

(未提交JCenter)1.1.1

  • 增加了ListVideoUtil全屏是否显示横屏,全屏是否自动旋转
  • 增加了ListVideoUtils隐藏状态栏和title的接口

GSYVideoPlayer 播放器控件,抽象类,继承后可以直接使用,参考 StandardGSYVideoPlayer

记得调用销毁

@Override
 protected void onDestroy() {
     super.onDestroy();
     GSYVideoPlayer.releaseAllVideos();
}

StandardGSYVideoPlayer 标准的播放播放器,可参考demo中的playActivity


设置播放url,第二个参数表示需要边播边缓存
videoPlayer.setUp(url, true, "");

//增加封面
ImageView imageView = new ImageView(this);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageResource(R.mipmap.xxx1);
videoPlayer.setThumbImageView(imageView);

//增加title
videoPlayer.getTitleTextView().setVisibility(View.VISIBLE);
videoPlayer.getTitleTextView().setText("测试视频");

//设置返回键
videoPlayer.getBackButton().setVisibility(View.VISIBLE);

//设置旋转
orientationUtils = new OrientationUtils(this, videoPlayer);

//设置全屏按键功能
videoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        orientationUtils.resolveByClick();
    }
});

//设置返回按键功能
videoPlayer.getBackButton().setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onBackPressed();
    }
});

//在列表中使用的接口,详情请看Demo中的ListVideoActivity

/**
 * 利用window层播放全屏效果
 *
 * @param context
 * @param actionBar 是否有actionBar,有的话需要隐藏
 * @param statusBar 是否有状态bar,有的话需要隐藏
 */
public void startWindowFullscreen(final Context context, final boolean actionBar, final boolean statusBar)


/**
 * 退出window层播放全屏效果
 */
public void clearFullscreenLayout()

还有用于onBackPressed()的
/**
  * 退出全屏
  *
  */
public static boolean backFromWindowFull(Context context)

@Override
public void onBackPressed() {
    if (StandardGSYVideoPlayer.backFromWindowFull(this)) {
        return;
    }
    super.onBackPressed();
}

OrientationUtils 重力旋转的工具类

//设置旋转
OrientationUtils orientationUtils = new OrientationUtils(Activity, videoPlayer);

ListVideoUtil 列表模式支持支持滑出屏幕继续播放和全屏的工具类

与上面的StandardGSYVideoPlayer实现列表播放和全屏播放不大一样,ListVideoUtil只有一个StandardGSYVideoPlayer,使用外部container来是先全屏 列表滑动不会影响到播放,具体可以查看demo里的ListVideoActivity和ListVideo2Activity.

listVideoUtil = new ListVideoUtil(Activity);
设置需要全屏显示的父类
listVideoUtil.setFullViewContainer(videoFullContainer);
.....

//对列表进行处理,传入每个item的位置,封面,TAG(如果有多个不同列表,用不同TAG区分),视频列表item的父容器,播放按键
/**
 * 动态添加视频播放
 *
 * @param position  位置
 * @param imgView   封面
 * @param tag       TAG类型
 * @param container player的容器
 * @param playBtn   播放按键
 */
public void addVideoPlayer(final int position, View imgView, String tag,
                               ViewGroup container, View playBtn)

holder.playerBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        notifyDataSetChanged();
        //设置播放的位置和TAG
        listVideoUtil.setPlayPositionAndTag(position, TAG);
        final String url = "http://baobab.wdjcdn.com/14564977406580.mp4";
        //开始播放
        listVideoUtil.startPlay(url);
    }
});


/**
 * 是否自动旋转
 *
 * @param autoRotation 是否要支持重力旋转
 */
public void setAutoRotation(boolean autoRotation)


/**
 * 是否全屏就马上横屏
 *
 * @param fullLandFrist 如果是,那么全屏的时候就会切换到横屏
 */
public void setFullLandFrist(boolean fullLandFrist)

/**
 * 是否隐藏statusBar
 *
 * @param hideStatusBar true的话会隐藏statusBar,在退出全屏的时候会回复显示
 */
public void setHideStatusBar(boolean hideStatusBar)

/**
 * 是否隐藏actionBar
 *
 * @param hideActionBar true的话会隐藏actionbar,在退出全屏的会回复时候显示
 */
public void setHideActionBar(boolean hideActionBar)


混淆

-keep class tv.danmaku.ijk.** { *; }
-dontwarn tv.danmaku.ijk.**
  • //TODO 优化全屏的动画和全屏的效果

  • //TODO 优化接入的效果

About

视频播放器,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频本身自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,直接添加控件为封面,列表全屏动画,列表小窗口支持拖动,5.0的过场效果,其他一些小动画效果。简书:

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%