Git Product home page Git Product logo

videoplayer's Introduction

Info

项目demo

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

怎么使用

git clone --recursive https://github.com/tainzhi/VideoPlayer

# 如果忘记 recursive clone
git submodule update --init --recursive

测试驱动开发

  • 先完成功能模块: 读取卫视列表到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插件自动上传; 缺点是需要身份证验证, 有下载次数限制

遇到的问题

开发经验

  • 专注于目标,而不是技术
  • 不要苛求于和原来的技术实现相同, 只要能解决问题, 哪管它新的实现思路
  • 对于某些实现细节的代码不熟悉不懂, 可以在github上高级搜索, 学习相应的代码段

videoplayer's People

Contributors

tainzhi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.