yangchong211 / YCVideoPlayer

🔥🔥🔥 基础封装视频播放器player,可以在ExoPlayer、MediaPlayer原生MediaPlayer可以自由切换内核;该播放器整体架构:播放器内核(自由切换) + 视频播放器 + 边播边缓存 + 高度定制播放器UI视图层。支持视频简单播放,列表播放,仿抖音滑动播放,自动切换播放,使用案例丰富,拓展性强。
Apache License 2.0
2.2k stars 453 forks source link

视频播放器介绍文档

目录介绍

00.视频播放器通用框架

01.该视频播放器介绍

播放器功能 MediaPlayer ExoPlayer IjkPlayer RTC TXPlayer
UI/Player/业务解耦 支持 支持 支持
切换视频播放模式 支持 支持 支持
视频无缝切换 支持 支持 支持
调节播放进度 支持 支持 支持
网络环境监听 支持 支持 支持
滑动改变亮度/声音 支持 支持 支持
设置视频播放比例 支持 支持 支持
自由切换视频内核 支持 支持 支持
记录播放位置 支持 支持 支持
清晰度模式切换 支持 支持 支持
重力感应自动进入 支持 支持 支持
锁定屏幕功能 支持 支持 支持
倍速播放 不支持 支持 支持
视频小窗口播放 支持 支持 支持
列表小窗口播放 支持 支持 支持
边播边缓存 支持 支持 支持
同时播放多个视频 支持 支持 支持
仿快手预加载 支持 支持 支持
基于内核无UI 支持 支持 支持
添加弹幕 支持 支持 支持
全屏显示电量 支持 支持 支持
视频播放位置本地记录 支持 支持 支持

02.视频播放器功能

类型 功能说明
项目结构 VideoCache缓存lib,VideoKernel视频内核lib,VideoPlayer视频UI等lib , VideoSqlLite视频位置二级缓存, VideoView视频悬浮lib , VideoM3u8下载m3u8以及合成库lib
内核 MediaPlayer、ExoPlayer、IjkPlayer,后期接入Rtc和TXPlayer
协议/格式 http/https、concat、rtsp、hls、rtmp、file、m3u8、mkv、webm、mp3、mp4等
画面 调整显示比例:默认、16:9、4:3、填充;播放时旋转画面角度(0,90,180,270);镜像旋转
布局 内核和UI分离,和市面GitHub上大多数播放器不一样,方便定制,通过addView添加
播放 正常播放,小窗播放,列表播放,仿抖音播放
自定义 可以自定义添加视频UI层,可以说UI和Player高度分离,支持自定义渲染层SurfaceView
统一视频埋点 暴露用户播放视频开始,退出,异常,播放完成,以及退出视频时进度,点击广告,试看等多个统一埋点
视频播放位置本地记录 本地可以记录播放视频的播放位置,采用二级缓存模式:内存缓存 + 磁盘缓存 + key缓存 + 配置缓存大小和类型和路径

03.视频播放器结构说明

3.1 视频播放器架构图

image

3.2 播放器视图分类

3.3 播放器痛点

3.4 播放器达到的目的

04.视频播放器如何使用

4.1 关于gradle引用说明

4.2 在xml中添加布局

4.3 最简单的视频播放器参数设定

4.4 注意问题

4.5 关于视频播放位置本地记录

05.播放器详细Api文档

06.播放器封装思路

6.1视频层级示例图

image

6.2 视频播放器流程图

6.3 视频播放器lib库

image

6.4 视频内核lib库介绍

image image

6.5视频播放器UI库介绍

image

07.播放器示例展示图

image image image image image image image image image image image image

08.添加自定义视图

09.视频播放器优化处理

10.播放器问题记录说明

11.性能优化和库大小

13.查看视频播放器日志

14.该库异常code说明

15.该库系列wiki文档

16.版本更新文档记录

17.其他说明

17.1 其他推荐说明

17.2 感谢参考案例和博客

17.2 关于LICENSE

Copyright 2017 yangchong211(github.com/yangchong211)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.