安卓有很多第三方的播放器,比如最强大的ijkPlayer和最全能的Vitamio播放器,如果是手机APP开发,可以直接拿过来用。但是TV APP开发不行,因为电视盒子的高定制性,兼容性很差,比手机上差很多,这个是我在20+盒子上测试的结果。这中间各种调试,各种参数修改,按下葫芦浮起瓢,经历了无数的噩梦。

最后,不得已,只好抱着试一试的态度,实现原生的播放器。结果在所有盒子上,完美适配,简直了。后来才知道,盒子里的芯片在视频播放这块做了修改和增强,所以调用系统原生API实现的播放器反而兼容性更好。

其实实现原生的播放器并不难,VideoView和MediaPlayer+SurfaceView这两中方式都可以。VideoView实现更简单,MediaPlayer+SurfaceView功能更强大,这里选择后者。

虽然调用系统API实现原生播放器来播放一个视频很简单,但是一个离比较完善的播放器还是很远。除了基本的播放,还有显示很多信息,包括当前播放时间,总时间,播放进度条,缓冲进度条,播放/暂停,快进/快退,已经最后的封装等。还有其他细节,比如加载视频前几秒最好不要快进/快退操作,进度条隐藏/显示的控制。

先看实现效果:

工程结构比较简单,只有一个主类调用工具类。核心目录如下:

源码地址:

https://download.csdn.net/download/zhangxiangliang2/10679353

安卓TV开发之实现原生播放器相关推荐

  1. 直播平台软件开发中选择点播播放器哪家强?

    直播平台软件开发中选择点播播放器哪家强? 太长不看版 这里选择了开源播放器IjkPlayer和直播云厂商播放器PLDroidPlayer作为测试样本. 数据统计 软硬编码 IjkPlayer PLDr ...

  2. 安卓TV开发(八) 移动智能终端多媒体爬虫技术 获取加载网页视频源

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay 从上一篇学习中,学习了多媒体技术中的怎么去用josu ...

  3. Flutter3引用原生播放器-IOS(Swift)篇

    前言 由于Flutter项目中需要使用到播放器功能,因此对flutter中各种播放器解决方案进行了一番研究和比对,最后决定还是自己通过Plugin的方法去引用原生播放器符合自己的需求,本篇文章会对各种 ...

  4. 安卓TV开发(三) 移动智能设备之实现主流TV电视盒子焦点可控UI

    前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验上有很大的区别,本系列博文主 ...

  5. 安卓TV开发(五) 移动智能终端UI之实现主流TV焦点可控UI

       载请标明出处: http://blog.csdn.net/sk719887916 ,作者: skay    由于其他网站收录,导致你无法查看本系列原创文章请点击此处 安卓TV开发(四)实现主 ...

  6. 好程序员前端分享使用JS开发简单的音乐播放器

    好程序员前端分享使用JS开发简单的音乐播放器,最近,我们在教学生使用JavaScript,今天就带大家开发一款简单的音乐播放器.首先,最终效果如图所示: 首先,我们来编写html界面index.htm ...

  7. Flutter3引用原生播放器-Android篇

    接上篇:Flutter3引用原生播放器-IOS(Swift)篇 安卓端原生播放器的接入思路与ios基本一致,所以本篇就不废话了,直接上代码: 创建插件VideoViewPlugin实现FlutterP ...

  8. 安卓期末大作业——android音乐播放器

    详情介绍 功能描述: 扫描手机上的音乐文件,显示音乐列表,显示歌词,上一首,下一首,音量控制进度条显示.app实现了在android6.0或以上动态权限申请功能,适合新手研究.搭建方法请看入门教程菜单 ...

  9. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)

    java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

最新文章

  1. 将您的窗口最前端显示
  2. windows下安装docker
  3. Merge和Rebase在Git中的区别
  4. android 程序退出广播,android 利用广播实现程序的强制退出
  5. java threadsafe 注解_Java 注解详解
  6. 如何修改操作系统运行服务器,如何设置Bios 最常见bios设置与修改详细图解教程...
  7. 卢伟冰曝Redmi K50系列最新进展:天玑9000调校比较顺利
  8. java21天打卡Day12-IO流
  9. Flask接口开发教程
  10. Axure RP 7.0初学篇01-------安装
  11. 必修的十堂电影课(男人篇)
  12. 【转帖】用友和金蝶应避免重蹈Oracle覆辙
  13. 关于nginx报499的问题排查分析
  14. java批量pdf压缩代码_怎么批量压缩PDF文档?迅捷PDF转换器帮你解决难题!
  15. 用 Python 在股票交易中实现布林带策略
  16. 使用vue控制video视频和弹幕功能
  17. 基于HOPF振荡器的CPG单元模型matlab实现
  18. 李敖北大清华和复旦演讲
  19. CQ: 字节系创作质量中台实践
  20. 公钥密码学中的公钥和私钥

热门文章

  1. JavaScript简单点击切换效果——轮播图
  2. ZMQ — 基本使用与工具类
  3. php stream_set_blocking().,stream_set_blocking阻塞和非阻塞到底怎么理解?????
  4. 数理统计讲义第二章课后答案5
  5. BugZhu抽抽抽!!
  6. 男人总会对女人的外表失去兴趣
  7. js倒计时代码最简单的_10个简单的技巧让你的 vue.js 代码更优雅
  8. 模块设计与实现经验总结(四)
  9. 修改的LLVM IR基本指令
  10. 【综述】深度学习之目标检测实战蓝皮书