这是一个视频播放器,又不仅仅是一个播放器。它不仅能观看本地视频,还能看斗鱼直播, 能看央视和各大地方卫士,能看美剧和电影。许多功能正在紧张的开发中。。。敬请期待
- 先完成功能模块: 读取卫视列表到database, test成功
- SurfaceView
- TextureView
- GLSurfaceView: effect, 截屏
- Surface/TextureView/GLSurface
- Android MediaPlayer/IjkPlayer/exoplayer, 特效, 水印, 缓存视频
- BaseFragment支持懒加载
- 爬取网络视频资源, 使用到技术有Jsoup, Volley, android test等等.
- 破解算法参考real-url
- DouyuSpider
- 此module封装了ffmpeg-4.3, 用ndk20b编译
- 该module可以执行ffmpeg命令, 在cpp线程中执行, 提供了回调,命令执行进度,命令停止功能
- 编译过程和使用参考ffmpeg/README.md
- ffmpeg还支持了rtmp和hls推送
- 弹幕库, 分为简单版和复杂版
- 复杂版弹幕库有缓冲池功能, 性能更好 详情参见
- 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 | 网络请求 |
- 更多卫视频道, 也要全球iptv频道
- gitee: tv-source: 从tv-source获取的tv卫视图片资源链接是http的, 而且有些图片不存在
- 卫视名称,图片,网络原地址从tv-source拷贝json文件, 并做了部分修改放置在assets/tv_circuits.json中,app启动创建数据后加载进数据库
- 各大卫视当前播放节目从电视猫爬虫所得
- 电视之家:分享高清电视直播源
- 电视节目单: 脚本生成的当前网页, 不太好抓取当前播放内容
- 北邮: 卫视高清资源
- 多条卫视线路, 其他电影线路多已失效
- 参考多媒体app,使用了获取QQ和网易音乐的接口
- 调调
douyu开发者平台:3月公测, 不开放给个人开发者
一些斗鱼api
- 获取游戏分类, 获取游戏分类2
- 获取某个游戏的直播间: http://open.douyucdn.cn/api/RoomApi/live/3?limit=20&offset=20, 3为游戏id, limit每次返回房间数, offset为偏移量
- 推荐的游戏:http://open.douyucdn.cn/api/RoomApi/live?limit=20&offset=20
- http://m.douyu.com/api/home/mix
抓取到房间号后,通过real-url获取直播链接
- 怎么通过chrome的js调试器, 下断点, 获取直播地址:
- 具体方法: 先找到返回源地址的POST或GET操作,观察其传入的参数,再到JS中搜索并找到相关代码块,随后通过下断点,一步步调试即可
斗鱼原先提供的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
主线路: http://hdls1a.douyucdn.cn/live/9999rhwySJw8y5P6_1200p.flv 线路5: http://tc-tct.douyucdn2.cn/dyliveflv1a/431935rgDRxvP0IV.flv // val roomCircuitId = mViewModel.getRoomCircuit(room.room_id.toString()) // val circuit = "http://tx2play1.douyucdn.cn/live/${roomCircuitId}_550.flv"
- 最终结果
- https://tc-tct.douyucdn2.cn/dyliveflv1a/431935rgDRxvP0IV.flv
- http://hdls1a.douyucdn.cn/live/431935rgDRxvP0IV_550.flv https和http的区别
- tx2play1和hlds1a的区别
- 参考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新版, 看有什么想实现的功能; 如果能逆向出直播源就更好了
- 学习竞品: 小米视频
./gradlew autoupload
自动编译上传到蒲公英- 但是需要添加pgy渠道
git tag -a v0.1.0
新建tag后,git push origin v0.1.0
推送tag到远程后触发
- iToutiao相关设计也实现
- 影视天地(Android 客户端),涵盖电影、电视剧、综艺节目、动漫、游戏五大类别的资源。整合两大资源搜索引擎,连接互联网千万数量级的资源库。支持视频资源在线播放、边下边播,不限速下载,不等待播放
- abigfishtv ios 大鱼电视直播 基于ijkplayer的播放器 700多个电视台 包括央视,各地方台,卫视,熊猫直播,社会化分享,登陆,仿微博等 (支持iphonex)
- 各种视频播放所需要的功能集
- 弹弹play 概念版,弹弹play系列应用安卓平台上的实现,是一个提供了视频播放(本地+局域网)和弹幕加载(在线+本地)功能的本地播放器
- 后期项目怎么优化
- QSVideoPlayer
- 支持软硬解码
- 其他的videoplayer: 1, 2, 3, 4, 5, 6, 7
- 怎么升级