|
@@ -1,6 +1,6 @@
|
|
|
import { defineComponent, onMounted, reactive, ref, watch } from 'vue'
|
|
|
import styles from './video.module.less'
|
|
|
-import poster from './images/video_bg.png'
|
|
|
+// import poster from './images/video_bg.png'
|
|
|
import { Button, Loading } from 'vant'
|
|
|
import { browser } from '@/helpers/utils'
|
|
|
import Plyr from 'plyr'
|
|
@@ -122,24 +122,26 @@ export default defineComponent({
|
|
|
forms.player.currentTime = forms.videoBrowsePoint
|
|
|
})
|
|
|
|
|
|
- // forms.player.on('seeking', (val: any) => {
|
|
|
- // console.log('seeking')
|
|
|
- // })
|
|
|
+ forms.player.on('seeking', (val: any) => {
|
|
|
+ // console.log('seeking')
|
|
|
+ videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
+ })
|
|
|
|
|
|
- // // // 拖动结束时
|
|
|
- // forms.player.on('seeked', (val: any) => {
|
|
|
- // console.log('seeked')
|
|
|
- // })
|
|
|
+ // // 拖动结束时
|
|
|
+ forms.player.on('seeked', (val: any) => {
|
|
|
+ // console.log('seeked')
|
|
|
+ videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
+ })
|
|
|
|
|
|
// 正在搜索中
|
|
|
forms.player.on('waiting', () => {
|
|
|
- console.log('waiting')
|
|
|
- videoIntervalRef.pause()
|
|
|
+ // console.log('waiting pause')
|
|
|
+ videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
})
|
|
|
|
|
|
// 如何视频在缓存不会触发
|
|
|
forms.player.on('timeupdate', () => {
|
|
|
- console.log('timeupdate', forms.player.currentTime)
|
|
|
+ // console.log('timeupdate', forms.player.currentTime)
|
|
|
|
|
|
// 判断视频计时器是否暂停,如果暂停则恢复
|
|
|
// 添加 「forms.player.playing」 是由会跳转到上次播放时间,会触发些方法
|
|
@@ -148,12 +150,14 @@ export default defineComponent({
|
|
|
forms.player.currentTime > 0 &&
|
|
|
forms.player.playing
|
|
|
) {
|
|
|
+ console.log('timeupdate play')
|
|
|
videoIntervalRef.resume()
|
|
|
}
|
|
|
})
|
|
|
|
|
|
// 开始播放
|
|
|
forms.player.on('play', () => {
|
|
|
+ console.log('play')
|
|
|
// 判断视频计时器是否暂停,如果暂停则恢复
|
|
|
if (!videoIntervalRef.isActive.value) {
|
|
|
videoIntervalRef.resume()
|
|
@@ -189,6 +193,8 @@ export default defineComponent({
|
|
|
// 保存零时时间
|
|
|
const moreTime: any = ref([]) // 多个观看时间段
|
|
|
let tempTime: any = [] // 临时存储时间
|
|
|
+
|
|
|
+ const currentTimer = useInterval(1000, { controls: true })
|
|
|
// 监听播放状态,
|
|
|
watch(
|
|
|
() => videoIntervalRef.isActive.value,
|
|
@@ -204,10 +210,15 @@ export default defineComponent({
|
|
|
} else {
|
|
|
tempTime[1] = Math.round(forms.player.currentTime)
|
|
|
}
|
|
|
- console.log(tempTime.length, 'tempTime.length')
|
|
|
+
|
|
|
if (tempTime.length >= 2) {
|
|
|
- moreTime.value.push(tempTime)
|
|
|
+ // console.log(tempTime, 'tempTime', moreTime.value)
|
|
|
+ // 处理在短时间内的时间差 【视屏拖动,点击可能会导致时间差太大】
|
|
|
+ const diffTime = tempTime[1] - tempTime[0] - currentTimer.counter.value > 5
|
|
|
+ // 结束时间,如果 大于开始时间则清除
|
|
|
+ if (tempTime[1] >= tempTime[0] && !diffTime) moreTime.value.push(tempTime)
|
|
|
tempTime = []
|
|
|
+ currentTimer.counter.value = 0
|
|
|
}
|
|
|
|
|
|
// console.log('观看的时间', moreTime)
|
|
@@ -219,7 +230,8 @@ export default defineComponent({
|
|
|
try {
|
|
|
const videoBrowseData = moreTime.value.length > 0 ? formatEffectiveTime(moreTime.value) : []
|
|
|
const time = moreTime.value.length > 0 ? formatTimer(moreTime.value) : 0
|
|
|
- const rate = Math.floor((time / forms.player.duration) * 100)
|
|
|
+ const rate = Math.floor((time / Math.floor(forms.player.duration)) * 100)
|
|
|
+
|
|
|
await request.post('/api-student/open/studentBrowseRecord/updateStat', {
|
|
|
data: {
|
|
|
id: forms.saveId,
|
|
@@ -241,6 +253,7 @@ export default defineComponent({
|
|
|
try {
|
|
|
// 暂停回调
|
|
|
forms.intervalFnRef?.pause()
|
|
|
+ currentTimer.pause()
|
|
|
// 页面计时暂停
|
|
|
pageTimer.pause()
|
|
|
await updateStat()
|
|
@@ -266,6 +279,7 @@ export default defineComponent({
|
|
|
// 还原
|
|
|
forms.intervalFnRef?.resume()
|
|
|
pageTimer.resume()
|
|
|
+ currentTimer.resume()
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -317,6 +331,9 @@ export default defineComponent({
|
|
|
id="register-video"
|
|
|
class={styles['video']}
|
|
|
src={forms.introductionVideo + '?time' + Date.now()}
|
|
|
+ // src={
|
|
|
+ // 'https://cloud-coach.ks3-cn-beijing.ksyuncs.com/1684981545808.mp4?time' + Date.now()
|
|
|
+ // }
|
|
|
playsinline={true}
|
|
|
poster={forms.coverImg}
|
|
|
preload="auto"
|