Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
d1e6044b
提交
d1e6044b
authored
7月 15, 2021
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:增加连续播放功能
上级
b4d7d3e0
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
43 行增加
和
0 行删除
+43
-0
chapterPlayer.vue
src/modules/viewer/components/player/chapterPlayer.vue
+38
-0
videoPlayer.vue
src/modules/viewer/components/player/videoPlayer.vue
+3
-0
en.js
src/modules/viewer/languages/en.js
+1
-0
zh-CN.js
src/modules/viewer/languages/zh-CN.js
+1
-0
没有找到文件。
src/modules/viewer/components/player/chapterPlayer.vue
浏览文件 @
d1e6044b
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
:video=
"chatperResources.video"
:video=
"chatperResources.video"
@
timeupdate=
"onTimeupdate"
@
timeupdate=
"onTimeupdate"
@
ready=
"onReady"
@
ready=
"onReady"
@
ended=
"onEnded"
ref=
"videoPlayer"
ref=
"videoPlayer"
></video-player>
></video-player>
</div>
</div>
...
@@ -31,6 +32,7 @@
...
@@ -31,6 +32,7 @@
{{
$t
(
'viewerPlayer.showPPT'
)
}}
{{
$t
(
'viewerPlayer.showPPT'
)
}}
</em>
</em>
<em
:class=
"skipClass"
@
click=
"toggleSkip"
>
{{
$t
(
'viewerPlayer.skipTitle'
)
}}
</em>
<em
:class=
"skipClass"
@
click=
"toggleSkip"
>
{{
$t
(
'viewerPlayer.skipTitle'
)
}}
</em>
<em
:class=
"autoNextClass"
@
click=
"toggleAutoNext"
>
{{
$t
(
'viewerPlayer.autoNextTitle'
)
}}
</em>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
...
@@ -48,6 +50,7 @@ export default {
...
@@ -48,6 +50,7 @@ export default {
name
:
'ChapterPlayer'
,
name
:
'ChapterPlayer'
,
components
:
{
videoPlayer
,
pptPlayer
},
components
:
{
videoPlayer
,
pptPlayer
},
props
:
{
props
:
{
data
:
{
type
:
Object
},
// 当前章节
// 当前章节
chapter
:
{
type
:
Object
},
chapter
:
{
type
:
Object
},
// 是否是PPT播放跳转
// 是否是PPT播放跳转
...
@@ -58,10 +61,13 @@ export default {
...
@@ -58,10 +61,13 @@ export default {
data
()
{
data
()
{
// 是否跳过片头
// 是否跳过片头
const
isSkip
=
window
.
localStorage
.
getItem
(
'isSkip'
)
===
'true'
const
isSkip
=
window
.
localStorage
.
getItem
(
'isSkip'
)
===
'true'
// 是否连续播放
const
isAutoNext
=
window
.
localStorage
.
getItem
(
'isAutoNext'
)
===
'true'
return
{
return
{
videoVisible
:
true
,
videoVisible
:
true
,
pptVisible
:
false
,
pptVisible
:
false
,
isSkip
,
isSkip
,
isAutoNext
,
skipTime
:
6
,
skipTime
:
6
,
chatperResources
:
null
,
chatperResources
:
null
,
throttled
:
null
,
throttled
:
null
,
...
@@ -116,6 +122,27 @@ export default {
...
@@ -116,6 +122,27 @@ export default {
'player-button-skip'
:
!
this
.
isSkip
,
'player-button-skip'
:
!
this
.
isSkip
,
'player-button-skip__active'
:
this
.
isSkip
'player-button-skip__active'
:
this
.
isSkip
}
}
},
autoNextClass
()
{
return
{
'player-button'
:
true
,
'player-button-skip'
:
!
this
.
isAutoNext
,
'player-button-skip__active'
:
this
.
isAutoNext
}
},
// 扁平章节数据
flatChapters
()
{
const
chapters
=
this
.
data
.
chapters
||
[]
return
chapters
.
reduce
((
result
,
item
)
=>
{
return
result
.
concat
(
item
.
children
)
},
[])
},
nextChapter
()
{
const
index
=
this
.
flatChapters
.
findIndex
(
item
=>
item
.
id
===
this
.
chapter
.
id
)
if
(
index
!==
-
1
)
{
return
this
.
flatChapters
[
index
+
1
]
}
return
null
}
}
},
},
methods
:
{
methods
:
{
...
@@ -129,6 +156,11 @@ export default {
...
@@ -129,6 +156,11 @@ export default {
this
.
isSkip
=
!
this
.
isSkip
this
.
isSkip
=
!
this
.
isSkip
window
.
localStorage
.
setItem
(
'isSkip'
,
this
.
isSkip
)
window
.
localStorage
.
setItem
(
'isSkip'
,
this
.
isSkip
)
},
},
// 连续播放
toggleAutoNext
()
{
this
.
isAutoNext
=
!
this
.
isAutoNext
window
.
localStorage
.
setItem
(
'isAutoNext'
,
this
.
isAutoNext
)
},
// 关闭PPT
// 关闭PPT
onPPTClose
()
{
onPPTClose
()
{
this
.
pptVisible
=
false
this
.
pptVisible
=
false
...
@@ -150,6 +182,12 @@ export default {
...
@@ -150,6 +182,12 @@ export default {
this
.
player
.
seek
(
this
.
progress
.
cpt
)
this
.
player
.
seek
(
this
.
progress
.
cpt
)
}
}
},
},
// 播放结束
onEnded
()
{
if
(
this
.
isAutoNext
&&
this
.
nextChapter
)
{
this
.
$router
.
push
({
name
:
'viewerCourseChapter'
,
params
:
{
id
:
this
.
nextChapter
.
id
}
})
}
},
// 当前播放时间更新
// 当前播放时间更新
onTimeupdate
(
time
)
{
onTimeupdate
(
time
)
{
time
=
Math
.
floor
(
time
)
time
=
Math
.
floor
(
time
)
...
...
src/modules/viewer/components/player/videoPlayer.vue
浏览文件 @
d1e6044b
...
@@ -62,6 +62,9 @@ export default {
...
@@ -62,6 +62,9 @@ export default {
window
.
localStorage
.
setItem
(
'videoRetry'
,
3
)
window
.
localStorage
.
setItem
(
'videoRetry'
,
3
)
}
}
})
})
player
.
on
(
'ended'
,
function
(
event
)
{
_this
.
$emit
(
'ended'
,
event
)
})
player
.
on
(
'error'
,
function
(
event
)
{
player
.
on
(
'error'
,
function
(
event
)
{
_this
.
$emit
(
'error'
,
event
)
_this
.
$emit
(
'error'
,
event
)
if
(
_this
.
videoRetry
)
{
if
(
_this
.
videoRetry
)
{
...
...
src/modules/viewer/languages/en.js
浏览文件 @
d1e6044b
...
@@ -16,6 +16,7 @@ export default {
...
@@ -16,6 +16,7 @@ export default {
downloadPPT
:
'Download PPT'
,
downloadPPT
:
'Download PPT'
,
showPPT
:
'Show PPT synchronously'
,
showPPT
:
'Show PPT synchronously'
,
skipTitle
:
'Always skip titles'
,
skipTitle
:
'Always skip titles'
,
autoNextTitle
:
'Continuous play'
,
pptSyncPlay
:
'PPT synchronized video playback'
,
pptSyncPlay
:
'PPT synchronized video playback'
,
pptFullscreen
:
'Zoom in PPT'
,
pptFullscreen
:
'Zoom in PPT'
,
pptPosition
:
'Switch the video to the current PPT page'
,
pptPosition
:
'Switch the video to the current PPT page'
,
...
...
src/modules/viewer/languages/zh-CN.js
浏览文件 @
d1e6044b
...
@@ -16,6 +16,7 @@ export default {
...
@@ -16,6 +16,7 @@ export default {
downloadPPT
:
'下载PPT'
,
downloadPPT
:
'下载PPT'
,
showPPT
:
'同步显示PPT'
,
showPPT
:
'同步显示PPT'
,
skipTitle
:
'始终跳过片头'
,
skipTitle
:
'始终跳过片头'
,
autoNextTitle
:
'连续播放'
,
pptSyncPlay
:
'PPT同步视频播放'
,
pptSyncPlay
:
'PPT同步视频播放'
,
pptFullscreen
:
'放大PPT'
,
pptFullscreen
:
'放大PPT'
,
pptPosition
:
'切换视频到当前PPT页'
,
pptPosition
:
'切换视频到当前PPT页'
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论