




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Android多功能视频播放器GSYVideoPlayer开发流程目录前言引入依赖开发设置具体实现
前言
今天,和大家分享一个开源的多功能视频播放器GSYVideoPlayer,支持弹幕,滤镜、水印、gif截图,片头广告,声音、亮度调节等众多功能,这里就利用它来实现一个标准的视频播放器,那么,话不多说,Go~
GSYVideoPlayer一个基于IJkPlayer的播放器
支持调节声音亮度
边播边缓存使用了AndroidVideoCache;ExoPlayer使用SimpleCache
支持多种协议h263\4\5、Https、concat、rtsp、hls、rtmp、crypto、mpeg等等
简单滤镜(马赛克、黑白、色彩过滤、高斯、模糊、模糊等等20多种)、动画、(水印、画面多重播放等)
视频第一帧、视频帧截图功能,视频生成gif功能。
调整显示比例:默认、16:9、4:3、填充;播放时旋转画面角度(0,90,180,270);镜像旋转
IJKPlayer、EXOPlayer、MediaPlayer切换、自定义内核
小窗口、多窗体下(包括桌面)的小窗口播放。
片头广告、跳过广告支持、中间插入广告功能。
暂停前后台切换不黑屏;调整不同清晰度的支持;无缝切换支持;锁定/解锁全屏点击功能;进度条小窗口预览
可自定义渲染层、自定义管理层、自定义播放层(控制层)、自定义缓存层
引入依赖
maven{urlhttps://jitpack.io}
maven{url/repository/public}
//完整版引入
implementationcom.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer:v8.3.3-release-jitpack
//是否需要AliPlayer模式
implementationcom.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-aliplay:v8.3.3-release-jitpack
开发设置
设置Activity的configChanges和screenOrientation
activity
android:name=".MainActivity"
android:exported="true"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation="fullSensor"
intent-filter
actionandroid:name="ent.action.MAIN"/
categoryandroid:name="ent.category.LAUNCHER"/
/intent-filter
/activity
xmlversion="1.0"encoding="utf-8"
LinearLayoutxmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
android:id="@+id/videoPlayer"
android:layout_width="match_parent"
android:layout_height="match_parent"/
/LinearLayout
设置要播放的视频链接
videoPlayer=findViewById(R.id.videoPlayer)
videoPlayer.setUp(videoUrl,true,"title")
如果你想添加视频封面的话,可以这样设置
valcoverImg=ImageView(this)
coverImg.setImageResource(R.drawable.cover)
videoPlayer.thumbImageView=coverImg
具体实现
隐藏自带的标题和返回键
videoPlayer.titleTextView.visibility=View.GONE
videoPlayer.backButton.visibility=View.GONE
设置旋转,横屏显示
orientationUtils=OrientationUtils(this,videoPlayer)
videoPlayer.fullscreenButton.setOnClickListener{
orientationUtils.resolveByClick()
开始播放
videoPlayer.startPlayLogic()
除此之外,还需处理一下生命周期
overridefunonPause(){
super.onPause()
videoPlayer.onVideoPause()
overridefunonResume(){
super.onResume()
videoPlayer.onVideoResume()
overridefunonDestroy(){
super.onDestroy()
GSYVideoManager.releaseAllVideos()
orientationUtils.releaseListener()
}
在横屏时,如果想点击返回键回到竖屏而不是退出的话,需要重写onBackPressed
overridefunonBackPressed(){
if(orientationUtils.screenType==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
videoPlayer.fullscreenButton.performClick()
return
videoPlayer.setVideoAllCallBack(null)
super.onBackPressed()
}
如果,视频是以列表的形式展现的话,也是OK的,首先搞个RecyclerView
xmlversion="1.0"encoding="utf-8"
androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".VideoListActivity"
androidx.recyclerview.widget.RecyclerView
android:id="@+id/video_recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/
/androidx.constraintlayout.widget.ConstraintLayout
编写item布局
xmlversion="1.0"encoding="utf-8"
LinearLayoutxmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="30dp"
com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
android:id="@+id/item_player"
android:layout_width="match_parent"
android:layout_height="300dp"/
/LinearLayout
RecyclerView适配器
classVideoAdapter(privatevalurlList:ListString,privatevalcontext:Context):
RecyclerView.AdapterVideoAdapter.ViewHolder(){
innerclassViewHolder(view:View):RecyclerView.ViewHolder(view){
valitemPlayer:StandardGSYVideoPlayer=view.findViewById(R.id.item_player)
overridefunonCreateViewHolder(parent:ViewGroup,viewType:Int):ViewHolder{
valview=LayoutInflater.from(context).inflate(R.layout.item_video,parent,false)
returnViewHolder(view)
overridefunonBindViewHolder(holder:ViewHolder,position:Int){
//配置StandardGSYVideoPlayer
with(holder.itemPlayer){
setUpLazy(urlList[position],true,null,null,"title")
//隐藏标题和返回键
titleTextView.visibility=View.GONE
backButton.visibility=View.GONE
//全屏按键
fullscreenButton.setOnClickListener{
holder.itemPlayer.startWindowFullscreen(context,false,true)
//防止错位设置
playPosition=position
//是否根据视频尺寸,自动选择横竖屏全屏
isAutoFullWithSize=true
//音频焦点冲突时是否释放
isReleaseWhenLossAudio=false
//全屏动画
isShowFullAnimation=true
//不能触摸滑动
setIsTouchWiget(false)
overridefungetItemCount()=urlList.size
Activity
valvideoRecyclerView=findViewByIdRecyclerView(R.id.video_recyclerView)
vallayoutManager=LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)
videoRecyclerView.layoutManager=layoutManager
//GlobalUrl.urlList为视频链接集合
valvideoAdapter=VideoAdapter(GlobalUrl.urlList,this)
videoRecyclerView.adapter=videoAdapter
videoRecyclerView.addOnScrollListener(object:RecyclerView.OnScrollListener(){
overridefunonScrolled(recyclerView:RecyclerView,dx:Int,dy:Int){
super.onScrolled(recyclerView,dx,dy)
//可见区域的第一个item
valfirstPosition=layoutManager.findFirstVisibleItemPosition()
//可见区域的最后一个item
vallastPosition=layoutManager.findLastVisibleItemPosition()
//播放的位置
valplayPosition=GSYVideoManager.instance().playPosition
if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仙桃职业学院《材料基础化学实验》2023-2024学年第二学期期末试卷
- 山西省同煤二中2025届高三年级第一次教学质量诊断性联合考试语文试题含解析
- 三亚市白沙黎族自治县2025年数学三下期末经典试题含解析
- 山东省宁阳县市级名校2024-2025学年初三第二学期月考试卷(二)英语试题含答案
- 山东省潍坊市高密市2025届初三年级第二学期调研考试数学试题含解析
- 厦门理工学院《社会救助与社会福利》2023-2024学年第二学期期末试卷
- 南通科技职业学院《工程光学设计(双语)》2023-2024学年第二学期期末试卷
- 江苏省启东汇龙中学2025年初三第二次调研考试(物理试题文)试卷含解析
- 山东滨州阳信县2025届初三10份综合模拟检测试题含解析
- 绿色能源新能源汽车充电桩场地租赁与智能充电设备安装协议
- 铝加工深井铸造培训
- 国家中小学智慧教育平台应用指南
- 2025年广告设计师(高级)职业资格认定参考试题库(含答案)
- 2025年军队文职-收发员兼通信员技术考点精练必做300题(含答案)
- 2025年高中语文高考作文押题预测十篇
- 学生心理健康一生一策档案表
- 外研版(三起)(2024)三年级下册英语Unit 5 单元测试卷(含答案)
- 国家义务教育质量监测八年级美术样卷
- 畜牧业人才培养的新机遇与发展路径
- 环境监测信息化建设-深度研究
- 植物蛋白资源利用-深度研究
评论
0/150
提交评论