• Stars
    star
    296
  • Rank 140,464 (Top 3 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 4 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Better than AndroidVideoCache, it supports M3U8 and MP4

JeffVideoCache

Better than AndroidVideoCache

Refer to the English Development Document

开发文档

  • 1.实现脱离播放器的预加载功能
  • 2.实现视频的边下边播功能
  • 3.实现M3U8视频边下边播功能
  • 4.实现MP4视频的边下边播功能
  • 5.支持的播放器是exoplayer和ijkplayer
  • 6.支持接入okhttp
  • 7.支持拖动进度条之后继续缓存到本地的功能
  • 8.支持LRU清理规则, 可以设置缓存的过期时间

JeffVideoCache架构

JeffVideoCache 核心放在客户端, local server端和client做好数据同步的工作

1.如何接入

在build.gradle中引入

allprojects {
    repositories {
	    maven { url 'https://jitpack.io' }
	}
}

在demo中直接引用

dependencies {
    implementation 'com.github.JeffMony:JeffVideoCache:1.0.0'
}
1.1 初始化

程序启动的时候设置JeffVideoCache ----> SDK初始化配置

File saveFile = StorageUtils.getVideoFileDir(this);
if (!saveFile.exists()) {
    saveFile.mkdir();
}
VideoProxyCacheManager.Builder builder = new VideoProxyCacheManager.Builder().
        setFilePath(saveFile.getAbsolutePath()).    //缓存存储位置
        setConnTimeOut(60 * 1000).                  //网络连接超时
        setReadTimeOut(60 * 1000).                  //网络读超时
        setExpireTime(2 * 24 * 60 * 60 * 1000).     //2天的过期时间
        setMaxCacheSize(2 * 1024 * 1024 * 1024);    //2G的存储上限
VideoProxyCacheManager.getInstance().initProxyConfig(builder.build());

初始化配置:

  • 1.设置缓存存储的路径
  • 2.设置链接超时时间
  • 3.设置网络读超时的时间
  • 4.设置缓存的过期时间
  • 5.设置最大缓存的限制
  • 6.设置自定义的本地代理端口
  • 7.设置是否使用okhttp;网络请求框架
  • 8.设置网络请求是否忽略证书
1.2 构建本地代理url
playUrl = ProxyCacheUtils.getProxyUrl(uri.toString(), null, null);

public static String getProxyUrl(String videoUrl, Map<String, String> headers, Map<String, Object> cacheParams)

可以传入headers, 也可以传入其他额外参数,根据你们自己的需求来

构建的url主要是base64编码的

1.3 发起请求
VideoProxyCacheManager.getInstance().startRequestVideoInfo(videoUrl, headers, extraParams);

public void startRequestVideoInfo(String videoUrl, Map<String, String> headers, Map<String, Object> extraParams)
1.4 设置缓存监听
VideoProxyCacheManager.getInstance().addCacheListener(videoUrl, mListener);

其中mListener如下:

public interface IVideoCacheListener {

    void onCacheStart(VideoCacheInfo cacheInfo);

    void onCacheProgress(VideoCacheInfo cacheInfo);

    void onCacheError(VideoCacheInfo cacheInfo, int errorCode);

    void onCacheForbidden(VideoCacheInfo cacheInfo);

    void onCacheFinished(VideoCacheInfo cacheInfo);
}
1.5 设置正在播放链接
VideoProxyCacheManager.getInstance().setPlayingUrlMd5(ProxyCacheUtils.computeMD5(videoUrl));
1.6 暂停缓存任务
VideoProxyCacheManager.getInstance().pauseCacheTask(mVideoUrl);
1.7 恢复缓存任务
VideoProxyCacheManager.getInstance().resumeCacheTask(mVideoUrl);
1.8 拖动进度条
long totalDuration = mPlayer.getDuration();
if (totalDuration > 0) {
    float percent = position * 1.0f / totalDuration;
    VideoProxyCacheManager.getInstance().seekToCacheTaskFromClient(mVideoUrl, percent);
}
1.9 释放缓存任务
VideoProxyCacheManager.getInstance().stopCacheTask(mVideoUrl);   //停止视频缓存任务
VideoProxyCacheManager.getInstance().releaseProxyReleases(mVideoUrl);

Development Document

  • 1.It can play the video while caching it
  • 2.It supports M3U8 , MP4 and so on

More Repositories

1

VideoDownloader

支持下载队列,支持M3U8视频、MP4视频等,支持M3U8合并为MP4视频。
Java
458
star
2

MediaSDK

The library is working for downloading video while playing the video, the video contains M3U8/MP4
Java
269
star
3

PlayerSDK

提供一个高效的播放器库,播放相关的优化和功能都会在这个项目中完成
Java
147
star
4

MediaEditSDK

使用android原生的MediaExtractor,MediaCodec和OpenGL ES对视频进行编辑, 裁剪,滤镜, 特效等.
Java
77
star
5

MediaParserTools

解析mp4 flv ts h264 ts 文件的一整套工具
38
star
6

AV_Library

从0开始教你做一款剪映APP
34
star
7

VideoCapCut

全面的商业化音视频编辑软件
Java
32
star
8

AndroidFFmpegCompile

编译Android 平台上 ffmpeg,openssl,x264 库
C
25
star
9

JeffFFmpegDemo

C
24
star
10

AV_Knowledge

专注音视频面试题汇总
C
23
star
11

JeffLiveSDK

Android 平台下的直播SDK(1.实现opengl 滤镜;2.实现H264视频编码,AAC音频编码3.实现FLV封包;4.实现RTMP推流)
Java
16
star
12

VideoApplication

1.分离音频、视频 2.裁剪音频、视频 3.音频、视频合成功能 4.两个或者多个视频拼接 5.取出视频中关键帧 6.生成快慢视频 7.生成倒播的视频
Java
16
star
13

JeffVideoLib

M3U8视频合并为MP4视频专用库,已经尽量裁减优化,减少包大小,只保留这个功能
C++
15
star
14

Laker

视频播放器外接的渲染工具,使用opengl渲染视频,实现视频翻转、各种滤镜、调整亮度、色温、对比度、饱和度、锐度、添加水印等等
C++
14
star
15

VLCAndroidDemo

实现Android VLC 库的播放调用,实现VLC的主要接口
Java
10
star
16

OpenCamera

实现android-camera和camera2的功能,可以3A调整,尽可能利用系统api爆发的能量
Java
10
star
17

JeffAudioPlayer

从0开始实现一款音频播放器
C
9
star
18

AV_Book

音视频开发书籍汇总
8
star
19

CustomPlayer

使用FFmpeg OpenGL-ES OpenSL-ES 实现一个简单的视频播放器
C
7
star
20

AVInterview

音视频/Android面试题集合
C
7
star
21

CameraApp

Camera1 Camera2 CameraX实现拍照、录视频、剪视频功能
Java
6
star
22

M3U8ParserTools

python 实现 M3U8文件的解析功能
Python
6
star
23

GifSDK

实现将若干张图片变成一个gif图
Java
6
star
24

AudioSDK

音频处理库
C
4
star
25

DexMerge

实现dex合并的功能
Java
4
star
26

androidEnhance

Android 平台framework、chromium、camera、音视频相关技术博客汇总
3
star
27

MessageQueue

c++ message queue
C++
3
star
28

Algorithm_Interview

算法知识总结
Java
3
star
29

FFmpegDemo

代码实现FFmpeg基本功能
C
2
star
30

JMediaCodec

实现MediaCodec并行编码和解码的工作
Java
2
star
31

MediaCache

C++
2
star
32

OpenGLDemo

提供了OpenGL ES 相关的几个demo,可以学习OpenGL ES基本功能
Java
2
star
33

JeffMP4SDK

实现MP4视频的拼接,h264转MP4视频,ts合并为MP4视频
Java
2
star
34

JeffMony

1
star
35

libwebp-android

libwebp library with android platform
CMake
1
star
36

CustomCameraFilter

Camera OpenGLES implements custom filters
Java
1
star
37

SPS-PPS-Parser

1
star
38

FutureHouse

1
star
39

JeffCamera

C
1
star