保利威视频播放器功能抽取,仅作为播放课程资源使用,去除多余功能
由于项目中所使用的场景,除了直播和回放,还有一个就是简单的课程资源播放器,然后取出整体的冗余,使用一个较为简单播放器来进行播放操作。保利威直播的demo和开发文档,在实际调试过程中,让人非常头疼,在github(https://github.com/polyv)上进行查看整理后,才大致进行了抽取工作。
效果如下:
首先是布局代码:
<RelativeLayoutandroid:id="@+id/question_answer_data_view_layout"android:layout_width="match_parent"android:layout_height="@dimen/top_center_player_height"android:layout_marginTop="10dp"android:background="@drawable/shape_bg_video_view"android:visibility="gone"><com.easefun.polyvsdk.video.PolyvVideoViewandroid:id="@+id/question_answer_data_video_view"android:layout_width="match_parent"android:layout_height="match_parent"></com.easefun.polyvsdk.video.PolyvVideoView><com.easefun.polyvsdk.player.PolyvPlayerMediaControllerandroid:id="@+id/question_answer_data_media_controller"android:layout_width="match_parent"android:layout_height="match_parent"android:visibility="gone" /><com.easefun.polyvsdk.player.PolyvPlayerPreviewViewandroid:id="@+id/question_answer_data_first_start_view"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/shape_bg_video_view"android:visibility="visible" /></RelativeLayout>
代码布局中比较简单,主要包含一个PolyvVideoView组件,一个PolyvPlayerMediaController控制器组件,一个PolyvPlayerPreviewView默认图组件,三个基础的布局组合成一个基础的播放窗体,包含视频缩略图,视频控制器,和视频播放器。
对应的播放逻辑代码如下:
/*** 播放视频*/fun play(vid: String, //视频资源idmediaController: PolyvPlayerMediaController, //控制器videoView: PolyvVideoView,viewLayout: RelativeLayout,firstView: PolyvPlayerPreviewView //预览图) {val danmuFragment: PolyvPlayerDanmuFragment = PolyvPlayerDanmuFragment();videoView.release();firstView.hide()videoView.setAutoPlay(true)mediaController.setDanmuFragment(danmuFragment);mediaController.initConfig(viewLayout)mediaController.hindMenuView()videoView.mediaController = mediaControllervideoView.setVid(vid)videoView.setOnPreparedListener(IPolyvOnPreparedListener2 {mediaController.preparedView()})videoView.setOnVideoStatusListener { status ->if (status < 60) {
// Toast.makeText(
// this,
// "状态错误 $status",
// Toast.LENGTH_SHORT
// ).show()} else {Log.d("yxy",String.format("状态正常 %d", status))}}//视频不播放,先显示一张缩略图firstView.setCallback(PolyvPlayerPreviewView.Callback { //在播放视频时设置viewerId方法使用示例videoView.setVid(vid)})firstView.show(vid)videoView.setOnPlayPauseListener(object : IPolyvOnPlayPauseListener {override fun onPause() {mediaController.updatePictureInPictureActions(R.drawable.polyv_btn_play_port,"pause",1,1)}override fun onPlay() {mediaController.updatePictureInPictureActions(R.drawable.polyv_btn_pause_port,"start",2,2)}override fun onCompletion() {mediaController.updatePictureInPictureActions(R.drawable.polyv_btn_play_port,"pause",1,1)}})}
由于在控制器中进行了部分操作的封装,所以此处屏蔽了一些非必要的操作。 mediaController.hindMenuView()
至此一个基础的保利威播放逻辑就算处理好了,仅引用了最基础的播放和控制器的功能,其他的功能都没用到。
保利威视频播放器功能抽取,仅作为播放课程资源使用,去除多余功能相关推荐
- Python笔记_84_我的订单_使用celery完成订单超时_视频播放_使用保利威视频加密
文章目录 我的订单 后端提供查询当前登录用户的订单列表信息 前端请求获取当前登录用户的订单信息 订单状态显示分析 使用Celery的定时任务来完成订单超时功能 视频播放 使用保利威云视频服务来对视频进 ...
- 保利威HTML5播放器使用文档(参考备用)
2018-11-19 长沙 阴 不好意思,是转载备用,不是原创的,图片为原创截图,呵呵. 功能特色: 倍速功能(0.5x / 1x / 2x ).加密.截图功能.模式切换.高清标清超清切换: 跑马灯 ...
- 第三方直播云平台(保利威和阿里云)直播集成demo
第三方直播云平台(保利威和阿里云)直播集成文档整理. 保利威: 保利威帮助中心 js demo <div id="player"></div> <sc ...
- SaaS化MR直播正式上线!保利威开启轻量化虚拟直播时代
今年3月份,保利威在Service+战略会上发布了SaaS化的MR直播系统. 坦白说,包括小编在内的绝大多数保利威人,都觉得这"事"没想象中的那么简单. ▲ 保利威发布SaaS化的 ...
- 技术赋能教育直播,保利威玩转“5G+AI”
更多精彩内容请关注我们 俗话说,人无远虑,必有近忧. 直播作为在线教育的重要手段之一,近几年在我国快速崛起,2018年出现了一个发展高潮.无论是1对1还是1对多,也无论职业教育还是传统的管理培训,在线 ...
- 保利威荣获「年度最佳直播服务商」!引领视频直播行业创新发展
2022年8月12日,弯弓Digital在第四届中国营销数字化大会上颁布了「年度最佳营销数字化企业奖」.「年度营销技术机构TOP100」.「年度私域大奖」和「年度最佳营销技术单项奖」等四大奖项. 凭借 ...
- 【科创人独家】保利威董事长谢晓昉:不做无效直播,帮助企业打通直播营销全链路
保利威是国内视频云行业的领导品牌,专注企业直播.点播,成立多年以来深耕在线教育和企业培训领域,服务过包括中央电视台.建设银行.工商银行.彭博社.太平洋保险.新东方.好未来.中信证券等知名企业在内,多达 ...
- 保利威(polyv)加密视频的使用详解---python(基于drf/vue)
0. 注册账号,新人会免费用7天 polyv官网地址http://www.polyv.net/vod/ 一. 根据图片步骤,创建视频分类并上传测试视频 a. b. c. d. 二. 参数介绍 ...
- 保利威Service+战略发布会「服务+技术」开启私域直播新纪元
植物生长离不开营养元素的供给,只有当肥料与水充分地「溶合」,才能被植物所吸收,茁壮成长. 在围绕技术+服务构建起来的SaaS体系中,这个道理同样适用. 3月22日,保利威Service+战略发布会如期 ...
最新文章
- java nio原理 epoll_多路复用 Select Poll Epoll 的实现原理(BIO与NIO)
- 为什么说「中台」程序员未来会最值钱?
- ORB-SLAM2实现(kinect V1/ROS)
- logwrapper的作用
- GraphQL的query只返回所请求的字段的实现原理
- JavaScript基于对象编程
- [C++11]可调用对象
- Detected call of `lr_scheduler.step()` before `optimizer.step()`.
- 选举学生会(洛谷P1271题题解,Java/C++语言描述)
- java 成员函数_Java继承中成员变量和成员函数的覆盖
- codeforces 707D-(DFS+bitset)
- jQuery微博登录
- bzoj 1798 5039: [Jsoi2014]序列维护(线段树)
- Url传值的Get method and Post method
- SSH 登录太慢的解决方法
- GBK汉字的索引方法
- 使用python移动复制文件
- win7系统查看硬盘序列号步骤
- Python 之父出生 | 历史上的今天
- 【ZCMU1919】kirito's 星爆气流斩(多重背包)
热门文章
- DA1458x使用之第二篇——PWM
- 【keil5】MDK514、MDK530、C51、JLINK、PACK包等安装与下载
- catia曲面设计从入门到精通_CATIA+V5曲面设计从入门到精通_11685491.pdf
- ctfhub-->命令注入练习
- Ubuntu下视频播放加速软件SMPlyer
- java addservlet_servlet增删改查
- 基于VB中WINSOCK控件的网上象棋系统的实现
- 单骑745公里闯关东
- [RK3288]backlight pwm_bl控制双屏背光改写
- C语言试题115之两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定 比赛名单。有人向队员打听比赛的名单。a 说他不和 x 比,c 说他不和 x,z 比,请