Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_26386469
GSYVideoPlayer
提交
a848b551
G
GSYVideoPlayer
项目概览
qq_26386469
/
GSYVideoPlayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
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 搜索 >>
提交
a848b551
编写于
9月 01, 2019
作者:
S
shuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
prepare 7.1.0
上级
23356a23
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
237 addition
and
111 deletion
+237
-111
README.md
README.md
+23
-0
app/src/main/java/com/example/gsyvideoplayer/GSYApplication.java
.../main/java/com/example/gsyvideoplayer/GSYApplication.java
+25
-14
app/src/main/java/com/example/gsyvideoplayer/exo/GSYExoPlayerManager.java
...a/com/example/gsyvideoplayer/exo/GSYExoPlayerManager.java
+2
-2
gsyVideoPlayer-base/src/main/java/com/shuyu/gsyvideoplayer/player/BasePlayerManager.java
...va/com/shuyu/gsyvideoplayer/player/BasePlayerManager.java
+27
-0
gsyVideoPlayer-base/src/main/java/com/shuyu/gsyvideoplayer/player/IPlayerInitSuccessListener.java
...uyu/gsyvideoplayer/player/IPlayerInitSuccessListener.java
+12
-0
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/Exo2PlayerManager.java
...ain/java/tv/danmaku/ijk/media/exo2/Exo2PlayerManager.java
+3
-6
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/IjkExo2MediaPlayer.java
...in/java/tv/danmaku/ijk/media/exo2/IjkExo2MediaPlayer.java
+67
-32
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoBaseManager.java
...in/java/com/shuyu/gsyvideoplayer/GSYVideoBaseManager.java
+70
-50
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/IjkPlayerManager.java
...ava/com/shuyu/gsyvideoplayer/player/IjkPlayerManager.java
+6
-4
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/SystemPlayerManager.java
.../com/shuyu/gsyvideoplayer/player/SystemPlayerManager.java
+2
-1
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/render/view/GSYTextureView.java
.../com/shuyu/gsyvideoplayer/render/view/GSYTextureView.java
+0
-2
未找到文件。
README.md
浏览文件 @
a848b551
...
...
@@ -189,6 +189,29 @@ ExoSourceManager.setExoMediaSourceInterceptListener(new ExoMediaSourceInterceptL
## 五、近期版本
### 7.1.0(2019-09-01)
*
update ExoPlayer to 2.10.4
*
添加沉浸式支持
*
增加 IPlayerInitSuccessListener 播放器初始化成果回调
```
GSYVideoManager
.instance()
.setPlayerInitSuccessListener(new IPlayerInitSuccessListener() {
///播放器初始化成果回调,可用于播放前的自定义设置
@Override
public void onPlayerInitSuccess(IMediaPlayer player, GSYModel model) {
if (player instanceof IjkExo2MediaPlayer) {
((IjkExo2MediaPlayer) player).setTrackSelector(new DefaultTrackSelector());
((IjkExo2MediaPlayer) player).setLoadControl(new DefaultLoadControl());
}
}
});
```
*
fix #2142
*
增加硬解码不花屏幕
[
RecyclerView3Activity
](
https://github.com/CarGuo/GSYVideoPlayer/blob/master/app/src/main/java/com/example/gsyvideoplayer/RecyclerView3Activity.java
)
### 7.0.2(2019-07-01)
*
update ExoPlayer 到 2.10.0
*
增加 allowCrossProtocolRedirects
...
...
app/src/main/java/com/example/gsyvideoplayer/GSYApplication.java
浏览文件 @
a848b551
package
com.example.gsyvideoplayer
;
import
android.net.Uri
;
import
androidx.multidex.MultiDexApplication
;
import
tv.danmaku.ijk.media.exo2.Exo2PlayerManager
;
import
tv.danmaku.ijk.media.exo2.ExoMediaSourceInterceptListener
;
import
tv.danmaku.ijk.media.exo2.ExoSourceManager
;
import
com.example.gsyvideoplayer.source.CustomSourceTag
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.source.MediaSource
;
import
com.google.android.exoplayer2.source.hls.HlsMediaSource
;
import
tv.danmaku.ijk.media.exo2.Exo2PlayerManager
;
import
tv.danmaku.ijk.media.exo2.IjkExo2MediaPlayer
;
import
tv.danmaku.ijk.media.player.IMediaPlayer
;
import
com.google.android.exoplayer2.DefaultLoadControl
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.shuyu.gsyvideoplayer.GSYVideoManager
;
import
com.shuyu.gsyvideoplayer.model.GSYModel
;
import
com.shuyu.gsyvideoplayer.player.BasePlayerManager
;
import
com.shuyu.gsyvideoplayer.player.IPlayerInitSuccessListener
;
import
com.shuyu.gsyvideoplayer.player.PlayerFactory
;
import
com.shuyu.gsyvideoplayer.utils.
GSYVideoType
;
import
com.shuyu.gsyvideoplayer.utils.
Debuger
;
import
com.squareup.leakcanary.LeakCanary
;
import
java.io.File
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
Util
.
inferContentType
;
/**
*
Created by shuyu on 2016/11/11.
Created by shuyu on 2016/11/11.
*/
public
class
GSYApplication
extends
MultiDexApplication
{
...
...
@@ -38,7 +37,7 @@ public class GSYApplication extends MultiDexApplication {
//GSYVideoType.enableMediaCodec();
//GSYVideoType.enableMediaCodecTexture();
//
PlayerFactory.setPlayManager(Exo2PlayerManager.class);//EXO模式
PlayerFactory
.
setPlayManager
(
Exo2PlayerManager
.
class
);
//EXO模式
//ExoSourceManager.setSkipSSLChain(true);
...
...
@@ -70,6 +69,18 @@ public class GSYApplication extends MultiDexApplication {
}
});*/
/*GSYVideoManager.instance().setPlayerInitSuccessListener(new IPlayerInitSuccessListener() {
///播放器初始化成果回调
@Override
public void onPlayerInitSuccess(IMediaPlayer player, GSYModel model) {
if (player instanceof IjkExo2MediaPlayer) {
((IjkExo2MediaPlayer) player).setTrackSelector(new DefaultTrackSelector());
((IjkExo2MediaPlayer) player).setLoadControl(new DefaultLoadControl());
}
}
});*/
}
...
...
app/src/main/java/com/example/gsyvideoplayer/exo/GSYExoPlayerManager.java
浏览文件 @
a848b551
...
...
@@ -8,7 +8,7 @@ import android.view.Surface;
import
com.google.android.exoplayer2.video.DummySurface
;
import
com.shuyu.gsyvideoplayer.cache.ICacheManager
;
import
com.shuyu.gsyvideoplayer.model.VideoOptionModel
;
import
com.shuyu.gsyvideoplayer.player.
I
PlayerManager
;
import
com.shuyu.gsyvideoplayer.player.
Base
PlayerManager
;
import
java.util.List
;
...
...
@@ -18,7 +18,7 @@ import tv.danmaku.ijk.media.player.IMediaPlayer;
* Created by guoshuyu on 2018/5/16.
* 自定义player管理器,装载自定义exo player,实现无缝切换效果
*/
public
class
GSYExoPlayerManager
implements
I
PlayerManager
{
public
class
GSYExoPlayerManager
extends
Base
PlayerManager
{
private
GSYExo2MediaPlayer
mediaPlayer
;
...
...
gsyVideoPlayer-base/src/main/java/com/shuyu/gsyvideoplayer/player/BasePlayerManager.java
0 → 100644
浏览文件 @
a848b551
package
com.shuyu.gsyvideoplayer.player
;
import
com.shuyu.gsyvideoplayer.model.GSYModel
;
/**
* 播放器差异管理接口
Created by guoshuyu on 2018/1/11.
*/
public
abstract
class
BasePlayerManager
implements
IPlayerManager
{
protected
IPlayerInitSuccessListener
mPlayerInitSuccessListener
;
public
IPlayerInitSuccessListener
getPlayerPreparedSuccessListener
()
{
return
mPlayerInitSuccessListener
;
}
public
void
setPlayerInitSuccessListener
(
IPlayerInitSuccessListener
listener
)
{
this
.
mPlayerInitSuccessListener
=
listener
;
}
protected
void
initSuccess
(
GSYModel
gsyModel
)
{
if
(
mPlayerInitSuccessListener
!=
null
)
{
mPlayerInitSuccessListener
.
onPlayerInitSuccess
(
getMediaPlayer
(),
gsyModel
);
}
}
}
gsyVideoPlayer-base/src/main/java/com/shuyu/gsyvideoplayer/player/IPlayerInitSuccessListener.java
0 → 100644
浏览文件 @
a848b551
package
com.shuyu.gsyvideoplayer.player
;
import
com.shuyu.gsyvideoplayer.model.GSYModel
;
import
tv.danmaku.ijk.media.player.IMediaPlayer
;
/**
播放器初始化成果回调
*/
public
interface
IPlayerInitSuccessListener
{
void
onPlayerInitSuccess
(
IMediaPlayer
player
,
GSYModel
model
);
}
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/Exo2PlayerManager.java
浏览文件 @
a848b551
...
...
@@ -4,8 +4,6 @@ import android.content.Context;
import
android.media.AudioManager
;
import
android.net.TrafficStats
;
import
android.net.Uri
;
import
android.os.Handler
;
import
android.os.Looper
;
import
android.os.Message
;
import
android.view.Surface
;
...
...
@@ -16,9 +14,7 @@ import com.google.android.exoplayer2.video.DummySurface;
import
com.shuyu.gsyvideoplayer.cache.ICacheManager
;
import
com.shuyu.gsyvideoplayer.model.GSYModel
;
import
com.shuyu.gsyvideoplayer.model.VideoOptionModel
;
import
com.shuyu.gsyvideoplayer.player.IPlayerManager
;
import
java.text.DecimalFormat
;
import
com.shuyu.gsyvideoplayer.player.BasePlayerManager
;
import
java.util.List
;
import
tv.danmaku.ijk.media.player.IMediaPlayer
;
...
...
@@ -28,7 +24,7 @@ import tv.danmaku.ijk.media.player.IMediaPlayer;
* Created by guoshuyu on 2018/1/11.
*/
public
class
Exo2PlayerManager
implements
I
PlayerManager
{
public
class
Exo2PlayerManager
extends
Base
PlayerManager
{
private
Context
context
;
...
...
@@ -76,6 +72,7 @@ public class Exo2PlayerManager implements IPlayerManager {
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
initSuccess
(
gsyModel
);
}
@Override
...
...
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/IjkExo2MediaPlayer.java
浏览文件 @
a848b551
...
...
@@ -5,8 +5,10 @@ import android.content.Context;
import
android.net.Uri
;
import
android.os.Handler
;
import
android.os.Looper
;
import
androidx.annotation.Nullable
;
import
androidx.annotation.Size
;
import
android.view.Surface
;
import
android.view.SurfaceHolder
;
...
...
@@ -16,6 +18,7 @@ import com.google.android.exoplayer2.DefaultRenderersFactory;
import
com.google.android.exoplayer2.ExoPlaybackException
;
import
com.google.android.exoplayer2.ExoPlayerFactory
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.LoadControl
;
import
com.google.android.exoplayer2.PlaybackParameters
;
import
com.google.android.exoplayer2.Player
;
import
com.google.android.exoplayer2.SeekParameters
;
...
...
@@ -28,6 +31,7 @@ import com.google.android.exoplayer2.source.MediaSource;
import
com.google.android.exoplayer2.source.MediaSourceEventListener
;
import
com.google.android.exoplayer2.source.TrackGroupArray
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.MappingTrackSelector
;
import
com.google.android.exoplayer2.trackselection.TrackSelectionArray
;
import
java.io.File
;
...
...
@@ -44,8 +48,8 @@ import tv.danmaku.ijk.media.player.misc.IjkTrackInfo;
/**
*
Created by guoshuyu on 2018/1/10.
*
Exo
Created by guoshuyu on 2018/1/10.
Exo
*/
public
class
IjkExo2MediaPlayer
extends
AbstractMediaPlayer
implements
Player
.
EventListener
,
AnalyticsListener
{
...
...
@@ -57,9 +61,10 @@ public class IjkExo2MediaPlayer extends AbstractMediaPlayer implements Player.Ev
protected
Context
mAppContext
;
protected
SimpleExoPlayer
mInternalPlayer
;
protected
EventLogger
mEventLogger
;
protected
DefaultRenderersFactory
r
endererFactory
;
protected
DefaultRenderersFactory
mR
endererFactory
;
protected
MediaSource
mMediaSource
;
protected
DefaultTrackSelector
mTrackSelector
;
protected
MappingTrackSelector
mTrackSelector
;
protected
LoadControl
mLoadControl
;
protected
String
mDataSource
;
protected
Surface
mSurface
;
protected
Map
<
String
,
String
>
mHeaders
=
new
HashMap
<>();
...
...
@@ -72,23 +77,23 @@ public class IjkExo2MediaPlayer extends AbstractMediaPlayer implements Player.Ev
protected
boolean
isBuffering
=
false
;
protected
boolean
isLooping
=
false
;
/**
*
是否带上header
是否带上header
*/
protected
boolean
isPreview
=
false
;
/**
*
是否开启缓存
是否开启缓存
*/
protected
boolean
isCache
=
false
;
/**
*
dataSource等的帮组类
dataSource等的帮组类
*/
protected
ExoSourceManager
mExoHelper
;
/**
*
缓存目录,可以为空
缓存目录,可以为空
*/
protected
File
mCacheDir
;
/**
*
类型覆盖
类型覆盖
*/
private
String
mOverrideExtension
;
...
...
@@ -338,7 +343,9 @@ public class IjkExo2MediaPlayer extends AbstractMediaPlayer implements Player.Ev
new
Runnable
()
{
@Override
public
void
run
()
{
mTrackSelector
=
new
DefaultTrackSelector
();
if
(
mTrackSelector
==
null
)
{
mTrackSelector
=
new
DefaultTrackSelector
();
}
mEventLogger
=
new
EventLogger
(
mTrackSelector
);
boolean
preferExtensionDecoders
=
true
;
boolean
useExtensionRenderers
=
true
;
//是否开启扩展
...
...
@@ -346,10 +353,14 @@ public class IjkExo2MediaPlayer extends AbstractMediaPlayer implements Player.Ev
?
(
preferExtensionDecoders
?
DefaultRenderersFactory
.
EXTENSION_RENDERER_MODE_PREFER
:
DefaultRenderersFactory
.
EXTENSION_RENDERER_MODE_ON
)
:
DefaultRenderersFactory
.
EXTENSION_RENDERER_MODE_OFF
;
rendererFactory
=
new
DefaultRenderersFactory
(
mAppContext
,
extensionRendererMode
);
DefaultLoadControl
loadControl
=
new
DefaultLoadControl
();
mInternalPlayer
=
ExoPlayerFactory
.
newSimpleInstance
(
mAppContext
,
rendererFactory
,
mTrackSelector
,
loadControl
,
null
,
Looper
.
getMainLooper
());
if
(
mRendererFactory
!=
null
)
{
mRendererFactory
=
new
DefaultRenderersFactory
(
mAppContext
);
mRendererFactory
.
setExtensionRendererMode
(
extensionRendererMode
);
}
if
(
mLoadControl
==
null
)
{
mLoadControl
=
new
DefaultLoadControl
();
}
mInternalPlayer
=
ExoPlayerFactory
.
newSimpleInstance
(
mAppContext
,
mRendererFactory
,
mTrackSelector
,
mLoadControl
,
null
,
Looper
.
getMainLooper
());
mInternalPlayer
.
addListener
(
IjkExo2MediaPlayer
.
this
);
mInternalPlayer
.
addAnalyticsListener
(
IjkExo2MediaPlayer
.
this
);
mInternalPlayer
.
addListener
(
mEventLogger
);
...
...
@@ -379,10 +390,10 @@ public class IjkExo2MediaPlayer extends AbstractMediaPlayer implements Player.Ev
}
/**
*
是否需要带上header
*
setDataSource之前生效
*
*
@param preview
是否需要带上header
setDataSource之前生效
@param preview
*/
public
void
setPreview
(
boolean
preview
)
{
isPreview
=
preview
;
...
...
@@ -398,18 +409,18 @@ public class IjkExo2MediaPlayer extends AbstractMediaPlayer implements Player.Ev
/**
*
设置seek 的临近帧。
设置seek 的临近帧。
**/
public
void
setSeekParameter
(
@Nullable
SeekParameters
seekParameters
)
{
public
void
setSeekParameter
(
@Nullable
SeekParameters
seekParameters
)
{
mInternalPlayer
.
setSeekParameters
(
seekParameters
);
}
/**
*
是否开启cache
*
setDataSource之前生效
*
*
@param cache
是否开启cache
setDataSource之前生效
@param cache
*/
public
void
setCache
(
boolean
cache
)
{
isCache
=
cache
;
...
...
@@ -420,10 +431,10 @@ public class IjkExo2MediaPlayer extends AbstractMediaPlayer implements Player.Ev
}
/**
*
cache文件的目录
*
setDataSource之前生效
*
*
@param cacheDir
cache文件的目录
setDataSource之前生效
@param cacheDir
*/
public
void
setCacheDir
(
File
cacheDir
)
{
this
.
mCacheDir
=
cacheDir
;
...
...
@@ -442,10 +453,10 @@ public class IjkExo2MediaPlayer extends AbstractMediaPlayer implements Player.Ev
}
/**
*
倍速播放
*
*
@param speed 倍速播放,默认为1
*
@param pitch 音量缩放,默认为1,修改会导致声音变调
倍速播放
@param speed 倍速播放,默认为1
@param pitch 音量缩放,默认为1,修改会导致声音变调
*/
public
void
setSpeed
(
@Size
(
min
=
0
)
float
speed
,
@Size
(
min
=
0
)
float
pitch
)
{
PlaybackParameters
playbackParameters
=
new
PlaybackParameters
(
speed
,
pitch
);
...
...
@@ -472,6 +483,30 @@ public class IjkExo2MediaPlayer extends AbstractMediaPlayer implements Player.Ev
}
public
MappingTrackSelector
getTrackSelector
()
{
return
mTrackSelector
;
}
public
void
setTrackSelector
(
MappingTrackSelector
trackSelector
)
{
this
.
mTrackSelector
=
trackSelector
;
}
public
LoadControl
getLoadControl
()
{
return
mLoadControl
;
}
public
void
setLoadControl
(
LoadControl
loadControl
)
{
this
.
mLoadControl
=
loadControl
;
}
public
DefaultRenderersFactory
getRendererFactory
()
{
return
mRendererFactory
;
}
public
void
setRendererFactory
(
DefaultRenderersFactory
rendererFactory
)
{
this
.
mRendererFactory
=
rendererFactory
;
}
@Override
public
void
onTracksChanged
(
TrackGroupArray
trackGroups
,
TrackSelectionArray
trackSelections
)
{
...
...
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoBaseManager.java
浏览文件 @
a848b551
...
...
@@ -3,10 +3,11 @@ package com.shuyu.gsyvideoplayer;
import
android.content.Context
;
import
android.media.MediaPlayer
;
import
android.os.Handler
;
import
android.os.HandlerThread
;
import
android.os.Looper
;
import
android.os.Message
;
import
androidx.annotation.Nullable
;
import
android.text.TextUtils
;
import
android.view.Surface
;
...
...
@@ -15,6 +16,8 @@ import com.shuyu.gsyvideoplayer.cache.ICacheManager;
import
com.shuyu.gsyvideoplayer.listener.GSYMediaPlayerListener
;
import
com.shuyu.gsyvideoplayer.model.GSYModel
;
import
com.shuyu.gsyvideoplayer.model.VideoOptionModel
;
import
com.shuyu.gsyvideoplayer.player.BasePlayerManager
;
import
com.shuyu.gsyvideoplayer.player.IPlayerInitSuccessListener
;
import
com.shuyu.gsyvideoplayer.player.IPlayerManager
;
import
com.shuyu.gsyvideoplayer.player.PlayerFactory
;
import
com.shuyu.gsyvideoplayer.utils.Debuger
;
...
...
@@ -28,9 +31,9 @@ import java.util.Map;
import
tv.danmaku.ijk.media.player.IMediaPlayer
;
/**
*
基类管理器
*
GSYVideoViewBridge接口说明可以查阅GSYVideoViewBridge类
*
Created by guoshuyu on 2018/1/25.
基类管理器
GSYVideoViewBridge接口说明可以查阅GSYVideoViewBridge类
Created by guoshuyu on 2018/1/25.
*/
public
abstract
class
GSYVideoBaseManager
implements
IMediaPlayer
.
OnPreparedListener
,
IMediaPlayer
.
OnCompletionListener
,
...
...
@@ -59,84 +62,86 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
protected
WeakReference
<
GSYMediaPlayerListener
>
lastListener
;
protected
IPlayerInitSuccessListener
mPlayerInitSuccessListener
;
/**
*
配置ijk option
配置ijk option
*/
protected
List
<
VideoOptionModel
>
optionModelList
;
/**
*
播放的tag,防止错位置,因为普通的url也可能重复
播放的tag,防止错位置,因为普通的url也可能重复
*/
protected
String
playTag
=
""
;
/**
*
播放内核管理
播放内核管理
*/
protected
IPlayerManager
playerManager
;
/**
*
缓存管理
缓存管理
*/
protected
ICacheManager
cacheManager
;
/**
*
当前播放的视频宽的高
当前播放的视频宽的高
*/
protected
int
currentVideoWidth
=
0
;
/**
*
当前播放的视屏的高
当前播放的视屏的高
*/
protected
int
currentVideoHeight
=
0
;
/**
*
当前视频的最后状态
当前视频的最后状态
*/
protected
int
lastState
;
/**
*
播放的tag,防止错位置,因为普通的url也可能重复
播放的tag,防止错位置,因为普通的url也可能重复
*/
protected
int
playPosition
=
-
22
;
/**
*
缓冲比例
缓冲比例
*/
protected
int
bufferPoint
;
/**
*
播放超时
播放超时
*/
protected
int
timeOut
=
8
*
1000
;
/**
*
是否需要静音
是否需要静音
*/
protected
boolean
needMute
=
false
;
/**
*
是否需要外部超时判断
是否需要外部超时判断
*/
protected
boolean
needTimeOutOther
;
/**
*
删除默认所有缓存文件
删除默认所有缓存文件
*/
public
void
clearAllDefaultCache
(
Context
context
)
{
clearDefaultCache
(
context
,
null
,
null
);
}
/**
*
清除缓存
*
*
@param cacheDir 缓存目录,为空是使用默认目录
*
@param url 指定url缓存,为空时清除所有
清除缓存
@param cacheDir 缓存目录,为空是使用默认目录
@param url 指定url缓存,为空时清除所有
*/
public
void
clearDefaultCache
(
Context
context
,
@Nullable
File
cacheDir
,
@Nullable
String
url
)
{
if
(
cacheManager
!=
null
)
{
cacheManager
.
clearCache
(
context
,
cacheDir
,
url
);
}
else
{
if
(
getCacheManager
()
!=
null
)
{
if
(
getCacheManager
()
!=
null
)
{
getCacheManager
().
clearCache
(
context
,
cacheDir
,
url
);
}
}
...
...
@@ -401,15 +406,15 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
}
/**
*
这里只是用于点击时判断是否已经缓存
*
所以每次直接通过一个CacheManager对象判断即可
这里只是用于点击时判断是否已经缓存
所以每次直接通过一个CacheManager对象判断即可
*/
@Override
public
boolean
cachePreview
(
Context
context
,
File
cacheDir
,
String
url
)
{
if
(
getCacheManager
()
!=
null
)
{
if
(
getCacheManager
()
!=
null
)
{
return
getCacheManager
().
cachePreview
(
context
,
cacheDir
,
url
);
}
return
false
;
return
false
;
}
@Override
...
...
@@ -595,6 +600,10 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
if
(
cacheManager
!=
null
)
{
cacheManager
.
setCacheAvailableListener
(
this
);
}
if
(
playerManager
instanceof
BasePlayerManager
)
{
((
BasePlayerManager
)
playerManager
)
.
setPlayerInitSuccessListener
(
mPlayerInitSuccessListener
);
}
playerManager
.
initVideoPlayer
(
context
,
msg
,
optionModelList
,
cacheManager
);
setNeedMute
(
needMute
);
...
...
@@ -616,7 +625,7 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
/**
*
启动十秒的定时器进行 缓存操作
启动十秒的定时器进行 缓存操作
*/
protected
void
startTimeOutBuffer
()
{
// 启动定时
...
...
@@ -626,7 +635,7 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
}
/**
*
取消 十秒的定时器进行 缓存操作
取消 十秒的定时器进行 缓存操作
*/
protected
void
cancelTimeOutBuffer
()
{
Debuger
.
printfError
(
"cancelTimeOutBuffer"
);
...
...
@@ -655,7 +664,7 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
}
/**
*
后面再修改设计模式吧,现在先用着
后面再修改设计模式吧,现在先用着
*/
private
void
showDisplay
(
Message
msg
)
{
if
(
playerManager
!=
null
)
{
...
...
@@ -668,9 +677,9 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
}
/**
*
打开raw播放支持
*
*
@param context
打开raw播放支持
@param context
*/
public
void
enableRawPlay
(
Context
context
)
{
this
.
context
=
context
.
getApplicationContext
();
...
...
@@ -681,7 +690,7 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
}
/**
*
设置IJK视频的option
设置IJK视频的option
*/
public
void
setOptionModelList
(
List
<
VideoOptionModel
>
optionModelList
)
{
this
.
optionModelList
=
optionModelList
;
...
...
@@ -692,7 +701,7 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
}
/**
*
是否需要静音
是否需要静音
*/
public
void
setNeedMute
(
boolean
needMute
)
{
this
.
needMute
=
needMute
;
...
...
@@ -710,22 +719,22 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
}
/**
*
是否需要在buffer缓冲时,增加外部超时判断
*
<p>
*
超时后会走onError接口,播放器通过onPlayError回调出
*
<p>
*
错误码为 : BUFFER_TIME_OUT_ERROR = -192
*
<p>
*
由于onError之后执行GSYVideoPlayer的OnError,如果不想触发错误,
*
可以重载onError,在super之前拦截处理。
*
<p>
*
public void onError(int what, int extra){
*
do you want before super and return;
*
super.onError(what, extra)
*
}
*
*
@param timeOut 超时时间,毫秒 默认8000
*
@param needTimeOutOther 是否需要延时设置,默认关闭
是否需要在buffer缓冲时,增加外部超时判断
<p>
超时后会走onError接口,播放器通过onPlayError回调出
<p>
错误码为 : BUFFER_TIME_OUT_ERROR = -192
<p>
由于onError之后执行GSYVideoPlayer的OnError,如果不想触发错误,
可以重载onError,在super之前拦截处理。
<p>
public void onError(int what, int extra){
do you want before super and return;
super.onError(what, extra)
}
@param timeOut 超时时间,毫秒 默认8000
@param needTimeOutOther 是否需要延时设置,默认关闭
*/
public
void
setTimeOut
(
int
timeOut
,
boolean
needTimeOutOther
)
{
this
.
timeOut
=
timeOut
;
...
...
@@ -739,4 +748,15 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
public
ICacheManager
getCurCacheManager
()
{
return
cacheManager
;
}
public
IPlayerInitSuccessListener
getPlayerPreparedSuccessListener
()
{
return
mPlayerInitSuccessListener
;
}
/**
播放器初始化后接口
*/
public
void
setPlayerInitSuccessListener
(
IPlayerInitSuccessListener
listener
)
{
this
.
mPlayerInitSuccessListener
=
listener
;
}
}
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/IjkPlayerManager.java
浏览文件 @
a848b551
...
...
@@ -25,14 +25,14 @@ import tv.danmaku.ijk.media.player.IjkLibLoader;
import
tv.danmaku.ijk.media.player.IjkMediaPlayer
;
/**
*
IJKPLayer
*
Created by guoshuyu on 2018/1/11.
IJKPLayer
Created by guoshuyu on 2018/1/11.
*/
public
class
IjkPlayerManager
implements
I
PlayerManager
{
public
class
IjkPlayerManager
extends
Base
PlayerManager
{
/**
*
log level
log level
*/
private
static
int
logLevel
=
IjkMediaPlayer
.
IJK_LOG_DEFAULT
;
...
...
@@ -99,6 +99,8 @@ public class IjkPlayerManager implements IPlayerManager {
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
initSuccess
(
gsyModel
);
}
@Override
...
...
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/SystemPlayerManager.java
浏览文件 @
a848b551
...
...
@@ -24,7 +24,7 @@ import tv.danmaku.ijk.media.player.IMediaPlayer;
* Created by guoshuyu on 2018/1/11.
*/
public
class
SystemPlayerManager
implements
I
PlayerManager
{
public
class
SystemPlayerManager
extends
Base
PlayerManager
{
private
Context
context
;
...
...
@@ -63,6 +63,7 @@ public class SystemPlayerManager implements IPlayerManager {
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
initSuccess
(
gsyModel
);
}
@Override
...
...
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/render/view/GSYTextureView.java
浏览文件 @
a848b551
...
...
@@ -60,7 +60,6 @@ public class GSYTextureView extends TextureView implements TextureView.SurfaceTe
@Override
public
void
onSurfaceTextureAvailable
(
SurfaceTexture
surface
,
int
width
,
int
height
)
{
if
(
mSaveTexture
==
null
)
{
Debuger
.
printfError
(
"FFFFFFFFFFFF 1"
);
mSaveTexture
=
surface
;
mSurface
=
new
Surface
(
surface
);
if
(
mIGSYSurfaceListener
!=
null
)
{
...
...
@@ -68,7 +67,6 @@ public class GSYTextureView extends TextureView implements TextureView.SurfaceTe
}
}
else
{
setSurfaceTexture
(
mSaveTexture
);
Debuger
.
printfError
(
"FFFFFFFFFFFF 2"
);
//mSurface = new Surface(mSaveTexture);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录