Skip to content

🔥🔥🔥 看: 本地视频/斗鱼直播/央视/地方卫视/美剧/电影. MVVM/爬虫/ffmpeg/openGL

Notifications You must be signed in to change notification settings

tainzhi/VideoPlayer

Repository files navigation

Info

项目demo

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

测试驱动开发

  • 先完成功能模块: 读取卫视列表到database, test成功
  • SurfaceView
  • TextureView
  • GLSurfaceView: effect, 截屏

module模块介绍

QMediaPlayer

  • Surface/TextureView/GLSurface
  • Android MediaPlayer/IjkPlayer/exoplayer, 特效, 水印, 缓存视频

common

  • BaseFragment支持懒加载

QMediaSpider

  • 爬取网络视频资源, 使用到技术有Jsoup, Volley, android test等等.
  • 破解算法参考real-url
  • DouyuSpider

ffmpeg

  • 此module封装了ffmpeg-4.3, 用ndk20b编译
  • 该module可以执行ffmpeg命令, 在cpp线程中执行, 提供了回调,命令执行进度,命令停止功能
  • 编译过程和使用参考ffmpeg/README.md
  • ffmpeg还支持了rtmp和hls推送

danmmu

  • 弹幕库, 分为简单版和复杂版
  • 复杂版弹幕库有缓冲池功能, 性能更好 详情参见

实现的功能

  • PlayVideoViewActivity: VideoView+MediaController简单播放功能

依赖框架和技术

  • javaMVP(第一版): MVP, retrofit2, rxjava2等等
  • master(当前开发版): kotlin, MVVM(google jetpack), jsoup, ijkplayer, mediaplayer, exoplayer, koin, retrofit, okhttp
功能
lottie 动画
Jsoup 网页解析(爬虫)
moshi 替换Gson为moshi
NotchScreenTool 刘海屏全面屏工具,全屏播放时使用刘海
[弃用]Volley,使用简单封装的HttpUrlConnection 网络请求

资源获取方法

各大卫视网络源和图标

音乐资源获取

斗鱼直播

douyu开发者平台:3月公测, 不开放给个人开发者

一些斗鱼api

抓取到房间号后,通过real-url获取直播链接

  • 怎么通过chrome的js调试器, 下断点, 获取直播地址:
  • 具体方法: 先找到返回源地址的POST或GET操作,观察其传入的参数,再到JS中搜索并找到相关代码块,随后通过下断点,一步步调试即可

手动获取

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

具体破解步骤:

python破解方式参考(失效)

电影资源获取

Todo

  • 参考GSYVideoPlayer的GSYVideoGLViewCustomRender实现水印效果
  • [] Easy Permissions
  • [] PermissionX
  • [] 使用composing build, 而不是buildSrc
  • [] manage network usage)
  • [] 使用Paging
  • [] detekt: 代码检测和kotlin编码规范
  • [] detek添加hook
  • motionlayout实现酷炫的动画
  • 电影界面通过flexbox-layout实现酷炫的效果
  • Fab播放按钮, 播放最近观看记录; 使用Snackbar替换Toast,参考1, 2
  • 添加广告,gif截图
  • 本地视频列表缩略实现, 参考我的印象笔记相同缩略图笔记内容
  • 竖屏视频播放(通过CotentProvider查询到的orientation方向null, 但是resolution=1080*1920, 添加手动判断横屏或者竖屏)]
  • 本地列表第一个是最近的播放记录, 记录播放位置, 并显示上次播放到的时间点的缩略图
  • 实现沉浸式状态栏: 参考1 参考2
  • 申请权限管理
  • 参考WanAndroid todo
  • 进度条+小窗显示
  • 悬浮窗播放: 赋予权限 参考
  • 记录视频播放记录
  • 混淆编译
  • 添加自动测试模块
  • 搭建一个局域网服务器, 类似小米阅读通过wifi从电脑传书到手机, NanoHttp, AndServer
  • 学习竞品: MX播放器, XPlayer, VLC, VideoPlayer等播放列表, 播放界面(全屏透明状态栏)等功能, 实现它们
  • 学习Douyu新版, 看有什么想实现的功能; 如果能逆向出直播源就更好了
  • 学习竞品: 小米视频

buildSrc.AutoUpload插件的使用

  • ./gradlew autoupload自动编译上传到蒲公英
  • 但是需要添加pgy渠道

github action的使用

  • git tag -a v0.1.0新建tag后, git push origin v0.1.0推送tag到远程后触发

参考

  • bugly: 没有下载次数限制; 继承方便, 提供升级页面; 不用验证身份证; 唯一缺点, 没有提供api, 无法自动上传apk
  • 蒲公英分发平台: 提供了api, 可以编写gradle插件自动上传; 缺点是需要身份证验证, 有下载次数限制

About

🔥🔥🔥 看: 本地视频/斗鱼直播/央视/地方卫视/美剧/电影. MVVM/爬虫/ffmpeg/openGL

Resources

Stars

Watchers

Forks

Packages

No packages published