Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NotesChapter
GSYVideoPlayer
提交
a459aa96
G
GSYVideoPlayer
项目概览
NotesChapter
/
GSYVideoPlayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
8
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,发现更多精彩内容 >>
提交
a459aa96
编写于
5月 22, 2018
作者:
G
guoshuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改一些引用
上级
293b17f8
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
106 addition
and
84 deletion
+106
-84
app/src/main/java/com/example/gsyvideoplayer/GSYApplication.java
.../main/java/com/example/gsyvideoplayer/GSYApplication.java
+1
-1
app/src/main/java/com/example/gsyvideoplayer/exo/GSYExo2MediaPlayer.java
...va/com/example/gsyvideoplayer/exo/GSYExo2MediaPlayer.java
+0
-50
app/src/main/java/com/example/gsyvideoplayer/exo/GSYExoPlayerManager.java
...a/com/example/gsyvideoplayer/exo/GSYExoPlayerManager.java
+16
-4
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoBaseManager.java
...in/java/com/shuyu/gsyvideoplayer/GSYVideoBaseManager.java
+15
-0
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/EXO2PlayerManager.java
...va/com/shuyu/gsyvideoplayer/player/EXO2PlayerManager.java
+21
-4
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/IJKPlayerManager.java
...ava/com/shuyu/gsyvideoplayer/player/IJKPlayerManager.java
+16
-0
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/IPlayerManager.java
.../java/com/shuyu/gsyvideoplayer/player/IPlayerManager.java
+4
-0
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/SystemPlayerManager.java
.../com/shuyu/gsyvideoplayer/player/SystemPlayerManager.java
+28
-1
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYVideoView.java
...ava/com/shuyu/gsyvideoplayer/video/base/GSYVideoView.java
+2
-24
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYVideoViewBridge.java
...m/shuyu/gsyvideoplayer/video/base/GSYVideoViewBridge.java
+3
-0
未找到文件。
app/src/main/java/com/example/gsyvideoplayer/GSYApplication.java
浏览文件 @
a459aa96
...
...
@@ -29,7 +29,7 @@ public class GSYApplication extends Application {
//GSYVideoType.enableMediaCodecTexture();
//GSYVideoManager.instance().setVideoType(this, GSYVideoType.IJKEXOPLAYER); //EXO 1 播放内核,弃用
GSYVideoManager
.
instance
().
setVideoType
(
this
,
GSYVideoType
.
IJKEXOPLAYER2
);
//EXO 2 播放内核
//
GSYVideoManager.instance().setVideoType(this, GSYVideoType.IJKEXOPLAYER2); //EXO 2 播放内核
//GSYVideoManager.instance().setVideoType(this, GSYVideoType.SYSTEMPLAYER); //系统播放器
//GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL);
...
...
app/src/main/java/com/example/gsyvideoplayer/exo/GSYExo2MediaPlayer.java
浏览文件 @
a459aa96
package
com.example.gsyvideoplayer.exo
;
import
android.content.Context
;
import
android.net.NetworkInfo
;
import
android.net.Uri
;
import
android.support.annotation.Nullable
;
import
android.support.annotation.Size
;
import
android.view.Surface
;
import
android.view.SurfaceHolder
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.DefaultLoadControl
;
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.PlaybackParameters
;
import
com.google.android.exoplayer2.Player
;
import
com.google.android.exoplayer2.SimpleExoPlayer
;
import
com.google.android.exoplayer2.Timeline
;
import
com.google.android.exoplayer2.analytics.AnalyticsListener
;
import
com.google.android.exoplayer2.decoder.DecoderCounters
;
import
com.google.android.exoplayer2.ext.rtmp.RtmpDataSourceFactory
;
import
com.google.android.exoplayer2.extractor.DefaultExtractorsFactory
;
import
com.google.android.exoplayer2.metadata.Metadata
;
import
com.google.android.exoplayer2.source.ConcatenatingMediaSource
;
import
com.google.android.exoplayer2.source.ExtractorMediaSource
;
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.source.dash.DashMediaSource
;
import
com.google.android.exoplayer2.source.dash.DefaultDashChunkSource
;
import
com.google.android.exoplayer2.source.hls.HlsMediaSource
;
import
com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource
;
import
com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource
;
import
com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.TrackSelection
;
import
com.google.android.exoplayer2.trackselection.TrackSelectionArray
;
import
com.google.android.exoplayer2.upstream.DataSource
;
import
com.google.android.exoplayer2.upstream.DefaultBandwidthMeter
;
import
com.google.android.exoplayer2.upstream.DefaultDataSourceFactory
;
import
com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory
;
import
com.google.android.exoplayer2.upstream.cache.Cache
;
import
com.google.android.exoplayer2.upstream.cache.CacheDataSource
;
import
com.google.android.exoplayer2.upstream.cache.CacheDataSourceFactory
;
import
com.google.android.exoplayer2.upstream.cache.LeastRecentlyUsedCacheEvictor
;
import
com.google.android.exoplayer2.upstream.cache.SimpleCache
;
import
com.google.android.exoplayer2.util.Util
;
import
java.io.File
;
import
java.io.FileDescriptor
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
tv.danmaku.ijk.media.exo2.IjkExo2MediaPlayer
;
import
tv.danmaku.ijk.media.exo2.demo.EventLogger
;
import
tv.danmaku.ijk.media.player.AbstractMediaPlayer
;
import
tv.danmaku.ijk.media.player.IMediaPlayer
;
import
tv.danmaku.ijk.media.player.MediaInfo
;
import
tv.danmaku.ijk.media.player.misc.IjkTrackInfo
;
/**
* 自定义exo player,实现不同于库的exo 无缝切换效果
...
...
app/src/main/java/com/example/gsyvideoplayer/exo/GSYExoPlayerManager.java
浏览文件 @
a459aa96
...
...
@@ -68,10 +68,12 @@ public class GSYExoPlayerManager implements IPlayerManager {
public
void
setSpeed
(
float
speed
,
boolean
soundTouch
)
{
//很遗憾,EXO2的setSpeed只能在播放前生效
//Debuger.printfError("很遗憾,目前EXO2的setSpeed只能在播放前设置生效");
try
{
mediaPlayer
.
setSpeed
(
speed
,
1
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
if
(
mediaPlayer
!=
null
)
{
try
{
mediaPlayer
.
setSpeed
(
speed
,
1
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
...
...
@@ -131,4 +133,14 @@ public class GSYExoPlayerManager implements IPlayerManager {
}
mediaPlayer
.
next
();
}
@Override
public
long
getNetSpeed
()
{
return
0
;
}
@Override
public
void
setSpeedPlaying
(
float
speed
,
boolean
soundTouch
)
{
}
}
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoBaseManager.java
浏览文件 @
a459aa96
...
...
@@ -413,6 +413,14 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
return
getCacheManager
(
videoType
).
cachePreview
(
context
,
cacheDir
,
url
);
}
@Override
public
long
getNetSpeed
()
{
if
(
playerManager
!=
null
)
{
return
playerManager
.
getNetSpeed
();
}
return
0
;
}
@Override
public
void
clearCache
(
Context
context
,
File
cacheDir
,
String
url
)
{
clearDefaultCache
(
context
,
cacheDir
,
url
);
...
...
@@ -427,6 +435,13 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
return
0
;
}
@Override
public
void
setSpeedPlaying
(
float
speed
,
boolean
soundTouch
)
{
if
(
playerManager
!=
null
)
{
playerManager
.
setSpeedPlaying
(
speed
,
soundTouch
);
}
}
protected
void
sendMessage
(
Message
message
)
{
mMediaHandler
.
sendMessage
(
message
);
}
...
...
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/EXO2PlayerManager.java
浏览文件 @
a459aa96
...
...
@@ -82,10 +82,12 @@ public class EXO2PlayerManager implements IPlayerManager {
public
void
setSpeed
(
float
speed
,
boolean
soundTouch
)
{
//很遗憾,EXO2的setSpeed只能在播放前生效
//Debuger.printfError("很遗憾,目前EXO2的setSpeed只能在播放前设置生效");
try
{
mediaPlayer
.
setSpeed
(
speed
,
1
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
if
(
mediaPlayer
!=
null
)
{
try
{
mediaPlayer
.
setSpeed
(
speed
,
1
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
...
...
@@ -128,4 +130,19 @@ public class EXO2PlayerManager implements IPlayerManager {
}
return
0
;
}
@Override
public
long
getNetSpeed
()
{
if
(
mediaPlayer
!=
null
)
{
//todo
}
return
0
;
}
@Override
public
void
setSpeedPlaying
(
float
speed
,
boolean
soundTouch
)
{
}
}
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/IJKPlayerManager.java
浏览文件 @
a459aa96
...
...
@@ -172,6 +172,22 @@ public class IJKPlayerManager implements IPlayerManager {
return
-
1
;
}
@Override
public
long
getNetSpeed
()
{
if
(
mediaPlayer
!=
null
)
{
return
mediaPlayer
.
getTcpSpeed
();
}
return
0
;
}
@Override
public
void
setSpeedPlaying
(
float
speed
,
boolean
soundTouch
)
{
if
(
mediaPlayer
!=
null
)
{
mediaPlayer
.
setSpeed
(
speed
);
mediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"soundtouch"
,
(
soundTouch
)
?
1
:
0
);
}
}
private
void
initIJKOption
(
IjkMediaPlayer
ijkMediaPlayer
,
List
<
VideoOptionModel
>
optionModelList
)
{
if
(
optionModelList
!=
null
&&
optionModelList
.
size
()
>
0
)
{
for
(
VideoOptionModel
videoOptionModel
:
optionModelList
)
{
...
...
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/IPlayerManager.java
浏览文件 @
a459aa96
...
...
@@ -32,4 +32,8 @@ public interface IPlayerManager {
void
release
();
int
getBufferedPercentage
();
long
getNetSpeed
();
void
setSpeedPlaying
(
float
speed
,
boolean
soundTouch
);
}
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/player/SystemPlayerManager.java
浏览文件 @
a459aa96
...
...
@@ -2,7 +2,9 @@ package com.shuyu.gsyvideoplayer.player;
import
android.content.Context
;
import
android.media.AudioManager
;
import
android.media.PlaybackParams
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Message
;
import
android.view.Surface
;
...
...
@@ -74,7 +76,7 @@ public class SystemPlayerManager implements IPlayerManager {
@Override
public
void
setSpeed
(
float
speed
,
boolean
soundTouch
)
{
Debuger
.
printfError
(
" not support setSpeed"
);
setSpeed
(
speed
);
}
@Override
...
...
@@ -109,4 +111,29 @@ public class SystemPlayerManager implements IPlayerManager {
public
int
getBufferedPercentage
()
{
return
-
1
;
}
@Override
public
long
getNetSpeed
()
{
if
(
mediaPlayer
!=
null
)
{
//todo
}
return
0
;
}
@Override
public
void
setSpeedPlaying
(
float
speed
,
boolean
soundTouch
)
{
}
private
void
setSpeed
(
float
speed
)
{
if
(
mediaPlayer
!=
null
&&
mediaPlayer
.
getInternalMediaPlayer
()
!=
null
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
PlaybackParams
playbackParams
=
new
PlaybackParams
();
playbackParams
.
setSpeed
(
speed
);
mediaPlayer
.
getInternalMediaPlayer
().
setPlaybackParams
(
playbackParams
);
}
else
{
Debuger
.
printfError
(
" not support setSpeed"
);
}
}
}
}
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYVideoView.java
浏览文件 @
a459aa96
...
...
@@ -29,7 +29,6 @@ import java.util.HashMap;
import
java.util.Map
;
import
tv.danmaku.ijk.media.player.IMediaPlayer
;
import
tv.danmaku.ijk.media.player.IjkMediaPlayer
;
import
static
com
.
shuyu
.
gsyvideoplayer
.
utils
.
CommonUtil
.
getTextSpeed
;
...
...
@@ -918,18 +917,7 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe
* 再打开已经缓存的本地文件,网络速度才会回0.因为是播放本地文件了
*/
public
long
getNetSpeed
()
{
if
(
getGSYVideoManager
().
getMediaPlayer
()
!=
null
&&
(
getGSYVideoManager
().
getMediaPlayer
()
instanceof
IjkMediaPlayer
))
{
try
{
return
((
IjkMediaPlayer
)
getGSYVideoManager
().
getMediaPlayer
()).
getTcpSpeed
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
-
1
;
}
else
{
return
-
1
;
}
return
getGSYVideoManager
().
getNetSpeed
();
}
/**
...
...
@@ -1027,17 +1015,7 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe
*/
public
void
setSpeedPlaying
(
float
speed
,
boolean
soundTouch
)
{
setSpeed
(
speed
,
soundTouch
);
if
(
getGSYVideoManager
().
getMediaPlayer
()
!=
null
)
{
if
(
getGSYVideoManager
().
getMediaPlayer
()
instanceof
IjkMediaPlayer
)
{
IjkMediaPlayer
ijkMediaPlayer
=
(
IjkMediaPlayer
)
getGSYVideoManager
().
getMediaPlayer
();
try
{
ijkMediaPlayer
.
setSpeed
(
speed
);
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"soundtouch"
,
(
soundTouch
)
?
1
:
0
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
getGSYVideoManager
().
setSpeedPlaying
(
speed
,
soundTouch
);
}
public
boolean
isShowPauseCover
()
{
...
...
gsyVideoPlayer-java/src/main/java/com/shuyu/gsyvideoplayer/video/base/GSYVideoViewBridge.java
浏览文件 @
a459aa96
...
...
@@ -65,4 +65,7 @@ public interface GSYVideoViewBridge {
void
clearCache
(
Context
context
,
File
clearCache
,
String
url
);
long
getNetSpeed
();
void
setSpeedPlaying
(
float
speed
,
boolean
soundTouch
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录