Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ac13
GSYVideoPlayer
提交
0224c42b
G
GSYVideoPlayer
项目概览
ac13
/
GSYVideoPlayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
GSYVideoPlayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0224c42b
编写于
8月 22, 2018
作者:
G
guoshuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加ExoMediaSourceInterceptListener
readme
上级
4f710309
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
107 addition
and
17 deletion
+107
-17
README.md
README.md
+34
-11
app/src/main/java/com/example/gsyvideoplayer/GSYApplication.java
.../main/java/com/example/gsyvideoplayer/GSYApplication.java
+13
-0
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/ExoMediaSourceInterceptListener.java
...nmaku/ijk/media/exo2/ExoMediaSourceInterceptListener.java
+22
-0
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/ExoSourceManager.java
...main/java/tv/danmaku/ijk/media/exo2/ExoSourceManager.java
+38
-6
未找到文件。
README.md
浏览文件 @
0224c42b
...
...
@@ -127,20 +127,43 @@ compile 'com.shuyu:gsyVideoPlayer-ex_so:5.0.2'
## 五、近期版本
### 6.0.0-beta (2018-xx-xx)
*
升级 ExoPlayer 到 2.8.4。
*
修复代理缓存时头部信息不存在问题。
*
调整代码结构,移除 GSYVideoType 中的内核切换,直接通过 PlayerFactory 装载。
*
调整代码结构,ExoPlayer可单独依赖,通过 PlayerFactory 装载,更方便自定义PlayerManager。
```
//PlayerFactory.setPlayManager(new Exo2PlayerManager());//EXO模式
//PlayerFactory.setPlayManager(new SystemPlayerManager());//系统模式
//PlayerFactory.setPlayManager(new IjkPlayerManager());//ijk模式
```
### 5.0.2(2018-08-01)
*
Fix跟随屏幕旋转存在的问题。
*
修改对于Audio冲突时候的处理,子类可以复写方法自行另外处理.
*
fix #1300
*
默认暂停图片修改为false
*
调整代码结构,CacheFactory 更方便自定义,默认 ProxyCacheManager。
### 5.0.1(2018-07-01)
*
Update ListGSYVideoPlayer
*
ijkPlayer的ex_so增加avi支持
*
update ExoPlayer to 2.8.2
*
ExoPlayer模式的问题修复
```
//CacheFactory.setCacheManager(new ExoPlayerCacheManager());//exo缓存模式,支持m3u8,只支持exo
//CacheFactory.setCacheManager(new ProxyCacheManager());//代理缓存模式,支持所有模式,不支持m3u8等
```
*
增加 ExoMediaSourceInterceptListener,方便 Exo 模式下使用自定义的 MediaSource。
```
ExoSourceManager.setExoMediaSourceInterceptListener(new ExoMediaSourceInterceptListener() {
/**
* @param dataSource 链接
* @param preview 是否带上header,默认有header自动设置为true
* @param cacheEnable 是否需要缓存
* @param isLooping 是否循环
* @param cacheDir 自定义缓存目录
* @return 返回不为空时,使用返回的自定义mediaSource
*/
@Override
public MediaSource getMediaSource(String dataSource, boolean preview, boolean cacheEnable, boolean isLooping, File cacheDir) {
return null;
}
});
```
### 更多版本请查阅:[版本更新说明](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/UPDATE_VERSION.md)
...
...
app/src/main/java/com/example/gsyvideoplayer/GSYApplication.java
浏览文件 @
0224c42b
...
...
@@ -2,6 +2,7 @@ package com.example.gsyvideoplayer;
import
android.support.multidex.MultiDexApplication
;
import
com.google.android.exoplayer2.source.MediaSource
;
import
com.shuyu.gsyvideoplayer.GSYVideoManager
;
import
com.shuyu.gsyvideoplayer.cache.CacheFactory
;
import
com.shuyu.gsyvideoplayer.cache.ProxyCacheManager
;
...
...
@@ -11,10 +12,14 @@ import com.shuyu.gsyvideoplayer.player.SystemPlayerManager;
import
com.shuyu.gsyvideoplayer.utils.GSYVideoType
;
import
tv.danmaku.ijk.media.exo2.Exo2PlayerManager
;
import
tv.danmaku.ijk.media.exo2.ExoMediaSourceInterceptListener
;
import
tv.danmaku.ijk.media.exo2.ExoPlayerCacheManager
;
import
tv.danmaku.ijk.media.exo2.ExoSourceManager
;
import
com.squareup.leakcanary.LeakCanary
;
import
java.io.File
;
/**
* Created by shuyu on 2016/11/11.
*/
...
...
@@ -50,5 +55,13 @@ public class GSYApplication extends MultiDexApplication {
//IjkPlayerManager.setLogLevel(IjkMediaPlayer.IJK_LOG_SILENT);
/*ExoSourceManager.setExoMediaSourceInterceptListener(new ExoMediaSourceInterceptListener() {
@Override
public MediaSource getMediaSource(String dataSource, boolean preview, boolean cacheEnable, boolean isLooping, File cacheDir) {
return null;
}
});*/
}
}
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/ExoMediaSourceInterceptListener.java
0 → 100644
浏览文件 @
0224c42b
package
tv.danmaku.ijk.media.exo2
;
import
com.google.android.exoplayer2.source.MediaSource
;
import
java.io.File
;
/**
* 设置 ExoPlayer 的 MediaSource 创建拦截
* Created by guoshuyu
* Date: 2018-08-22
*/
public
interface
ExoMediaSourceInterceptListener
{
/**
* @param dataSource 链接
* @param preview 是否带上header,默认有header自动设置为true
* @param cacheEnable 是否需要缓存
* @param isLooping 是否循环
* @param cacheDir 自定义缓存目录
* @return 返回不为空时,使用返回的自定义mediaSource
*/
MediaSource
getMediaSource
(
String
dataSource
,
boolean
preview
,
boolean
cacheEnable
,
boolean
isLooping
,
File
cacheDir
);
}
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/ExoSourceManager.java
浏览文件 @
0224c42b
...
...
@@ -45,13 +45,16 @@ public class ExoSourceManager {
public
static
final
int
TYPE_RTMP
=
4
;
protected
static
Cache
mCache
;
pr
otected
Context
mAppContext
;
pr
ivate
static
Cache
mCache
;
pr
otected
Map
<
String
,
String
>
mMapHeadData
;
pr
ivate
Context
mAppContext
;
protected
String
mDataSource
;
private
Map
<
String
,
String
>
mMapHeadData
;
private
String
mDataSource
;
private
static
ExoMediaSourceInterceptListener
sExoMediaSourceInterceptListener
;
private
boolean
isCached
=
false
;
...
...
@@ -64,11 +67,24 @@ public class ExoSourceManager {
mMapHeadData
=
mapHeadData
;
}
/**
* @param dataSource 链接
* @param preview 是否带上header,默认有header自动设置为true
* @param cacheEnable 是否需要缓存
* @param isLooping 是否循环
* @param cacheDir 自定义缓存目录
*/
public
MediaSource
getMediaSource
(
String
dataSource
,
boolean
preview
,
boolean
cacheEnable
,
boolean
isLooping
,
File
cacheDir
)
{
MediaSource
mediaSource
=
null
;
if
(
sExoMediaSourceInterceptListener
!=
null
)
{
mediaSource
=
sExoMediaSourceInterceptListener
.
getMediaSource
(
dataSource
,
preview
,
cacheEnable
,
isLooping
,
cacheDir
);
}
if
(
mediaSource
!=
null
)
{
return
mediaSource
;
}
mDataSource
=
dataSource
;
Uri
contentUri
=
Uri
.
parse
(
dataSource
);
int
contentType
=
inferContentType
(
dataSource
);
MediaSource
mediaSource
;
switch
(
contentType
)
{
case
C
.
TYPE_SS
:
mediaSource
=
new
SsMediaSource
.
Factory
(
...
...
@@ -103,6 +119,23 @@ public class ExoSourceManager {
return
mediaSource
;
}
/**
* 设置ExoPlayer 的 MediaSource 创建拦截
*/
public
static
void
setExoMediaSourceInterceptListener
(
ExoMediaSourceInterceptListener
exoMediaSourceInterceptListener
)
{
sExoMediaSourceInterceptListener
=
exoMediaSourceInterceptListener
;
}
public
static
void
resetExoMediaSourceInterceptListener
()
{
sExoMediaSourceInterceptListener
=
null
;
}
public
static
ExoMediaSourceInterceptListener
getExoMediaSourceInterceptListener
()
{
return
sExoMediaSourceInterceptListener
;
}
@C
.
ContentType
public
static
int
inferContentType
(
String
fileName
)
{
fileName
=
Util
.
toLowerInvariant
(
fileName
);
...
...
@@ -184,7 +217,6 @@ public class ExoSourceManager {
return
isCached
;
}
/**
* 获取SourceFactory,是否带Cache
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录