Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ac13
GSYVideoPlayer
提交
1b4eac6f
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 搜索 >>
提交
1b4eac6f
编写于
2月 15, 2019
作者:
G
guoshuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加exoplayer和sysplayer的网速显示支持
上级
234e1579
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
124 addition
and
12 deletion
+124
-12
README.md
README.md
+55
-0
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/Exo2PlayerManager.java
...ain/java/tv/danmaku/ijk/media/exo2/Exo2PlayerManager.java
+31
-1
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/SystemPlayerManager.java
.../com/shuyu/gsyvideoplayer/player/SystemPlayerManager.java
+28
-1
gsyVideoPlayer/build.gradle
gsyVideoPlayer/build.gradle
+10
-10
未找到文件。
README.md
浏览文件 @
1b4eac6f
...
...
@@ -82,6 +82,61 @@ implementation 'com.shuyu:gsyVideoPlayer-ex_so:6.0.3'
```
#### D、代码中的全局切换支持(更多请参看下方文档和demo)
```
//EXOPlayer内核,支持格式更多
PlayerFactory.setPlayManager(Exo2PlayerManager.class);
//系统内核模式
PlayerFactory.setPlayManager(SystemPlayerManager.class);
//ijk内核,默认模式
PlayerFactory.setPlayManager(IjkPlayerManager.class);
//exo缓存模式,支持m3u8,只支持exo
CacheFactory.setCacheManager(ExoPlayerCacheManager.class);
//代理缓存模式,支持所有模式,不支持m3u8等,默认
CacheFactory.setCacheManager(ProxyCacheManager.class);
//切换渲染模式
GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL);
//默认显示比例
GSYVideoType.SCREEN_TYPE_DEFAULT = 0;
//16:9
GSYVideoType.SCREEN_TYPE_16_9 = 1;
//4:3
GSYVideoType.SCREEN_TYPE_4_3 = 2;
//全屏裁减显示,为了显示正常 CoverImageView 建议使用FrameLayout作为父布局
GSYVideoType.SCREEN_TYPE_FULL = 4;
//全屏拉伸显示,使用这个属性时,surface_container建议使用FrameLayout
GSYVideoType.SCREEN_MATCH_FULL = -4;
//切换绘制模式
GSYVideoType.setRenderType(GSYVideoType.SUFRACE);
GSYVideoType.setRenderType(GSYVideoType.GLSURFACE);
GSYVideoType.setRenderType(GSYVideoType.TEXTURE);
//ijk关闭log
IjkPlayerManager.setLogLevel(IjkMediaPlayer.IJK_LOG_SILENT);
//exoplayer自定义MediaSource
ExoSourceManager.setExoMediaSourceInterceptListener(new ExoMediaSourceInterceptListener() {
@Override
public MediaSource getMediaSource(String dataSource, boolean preview, boolean cacheEnable, boolean isLooping, File cacheDir) {
//可自定义MediaSource
return null;
}
});
```
### [--- 更多依赖方式请点击 - ](https://github.com/CarGuo/GSYVideoPlayer/blob/master/doc/DEPENDENCIES.md)
## 二、其他推荐
...
...
gsyVideoPlayer-exo_player2/src/main/java/tv/danmaku/ijk/media/exo2/Exo2PlayerManager.java
浏览文件 @
1b4eac6f
...
...
@@ -2,6 +2,7 @@ package tv.danmaku.ijk.media.exo2;
import
android.content.Context
;
import
android.media.AudioManager
;
import
android.net.TrafficStats
;
import
android.net.Uri
;
import
android.os.Handler
;
import
android.os.Looper
;
...
...
@@ -14,6 +15,7 @@ import com.shuyu.gsyvideoplayer.model.GSYModel;
import
com.shuyu.gsyvideoplayer.model.VideoOptionModel
;
import
com.shuyu.gsyvideoplayer.player.IPlayerManager
;
import
java.text.DecimalFormat
;
import
java.util.List
;
import
tv.danmaku.ijk.media.player.IMediaPlayer
;
...
...
@@ -25,12 +27,18 @@ import tv.danmaku.ijk.media.player.IMediaPlayer;
public
class
Exo2PlayerManager
implements
IPlayerManager
{
private
Context
context
;
private
IjkExo2MediaPlayer
mediaPlayer
;
private
Surface
surface
;
private
DummySurface
dummySurface
;
private
long
lastTotalRxBytes
=
0
;
private
long
lastTimeStamp
=
0
;
@Override
public
IMediaPlayer
getMediaPlayer
()
{
return
mediaPlayer
;
...
...
@@ -38,6 +46,7 @@ public class Exo2PlayerManager implements IPlayerManager {
@Override
public
void
initVideoPlayer
(
Context
context
,
Message
msg
,
List
<
VideoOptionModel
>
optionModelList
,
ICacheManager
cacheManager
)
{
this
.
context
=
context
.
getApplicationContext
();
mediaPlayer
=
new
IjkExo2MediaPlayer
(
context
);
mediaPlayer
.
setAudioStreamType
(
AudioManager
.
STREAM_MUSIC
);
if
(
dummySurface
==
null
)
{
...
...
@@ -121,6 +130,8 @@ public class Exo2PlayerManager implements IPlayerManager {
dummySurface
.
release
();
dummySurface
=
null
;
}
lastTotalRxBytes
=
0
;
lastTimeStamp
=
0
;
}
@Override
...
...
@@ -134,7 +145,7 @@ public class Exo2PlayerManager implements IPlayerManager {
@Override
public
long
getNetSpeed
()
{
if
(
mediaPlayer
!=
null
)
{
//todo
return
getNetSpeed
(
context
);
}
return
0
;
}
...
...
@@ -234,4 +245,23 @@ public class Exo2PlayerManager implements IPlayerManager {
public
boolean
isSurfaceSupportLockCanvas
()
{
return
false
;
}
private
long
getNetSpeed
(
Context
context
)
{
if
(
context
==
null
)
{
return
0
;
}
long
nowTotalRxBytes
=
TrafficStats
.
getUidRxBytes
(
context
.
getApplicationInfo
().
uid
)
==
TrafficStats
.
UNSUPPORTED
?
0
:
(
TrafficStats
.
getTotalRxBytes
()
/
1024
);
//转为KB
long
nowTimeStamp
=
System
.
currentTimeMillis
();
long
calculationTime
=
(
nowTimeStamp
-
lastTimeStamp
);
if
(
calculationTime
==
0
)
{
return
calculationTime
;
}
//毫秒转换
long
speed
=
((
nowTotalRxBytes
-
lastTotalRxBytes
)
*
1000
/
calculationTime
);
lastTimeStamp
=
nowTimeStamp
;
lastTotalRxBytes
=
nowTotalRxBytes
;
return
speed
;
}
}
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/SystemPlayerManager.java
浏览文件 @
1b4eac6f
...
...
@@ -3,6 +3,7 @@ package com.shuyu.gsyvideoplayer.player;
import
android.content.Context
;
import
android.media.AudioManager
;
import
android.media.PlaybackParams
;
import
android.net.TrafficStats
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Message
;
...
...
@@ -25,12 +26,18 @@ import tv.danmaku.ijk.media.player.IMediaPlayer;
public
class
SystemPlayerManager
implements
IPlayerManager
{
private
Context
context
;
private
AndroidMediaPlayer
mediaPlayer
;
private
Surface
surface
;
private
boolean
release
;
private
long
lastTotalRxBytes
=
0
;
private
long
lastTimeStamp
=
0
;
@Override
public
IMediaPlayer
getMediaPlayer
()
{
return
mediaPlayer
;
...
...
@@ -38,6 +45,7 @@ public class SystemPlayerManager implements IPlayerManager {
@Override
public
void
initVideoPlayer
(
Context
context
,
Message
msg
,
List
<
VideoOptionModel
>
optionModelList
,
ICacheManager
cacheManager
)
{
this
.
context
=
context
.
getApplicationContext
();
mediaPlayer
=
new
AndroidMediaPlayer
();
mediaPlayer
.
setAudioStreamType
(
AudioManager
.
STREAM_MUSIC
);
release
=
false
;
...
...
@@ -104,6 +112,8 @@ public class SystemPlayerManager implements IPlayerManager {
release
=
true
;
mediaPlayer
.
release
();
}
lastTotalRxBytes
=
0
;
lastTimeStamp
=
0
;
}
@Override
...
...
@@ -114,7 +124,7 @@ public class SystemPlayerManager implements IPlayerManager {
@Override
public
long
getNetSpeed
()
{
if
(
mediaPlayer
!=
null
)
{
//todo
return
getNetSpeed
(
context
);
}
return
0
;
}
...
...
@@ -232,4 +242,21 @@ public class SystemPlayerManager implements IPlayerManager {
}
}
}
private
long
getNetSpeed
(
Context
context
)
{
if
(
context
==
null
)
{
return
0
;
}
long
nowTotalRxBytes
=
TrafficStats
.
getUidRxBytes
(
context
.
getApplicationInfo
().
uid
)
==
TrafficStats
.
UNSUPPORTED
?
0
:
(
TrafficStats
.
getTotalRxBytes
()
/
1024
);
//转为KB
long
nowTimeStamp
=
System
.
currentTimeMillis
();
long
calculationTime
=
(
nowTimeStamp
-
lastTimeStamp
);
if
(
calculationTime
==
0
)
{
return
calculationTime
;
}
//毫秒转换
long
speed
=
((
nowTotalRxBytes
-
lastTotalRxBytes
)
*
1000
/
calculationTime
);
lastTimeStamp
=
nowTimeStamp
;
lastTotalRxBytes
=
nowTotalRxBytes
;
return
speed
;
}
}
gsyVideoPlayer/build.gradle
浏览文件 @
1b4eac6f
...
...
@@ -35,8 +35,8 @@ android {
dependencies
{
implementation
fileTree
(
dir:
'libs'
,
include:
[
'*.jar'
])
//
api project(':gsyVideoPlayer-java')
//
api project(':gsyVideoPlayer-exo_player2')
api
project
(
':gsyVideoPlayer-java'
)
api
project
(
':gsyVideoPlayer-exo_player2'
)
//api project(':gsyVideoPlayer-armv5')
//api project(':gsyVideoPlayer-armv7a')
//api project(':gsyVideoPlayer-armv64')
...
...
@@ -48,16 +48,16 @@ dependencies {
//api "com.shuyu:GSYVideoPlayer:$gsyVideoVersion"
api
"com.shuyu:gsyVideoPlayer-java:$gsyVideoVersion"
api
"com.shuyu:GSYVideoPlayer-exo2:$gsyVideoVersion"
api
"com.shuyu:gsyVideoPlayer-armv5:$gsyVideoVersion"
api
"com.shuyu:gsyVideoPlayer-armv7a:$gsyVideoVersion"
api
"com.shuyu:gsyVideoPlayer-arm64:$gsyVideoVersion"
api
"com.shuyu:gsyVideoPlayer-x64:$gsyVideoVersion"
api
"com.shuyu:gsyVideoPlayer-x86:$gsyVideoVersion"
//
api "com.shuyu:gsyVideoPlayer-java:$gsyVideoVersion"
//
api "com.shuyu:GSYVideoPlayer-exo2:$gsyVideoVersion"
//
api "com.shuyu:gsyVideoPlayer-armv5:$gsyVideoVersion"
//
api "com.shuyu:gsyVideoPlayer-armv7a:$gsyVideoVersion"
//
api "com.shuyu:gsyVideoPlayer-arm64:$gsyVideoVersion"
//
api "com.shuyu:gsyVideoPlayer-x64:$gsyVideoVersion"
//
api "com.shuyu:gsyVideoPlayer-x86:$gsyVideoVersion"
//更多配置版so,增加了concat,rtsp,mpeg,crypto
//
api "com.shuyu:gsyVideoPlayer-ex_so:$gsyVideoVersion"
api
"com.shuyu:gsyVideoPlayer-ex_so:$gsyVideoVersion"
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录