由于项目中所使用的场景,除了直播和回放,还有一个就是简单的课程资源播放器,然后取出整体的冗余,使用一个较为简单播放器来进行播放操作。保利威直播的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()

至此一个基础的保利威播放逻辑就算处理好了,仅引用了最基础的播放和控制器的功能,其他的功能都没用到。

保利威视频播放器功能抽取,仅作为播放课程资源使用,去除多余功能相关推荐

  1. Python笔记_84_我的订单_使用celery完成订单超时_视频播放_使用保利威视频加密

    文章目录 我的订单 后端提供查询当前登录用户的订单列表信息 前端请求获取当前登录用户的订单信息 订单状态显示分析 使用Celery的定时任务来完成订单超时功能 视频播放 使用保利威云视频服务来对视频进 ...

  2. 保利威HTML5播放器使用文档(参考备用)

    2018-11-19 长沙 阴  不好意思,是转载备用,不是原创的,图片为原创截图,呵呵. 功能特色: 倍速功能(0.5x / 1x / 2x ).加密.截图功能.模式切换.高清标清超清切换: 跑马灯 ...

  3. 第三方直播云平台(保利威和阿里云)直播集成demo

    第三方直播云平台(保利威和阿里云)直播集成文档整理. 保利威: 保利威帮助中心 js demo <div id="player"></div> <sc ...

  4. SaaS化MR直播正式上线!保利威开启轻量化虚拟直播时代

    今年3月份,保利威在Service+战略会上发布了SaaS化的MR直播系统. 坦白说,包括小编在内的绝大多数保利威人,都觉得这"事"没想象中的那么简单. ▲ 保利威发布SaaS化的 ...

  5. 技术赋能教育直播,保利威玩转“5G+AI”

    更多精彩内容请关注我们 俗话说,人无远虑,必有近忧. 直播作为在线教育的重要手段之一,近几年在我国快速崛起,2018年出现了一个发展高潮.无论是1对1还是1对多,也无论职业教育还是传统的管理培训,在线 ...

  6. 保利威荣获「年度最佳直播服务商」!引领视频直播行业创新发展

    2022年8月12日,弯弓Digital在第四届中国营销数字化大会上颁布了「年度最佳营销数字化企业奖」.「年度营销技术机构TOP100」.「年度私域大奖」和「年度最佳营销技术单项奖」等四大奖项. 凭借 ...

  7. 【科创人独家】保利威董事长谢晓昉:不做无效直播,帮助企业打通直播营销全链路

    保利威是国内视频云行业的领导品牌,专注企业直播.点播,成立多年以来深耕在线教育和企业培训领域,服务过包括中央电视台.建设银行.工商银行.彭博社.太平洋保险.新东方.好未来.中信证券等知名企业在内,多达 ...

  8. 保利威(polyv)加密视频的使用详解---python(基于drf/vue)

    0. 注册账号,新人会免费用7天 polyv官网地址http://www.polyv.net/vod/ 一. 根据图片步骤,创建视频分类并上传测试视频 a.    b. c.  d.  二. 参数介绍 ...

  9. 保利威Service+战略发布会「服务+技术」开启私域直播新纪元

    植物生长离不开营养元素的供给,只有当肥料与水充分地「溶合」,才能被植物所吸收,茁壮成长. 在围绕技术+服务构建起来的SaaS体系中,这个道理同样适用. 3月22日,保利威Service+战略发布会如期 ...

最新文章

  1. java nio原理 epoll_多路复用 Select Poll Epoll 的实现原理(BIO与NIO)
  2. 为什么说「中台」程序员未来会最值钱?
  3. ORB-SLAM2实现(kinect V1/ROS)
  4. logwrapper的作用
  5. GraphQL的query只返回所请求的字段的实现原理
  6. JavaScript基于对象编程
  7. [C++11]可调用对象
  8. Detected call of `lr_scheduler.step()` before `optimizer.step()`.
  9. 选举学生会(洛谷P1271题题解,Java/C++语言描述)
  10. java 成员函数_Java继承中成员变量和成员函数的覆盖
  11. codeforces 707D-(DFS+bitset)
  12. jQuery微博登录
  13. bzoj 1798 5039: [Jsoi2014]序列维护(线段树)
  14. Url传值的Get method and Post method
  15. SSH 登录太慢的解决方法
  16. GBK汉字的索引方法
  17. 使用python移动复制文件
  18. win7系统查看硬盘序列号步骤
  19. Python 之父出生 | 历史上的今天
  20. 【ZCMU1919】kirito's 星爆气流斩(多重背包)

热门文章

  1. DA1458x使用之第二篇——PWM
  2. 【keil5】MDK514、MDK530、C51、JLINK、PACK包等安装与下载
  3. catia曲面设计从入门到精通_CATIA+V5曲面设计从入门到精通_11685491.pdf
  4. ctfhub-->命令注入练习
  5. Ubuntu下视频播放加速软件SMPlyer
  6. java addservlet_servlet增删改查
  7. 基于VB中WINSOCK控件的网上象棋系统的实现
  8. 单骑745公里闯关东
  9. [RK3288]backlight pwm_bl控制双屏背光改写
  10. C语言试题115之两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定 比赛名单。有人向队员打听比赛的名单。a 说他不和 x 比,c 说他不和 x,z 比,请