Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_26386469
GSYVideoPlayer
提交
471c9a77
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 搜索 >>
提交
471c9a77
编写于
10月 14, 2018
作者:
S
shuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix #1499
上级
84fc399c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
54 addition
and
37 deletion
+54
-37
app/src/main/java/com/example/gsyvideoplayer/video/DanmakuVideoPlayer.java
.../com/example/gsyvideoplayer/video/DanmakuVideoPlayer.java
+54
-37
未找到文件。
app/src/main/java/com/example/gsyvideoplayer/video/DanmakuVideoPlayer.java
浏览文件 @
471c9a77
...
...
@@ -40,14 +40,14 @@ import master.flame.danmaku.danmaku.parser.IDataSource;
import
master.flame.danmaku.ui.widget.DanmakuView
;
/**
*
Created by guoshuyu on 2017/2/16.
*
<p>
*
配置弹幕使用的播放器,目前使用的是本地模拟数据。
*
<p>
*
模拟数据的弹幕时常比较短,后面的时长点是没有数据的。
*
<p>
*
注意:这只是一个例子,演示如何集合弹幕,需要完善如弹出输入弹幕等的,可以自行完善。
*
注意:b站的弹幕so只有v5 v7 x86、没有64,所以记得配置上ndk过滤。
Created by guoshuyu on 2017/2/16.
<p>
配置弹幕使用的播放器,目前使用的是本地模拟数据。
<p>
模拟数据的弹幕时常比较短,后面的时长点是没有数据的。
<p>
注意:这只是一个例子,演示如何集合弹幕,需要完善如弹出输入弹幕等的,可以自行完善。
注意:b站的弹幕so只有v5 v7 x86、没有64,所以记得配置上ndk过滤。
*/
public
class
DanmakuVideoPlayer
extends
StandardGSYVideoPlayer
{
...
...
@@ -107,19 +107,24 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
@Override
public
void
onVideoPause
()
{
super
.
onVideoPause
();
if
(
mDanmakuView
!=
null
&&
mDanmakuView
.
isPrepared
())
{
mDanmakuView
.
pause
();
}
danmakuOnPause
();
}
@Override
public
void
onVideoResume
()
{
super
.
onVideoResume
();
if
(
mDanmakuView
!=
null
&&
mDanmakuView
.
isPrepared
()
&&
mDanmakuView
.
isPaused
())
{
mDanmakuView
.
resume
();
}
public
void
onVideoResume
(
boolean
isResume
)
{
super
.
onVideoResume
(
isResume
);
danmakuOnResume
();
}
@Override
protected
void
clickStartIcon
()
{
super
.
clickStartIcon
();
if
(
mCurrentState
==
CURRENT_STATE_PLAYING
)
{
danmakuOnResume
();
}
else
if
(
mCurrentState
==
CURRENT_STATE_PAUSE
)
{
danmakuOnPause
();
}
}
@Override
public
void
onCompletion
()
{
...
...
@@ -156,13 +161,13 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
@Override
protected
void
cloneParams
(
GSYBaseVideoPlayer
from
,
GSYBaseVideoPlayer
to
)
{
((
DanmakuVideoPlayer
)
to
).
mDumakuFile
=
((
DanmakuVideoPlayer
)
from
).
mDumakuFile
;
((
DanmakuVideoPlayer
)
to
).
mDumakuFile
=
((
DanmakuVideoPlayer
)
from
).
mDumakuFile
;
super
.
cloneParams
(
from
,
to
);
}
/**
*
处理播放器在全屏切换时,弹幕显示的逻辑
*
需要格外注意的是,因为全屏和小屏,是切换了播放器,所以需要同步之间的弹幕状态
处理播放器在全屏切换时,弹幕显示的逻辑
需要格外注意的是,因为全屏和小屏,是切换了播放器,所以需要同步之间的弹幕状态
*/
@Override
public
GSYBaseVideoPlayer
startWindowFullscreen
(
Context
context
,
boolean
actionBar
,
boolean
statusBar
)
{
...
...
@@ -178,8 +183,8 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
/**
*
处理播放器在退出全屏时,弹幕显示的逻辑
*
需要格外注意的是,因为全屏和小屏,是切换了播放器,所以需要同步之间的弹幕状态
处理播放器在退出全屏时,弹幕显示的逻辑
需要格外注意的是,因为全屏和小屏,是切换了播放器,所以需要同步之间的弹幕状态
*/
@Override
protected
void
resolveNormalVideoShow
(
View
oldF
,
ViewGroup
vp
,
GSYVideoPlayer
gsyVideoPlayer
)
{
...
...
@@ -196,10 +201,22 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
}
protected
void
danmakuOnPause
()
{
if
(
mDanmakuView
!=
null
&&
mDanmakuView
.
isPrepared
())
{
mDanmakuView
.
pause
();
}
}
protected
void
danmakuOnResume
()
{
if
(
mDanmakuView
!=
null
&&
mDanmakuView
.
isPrepared
()
&&
mDanmakuView
.
isPaused
())
{
mDanmakuView
.
resume
();
}
}
public
void
setDanmaKuStream
(
File
is
)
{
mDumakuFile
=
is
;
if
(!
getDanmakuView
().
isPrepared
())
{
onPrepareDanmaku
((
DanmakuVideoPlayer
)
getCurrentPlayer
());
if
(!
getDanmakuView
().
isPrepared
())
{
onPrepareDanmaku
((
DanmakuVideoPlayer
)
getCurrentPlayer
());
}
}
...
...
@@ -220,7 +237,7 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
.
setMaximumLines
(
maxLinesPair
)
.
preventOverlapping
(
overlappingEnablePair
);
if
(
mDanmakuView
!=
null
)
{
if
(
mDumakuFile
!=
null
)
{
if
(
mDumakuFile
!=
null
)
{
mParser
=
createParser
(
getIsStream
(
mDumakuFile
));
}
...
...
@@ -263,14 +280,14 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
InputStreamReader
inputreader
=
new
InputStreamReader
(
instream
);
BufferedReader
buffreader
=
new
BufferedReader
(
inputreader
);
String
line
;
StringBuilder
sb1
=
new
StringBuilder
();
StringBuilder
sb1
=
new
StringBuilder
();
sb1
.
append
(
"<i>"
);
//分行读取
while
((
line
=
buffreader
.
readLine
())
!=
null
)
{
while
((
line
=
buffreader
.
readLine
())
!=
null
)
{
sb1
.
append
(
line
);
}
sb1
.
append
(
"</i>"
);
Log
.
e
(
"3333333"
,
sb1
.
toString
());
Log
.
e
(
"3333333"
,
sb1
.
toString
());
instream
.
close
();
return
new
ByteArrayInputStream
(
sb1
.
toString
().
getBytes
());
}
catch
(
java
.
io
.
FileNotFoundException
e
)
{
...
...
@@ -282,7 +299,7 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
/**
*
弹幕的显示与关闭
弹幕的显示与关闭
*/
private
void
resolveDanmakuShow
()
{
post
(
new
Runnable
()
{
...
...
@@ -303,7 +320,7 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
/**
*
开始播放弹幕
开始播放弹幕
*/
private
void
onPrepareDanmaku
(
DanmakuVideoPlayer
gsyVideoPlayer
)
{
if
(
gsyVideoPlayer
.
getDanmakuView
()
!=
null
&&
!
gsyVideoPlayer
.
getDanmakuView
().
isPrepared
()
&&
gsyVideoPlayer
.
getParser
()
!=
null
)
{
...
...
@@ -313,7 +330,7 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
/**
*
弹幕偏移
弹幕偏移
*/
private
void
resolveDanmakuSeek
(
DanmakuVideoPlayer
gsyVideoPlayer
,
long
time
)
{
if
(
mHadPlay
&&
gsyVideoPlayer
.
getDanmakuView
()
!=
null
&&
gsyVideoPlayer
.
getDanmakuView
().
isPrepared
())
{
...
...
@@ -322,10 +339,10 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
/**
*
创建解析器对象,解析输入流
*
*
@param stream
*
@return
创建解析器对象,解析输入流
@param stream
@return
*/
private
BaseDanmakuParser
createParser
(
InputStream
stream
)
{
...
...
@@ -354,7 +371,7 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
/**
*
释放弹幕控件
释放弹幕控件
*/
private
void
releaseDanmaku
(
DanmakuVideoPlayer
danmakuVideoPlayer
)
{
if
(
danmakuVideoPlayer
!=
null
&&
danmakuVideoPlayer
.
getDanmakuView
()
!=
null
)
{
...
...
@@ -364,7 +381,7 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
public
BaseDanmakuParser
getParser
()
{
if
(
mParser
==
null
)
{
if
(
mParser
==
null
)
{
if
(
mDumakuFile
!=
null
)
{
mParser
=
createParser
(
getIsStream
(
mDumakuFile
));
}
...
...
@@ -397,7 +414,7 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
/**
*
模拟添加弹幕数据
模拟添加弹幕数据
*/
private
void
addDanmaku
(
boolean
islive
)
{
BaseDanmaku
danmaku
=
mDanmakuContext
.
mDanmakuFactory
.
createDanmaku
(
BaseDanmaku
.
TYPE_SCROLL_RL
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录