接入第三方视频播放器实践

1、第一种添加播放器

github
https://github.com/CarGuo/GSYVideoPlayer
这个第三方播放器好使的,但是不知道为什么接入后横屏拍摄的视频大小变成了正方形样式的,而不是宽度占全部;没找到解决方法,于是换了个简单的库使用。

接入过程

1、引入gradle
	implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer:v8.1.6-jitpack'
2、item_preview_video.xml
3、使用

2、item_preview_video.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    >

	<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
        android:id="@+id/detail_player"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

3、使用

class VideoPreview extends AdapterDelegate<List<Bean>> {

    private Context mContext;

    public VideoPreview(Context context){
        mContext = context;
    }

    @Override
    public boolean isForViewType(@NonNull List<Bean> items, int position) {
        return items.get(position).path.endsWith(".mp4");
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_preview_video, parent, false);
        return new  VideoPreviewHolder(view, mContext);
    }

    @Override
    public void onBindViewHolder(@NonNull List<Bean> items, int position, @NonNull RecyclerView.ViewHolder holder, @NonNull List<Object> payloads) {
        final  VideoPreviewHolder pHolder = ( VideoPreviewHolder) holder;
        Bean mb = items.get(position);
	    pHolder.standardGSYVideoPlayer.setUpLazy(mb.path,false,null,null,null);
        pHolder.standardGSYVideoPlayer.getBackButton().setVisibility(View.GONE);
       	pHolder.standardGSYVideoPlayer.getFullscreenButton().setVisibility(View.GONE);

    }

    static class VideoPreviewHolder extends RecyclerView.ViewHolder {

        private StandardGSYVideoPlayer standardGSYVideoPlayer;
        
        public  VideoPreviewHolder(View itemView, Context context) {
            super(itemView);
            standardGSYVideoPlayer = itemView.findViewById(R.id.detail_player);


        }
    }

}

在需要暂停的地方调用
GSYVideoManager.onPause(); 暂停
GSYVideoManager.releaseAllVideos(); 释放

在原代码基础上添加
完成以上即可播放视频

2、第二种添加播放器

github
https://github.com/Jzvd/JZVideo

这个超级简单的使用~
步骤一样的
1、gradle
implementation ‘cn.jzvd:jiaozivideoplayer:7.7.0’
2、xml

<cn.jzvd.JzvdStd
        android:id="@+id/jz_video"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

3、使用,改一下holder

@Override
    public void onBindViewHolder(@NonNull List<Bean> items, int position, @NonNull RecyclerView.ViewHolder holder, @NonNull List<Object> payloads) {
        final VideoPreviewHolder pHolder = (VideoPreviewHolder) holder;
        Bean mb = items.get(position);

        pHolder.jzvdStd.setUp(mb.path,null);
        SAVE_PROGRESS = false;                  // 不保存进度
        loadImage(mb.path,pHolder.jzvdStd.posterImageView);

    }

    static class VideoPreviewHolder extends RecyclerView.ViewHolder {

        JzvdStd jzvdStd;
        
        public VideoPreviewHolder(View itemView, Context context) {
            super(itemView);

            jzvdStd = itemView.findViewById(R.id.jz_video);

        }
    }

在需要暂停的地方添加
Jzvd.releaseAllVideos();

就可了~

2.1 Module

这个第三方的问题在于我找不到他修改视频封面图的接口,因为他这里的封面图ImageView是这样设定的
在这里插入图片描述
我没找到接口也不知道怎么重写第三方的界面,于是只好把gradle依赖(记得删除gradle依赖)变成Module依赖
1、import Module
File
Import Module
(事先在github上下载这个工程文件,然后找到JZVideo-develop这个文件存放的位置)
选择E:\ProjectIng\211101\1102\JZVideo-develop\library
OK
Finish

2、Dependencies
File
Project Structure
Dependencies
All Dependencies 点+ 选第三个Module Dependency
然后选上你新加进来的Module
于是在gradle(:app)会自动出现
在这里插入图片描述
在settings.gradle中也会自动出现
在这里插入图片描述
此时就可以修改啦~
找到那个xml,改成适配需求的~
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值