/VideoPlayer

看: 本地视频/斗鱼直播/央视/地方卫视/美剧/电影. MVP+Rxjava2+Retrofit+GreenDao+ijkplayer

Primary LanguageJava

VideoPlayer

Info

项目demo

这是一个视频播放器,又不仅仅是一个播放器。它不仅能观看本地视频,还能看斗鱼直播, 能看央视和各大地方卫士,能看美剧和电影。许多功能正在紧张的开发中。。。敬请期待

参考

功能简介

  • 切换播放器: 默认播放器(基于android自带的MediaPlayer), 基于ijkplayer的播放器
  • [Bug]进度条可以预览视频(该功能有bug): 实现方法比较另类, 用Glide加载, 某些格式的视频需要能解码的库; 窗口暂时不能移动
  • [Bug]斗鱼直播源暂时不会逆向获得, 故使用了一个官方赛事MSI 4000分辨率的一个源替代来演示

依赖框架和技术

MVP, retrofit2, rxjava2

实现简介

  • MainActivity:
  • DefaultPlayActivity: 使用handler作为异步机制, 使用android自带的视频库播放视频;

斗鱼直播源的获取(未实现)

Note: @2019年6月5日17:33:56之前: 手动方式有效,python方式无效,反编译不会

斗鱼官方api

douyu开发者平台:3月公测

手动获取

斗鱼原先提供的v1可以直接获取直播地址的api已经失效,暂时无法获取地址。Demo中使用了一个24h直播间https://www.douyu.com/3346305,手动获取地址,来测试。 斗鱼直播源破解参考

具体破解步骤:

  • 假设原直播源地址为http://hlsa.douyucdn.cn/live/431935rYIJ0kKhQ4_550/playlist.m3u8?wsSecret=924a83c6700d9d802a7717f1068811f6&wsTime=1558565155&token=h5-douyu-0-431935-373ef2a3e162f552b55145ccdd4571a3&did=h5_did
  • 直播源地址格式固定为http://hlsa.douyucdn.cn/live/*_550/playlist/*.
  • 替换hlsa为tx2play1, _550为普通清晰度,去除改为默认最高清晰度
  • 最终结果http://tx2play1.douyucdn.cn/live/431935rYIJ0kKhQ4.flv

python破解方式参考(失效)

反编译app获取地址

Todo

  • todo: Fragment实现本地视频,和电视直播,斗鱼直播等功能
  • 斗鱼更多游戏频道界面点击没有效果, 因为暂时无法解决fragment覆盖及销毁和逻辑的问题
  • 实现沉浸式状态栏: 参考1 参考2
  • 申请权限管理
  • navitationdrawler添加切换player的菜单
  • Recyclerview covered by BottomNavigationView
  • Douyu界面,无法通过GridLayoutManager.setPanSize()设置第一行只有1列显示
  • 电视频道
  • 电视猫 ,
  • 可以显示当前正在播放的内容(这个需要爬虫爬取结果, 用个热点小图标显示): 动画效果参考
  • [ ]爬取频道的标志图片, 用圆形图片显示; 三级缓存实现
  • [ ]该界面搜索: 是搜索的卫视频道
  • [ ]列表滑动删除: 列表滑动删除
  • 本地视频
  • 该界面搜索: 搜索本地视频
  • 参考小米视频: 实现最近播放记录功能(或者用videopage实现)
  • 进度条+小窗显示
  • 悬浮窗播放: 赋予权限 参考
  • 记录视频播放记录
  • 混淆编译
  • 添加自动测试模块
  • ExoPlayer, vitamio:部署参考, ijkplayer提供切换接口
  • 搭建一个局域网服务器, 提供全国视频爬取的链接
  • 搭建一个局域网服务器, 提供美剧tab的搜索和展示
  • 升级RxJava1.x到RxJava2.x
  • kotlin实现
  • 学习竞品: MX播放器, XPlayer, VLC, VideoPlayer等播放列表, 播放界面(全屏透明状态栏)等功能, 实现它们
  • 学习Douyu新版, 看有什么想实现的功能; 如果能逆向出直播源就更好了