|
@@ -2,8 +2,10 @@ import { defineComponent, onMounted, onUnmounted, reactive, ref, watch } from 'v
|
|
import styles from './video.module.less'
|
|
import styles from './video.module.less'
|
|
import { Button, Loading } from 'vant'
|
|
import { Button, Loading } from 'vant'
|
|
import { browser } from '@/helpers/utils'
|
|
import { browser } from '@/helpers/utils'
|
|
-import Plyr from 'plyr'
|
|
|
|
-import 'plyr/dist/plyr.css'
|
|
|
|
|
|
+// import Plyr from 'plyr'
|
|
|
|
+// import 'plyr/dist/plyr.css'
|
|
|
|
+import TCPlayer from 'tcplayer.js'
|
|
|
|
+import 'tcplayer.js/dist/tcplayer.css'
|
|
import { useInterval, useIntervalFn } from '@vueuse/core'
|
|
import { useInterval, useIntervalFn } from '@vueuse/core'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import request from '@/helpers/request'
|
|
import request from '@/helpers/request'
|
|
@@ -23,6 +25,7 @@ export default defineComponent({
|
|
pageTimer.pause()
|
|
pageTimer.pause()
|
|
|
|
|
|
const forms = reactive({
|
|
const forms = reactive({
|
|
|
|
+ videoID: 'video' + Date.now() + Math.floor(Math.random() * 100),
|
|
coverImg: '',
|
|
coverImg: '',
|
|
introductionVideo: '',
|
|
introductionVideo: '',
|
|
introductionVideoTime: 0, // 视频总时长
|
|
introductionVideoTime: 0, // 视频总时长
|
|
@@ -144,136 +147,256 @@ export default defineComponent({
|
|
* 5、点击视频进度或拖动进度时,时间暂停
|
|
* 5、点击视频进度或拖动进度时,时间暂停
|
|
*/
|
|
*/
|
|
const _init = () => {
|
|
const _init = () => {
|
|
- const controls = [
|
|
|
|
- 'play-large',
|
|
|
|
- 'play',
|
|
|
|
- 'progress',
|
|
|
|
- 'captions',
|
|
|
|
- 'current-time',
|
|
|
|
- 'duration',
|
|
|
|
- 'settings',
|
|
|
|
- 'fullscreen'
|
|
|
|
- ]
|
|
|
|
- const params: any = {
|
|
|
|
- controls: controls,
|
|
|
|
- settings: ['speed'],
|
|
|
|
- speed: { selected: 1, options: [0.5, 1, 1.5, 2] },
|
|
|
|
- i18n: {
|
|
|
|
- speed: '速度',
|
|
|
|
- normal: '默认'
|
|
|
|
- },
|
|
|
|
- autoplay: false,
|
|
|
|
- invertTime: false
|
|
|
|
|
|
+ // const controls = [
|
|
|
|
+ // 'play-large',
|
|
|
|
+ // 'play',
|
|
|
|
+ // 'progress',
|
|
|
|
+ // 'captions',
|
|
|
|
+ // 'current-time',
|
|
|
|
+ // 'duration',
|
|
|
|
+ // 'settings',
|
|
|
|
+ // 'fullscreen'
|
|
|
|
+ // ]
|
|
|
|
+ // const params: any = {
|
|
|
|
+ // controls: controls,
|
|
|
|
+ // settings: ['speed'],
|
|
|
|
+ // speed: { selected: 1, options: [0.5, 1, 1.5, 2] },
|
|
|
|
+ // i18n: {
|
|
|
|
+ // speed: '速度',
|
|
|
|
+ // normal: '默认'
|
|
|
|
+ // },
|
|
|
|
+ // autoplay: false,
|
|
|
|
+ // invertTime: false
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // if (browser().iPhone) {
|
|
|
|
+ // params.fullscreen = {
|
|
|
|
+ // enabled: true,
|
|
|
|
+ // fallback: 'force',
|
|
|
|
+ // iosNative: true
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // const times: any = []
|
|
|
|
+ // forms.videoDetails.forEach((item: any) => {
|
|
|
|
+ // times.push({
|
|
|
|
+ // time: item.startNode,
|
|
|
|
+ // label: item.desc
|
|
|
|
+ // })
|
|
|
|
+ // })
|
|
|
|
+ // params.markers = { enabled: true, points: times }
|
|
|
|
+
|
|
|
|
+ // forms.player = new Plyr('#register-video', params)
|
|
|
|
+
|
|
|
|
+ // forms.player.on('ready', (item: any) => {
|
|
|
|
+ // console.log('ready', item)
|
|
|
|
+
|
|
|
|
+ // // forms.player.pause()
|
|
|
|
+ // })
|
|
|
|
+ // forms.player.on('loadedmetadata', () => {
|
|
|
|
+ // console.log('loadedmetadata')
|
|
|
|
+ // forms.loading = false
|
|
|
|
+ // forms.player.currentTime() = forms.videoBrowsePoint
|
|
|
|
+ // checkVideoDetails(forms.player.currentTime())
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // // 速度变化时
|
|
|
|
+ // forms.player.on('ratechange', () => {
|
|
|
|
+ // forms.playerSpeed =
|
|
|
|
+ // forms.playerSpeed < forms.player.speed ? forms.player.speed : forms.playerSpeed
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // forms.player.on('seeking', () => {
|
|
|
|
+ // console.log('seeking')
|
|
|
|
+ // videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // // // 拖动结束时
|
|
|
|
+ // forms.player.on('seeked', () => {
|
|
|
|
+ // console.log('seeked')
|
|
|
|
+ // videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // // 正在搜索中
|
|
|
|
+ // forms.player.on('waiting', () => {
|
|
|
|
+ // // console.log('waiting pause')
|
|
|
|
+ // videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // // 如何视频在缓存不会触发
|
|
|
|
+ // forms.player.on('timeupdate', () => {
|
|
|
|
+ // console.log('timeupdate', forms.player.currentTime())
|
|
|
|
+ // // 时间变化时更新每一段的状态
|
|
|
|
+ // checkVideoDetails(forms.player.currentTime())
|
|
|
|
+ // // 判断视频计时器是否暂停,如果暂停则恢复
|
|
|
|
+ // // 添加 「forms.player.playing」 是由会跳转到上次播放时间,会触发些方法
|
|
|
|
+ // if (
|
|
|
|
+ // !videoIntervalRef.isActive.value &&
|
|
|
|
+ // forms.player.currentTime() > 0 &&
|
|
|
|
+ // forms.player.playing
|
|
|
|
+ // ) {
|
|
|
|
+ // // console.log('timeupdate play')
|
|
|
|
+ // videoIntervalRef.resume()
|
|
|
|
+ // }
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // // 视屏播放时暂停
|
|
|
|
+ // forms.player.on('ended', () => {
|
|
|
|
+ // forms.player.pause()
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // // 开始播放
|
|
|
|
+ // forms.player.on('play', () => {
|
|
|
|
+ // console.log('play')
|
|
|
|
+ // // 判断视频计时器是否暂停,如果暂停则恢复
|
|
|
|
+ // videoIntervalRef.resume()
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // // 暂停播放
|
|
|
|
+ // forms.player.on('pause', () => {
|
|
|
|
+ // console.log('pause', videoIntervalRef.isActive.value)
|
|
|
|
+
|
|
|
|
+ // videoIntervalRef.pause()
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // forms.player.on('enterfullscreen', () => {
|
|
|
|
+ // console.log('fullscreen')
|
|
|
|
+ // const i = document.createElement('i')
|
|
|
|
+ // i.id = 'fullscreen-back'
|
|
|
|
+ // i.className = 'van-icon van-icon-arrow-left video-back'
|
|
|
|
+ // i.addEventListener('click', () => {
|
|
|
|
+ // forms.player.fullscreen.exit()
|
|
|
|
+ // })
|
|
|
|
+ // console.log(document.getElementsByClassName('plyr'))
|
|
|
|
+ // document.getElementsByClassName('plyr')[0].appendChild(i)
|
|
|
|
+ // })
|
|
|
|
+
|
|
|
|
+ // forms.player.on('exitfullscreen', () => {
|
|
|
|
+ // console.log('exitfullscreen')
|
|
|
|
+ // const i = document.getElementById('fullscreen-back')
|
|
|
|
+ // i && i.remove()
|
|
|
|
+ // })
|
|
|
|
+ const Button = TCPlayer.getComponent('Button')
|
|
|
|
+ const BigPlayButton = TCPlayer.getComponent('BigPlayButton')
|
|
|
|
+ BigPlayButton.prototype.createEl = function () {
|
|
|
|
+ const el = Button.prototype.createEl.call(this)
|
|
|
|
+ const _html =
|
|
|
|
+ '<button><svg width="41px"height="41px"viewBox="0 0 41 41"version="1.1"xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink"><g stroke="none"stroke-width="1"fill="none"fill-rule="evenodd"><g transform="translate(-167.000000, -155.000000)"><g transform="translate(0.000000, 85.000000)"><g transform="translate(158.000000, 70.000000)"><g transform="translate(9.000000, 0.000000)"><circle id="椭圆形"stroke="#FFFFFF"fill-opacity="0.1"fill="#D8D8D8"cx="20.5"cy="20.5"r="20"></circle><path d="M14.5483871,27.6859997 L14.5483871,13.4342349 C14.5480523,12.8729571 14.8729597,12.356555 15.3949624,12.0887034 C15.9169651,11.8208518 16.5522696,11.8445472 17.0503046,12.1504437 L28.6530473,19.2778563 C29.1119763,19.5602271 29.3887725,20.0426422 29.3887725,20.5601173 C29.3887725,21.0775924 29.1119763,21.5600075 28.6530473,21.8423783 L17.0503046,28.9697909 C16.5522696,29.2756874 15.9169651,29.2993828 15.3949624,29.0315312 C14.8729597,28.7636796 14.5480523,28.2472775 14.5483871,27.6859997 Z"id="路径"fill="#FFFFFF"fill-rule="nonzero"></path></g></g></g></g></g></svg></button>'
|
|
|
|
+
|
|
|
|
+ el.appendChild(
|
|
|
|
+ TCPlayer.dom.createEl('div', {
|
|
|
|
+ className: 'vjs-button-icon',
|
|
|
|
+ innerHTML: _html
|
|
|
|
+ })
|
|
|
|
+ )
|
|
|
|
+ return el
|
|
}
|
|
}
|
|
-
|
|
|
|
- if (browser().iPhone) {
|
|
|
|
- params.fullscreen = {
|
|
|
|
- enabled: true,
|
|
|
|
- fallback: 'force',
|
|
|
|
- iosNative: true
|
|
|
|
|
|
+ forms.player = TCPlayer('register-video', {
|
|
|
|
+ appID: '',
|
|
|
|
+ controls: true,
|
|
|
|
+ plugins: {
|
|
|
|
+ // ProgressMarker: {
|
|
|
|
+ // markers: [
|
|
|
|
+ // {
|
|
|
|
+ // content: '1111',
|
|
|
|
+ // timeOffset: 1000
|
|
|
|
+ // }
|
|
|
|
+ // ]
|
|
|
|
+ // }
|
|
}
|
|
}
|
|
- }
|
|
|
|
- const times: any = []
|
|
|
|
- forms.videoDetails.forEach((item: any) => {
|
|
|
|
- times.push({
|
|
|
|
- time: item.startNode,
|
|
|
|
- label: item.desc
|
|
|
|
- })
|
|
|
|
- })
|
|
|
|
- params.markers = { enabled: true, points: times }
|
|
|
|
-
|
|
|
|
- forms.player = new Plyr('#register-video', params)
|
|
|
|
-
|
|
|
|
- forms.player.on('ready', (item: any) => {
|
|
|
|
- // console.log('ready', item)
|
|
|
|
- // forms.player.pause()
|
|
|
|
- })
|
|
|
|
- forms.player.on('loadedmetadata', () => {
|
|
|
|
- console.log('loadedmetadata')
|
|
|
|
- forms.loading = false
|
|
|
|
- forms.player.currentTime = forms.videoBrowsePoint
|
|
|
|
- checkVideoDetails(forms.player.currentTime)
|
|
|
|
- })
|
|
|
|
|
|
+ }) // player-container-id 为播放器容器 ID,必须与 html 中一致
|
|
|
|
+ if (forms.player) {
|
|
|
|
+ forms.player.src(forms.introductionVideo) // url 播放地址
|
|
|
|
+ forms.player.poster(forms.coverImg || '')
|
|
|
|
|
|
- // 速度变化时
|
|
|
|
- forms.player.on('ratechange', () => {
|
|
|
|
- forms.playerSpeed =
|
|
|
|
- forms.playerSpeed < forms.player.speed ? forms.player.speed : forms.playerSpeed
|
|
|
|
- })
|
|
|
|
|
|
+ // forms.player.on('loadstart', () => {})
|
|
|
|
+ forms.player.on('ready', (item: any) => {
|
|
|
|
+ console.log('ready', item)
|
|
|
|
|
|
- forms.player.on('seeking', () => {
|
|
|
|
- console.log('seeking')
|
|
|
|
- videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
|
- })
|
|
|
|
|
|
+ // forms.player.pause()
|
|
|
|
+ })
|
|
|
|
+ forms.player.on('loadedmetadata', () => {
|
|
|
|
+ console.log('loadedmetadata')
|
|
|
|
+ forms.loading = false
|
|
|
|
+ forms.player.currentTime(forms.videoBrowsePoint)
|
|
|
|
+ checkVideoDetails(forms.player.currentTime())
|
|
|
|
+ })
|
|
|
|
|
|
- // // 拖动结束时
|
|
|
|
- forms.player.on('seeked', () => {
|
|
|
|
- console.log('seeked')
|
|
|
|
- videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
|
- })
|
|
|
|
|
|
+ // 速度变化时
|
|
|
|
+ forms.player.on('ratechange', () => {
|
|
|
|
+ forms.playerSpeed =
|
|
|
|
+ forms.playerSpeed < forms.player.speed ? forms.player.speed : forms.playerSpeed
|
|
|
|
+ })
|
|
|
|
|
|
- // 正在搜索中
|
|
|
|
- forms.player.on('waiting', () => {
|
|
|
|
- // console.log('waiting pause')
|
|
|
|
- videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
|
- })
|
|
|
|
|
|
+ forms.player.on('seeking', () => {
|
|
|
|
+ console.log('seeking')
|
|
|
|
+ videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
|
+ })
|
|
|
|
|
|
- // 如何视频在缓存不会触发
|
|
|
|
- forms.player.on('timeupdate', () => {
|
|
|
|
- // console.log('timeupdate', forms.player.currentTime)
|
|
|
|
- // console.log(videoIntervalRef.isActive.value, 'timeupdate')
|
|
|
|
- // 时间变化时更新每一段的状态
|
|
|
|
- checkVideoDetails(forms.player.currentTime)
|
|
|
|
- // 判断视频计时器是否暂停,如果暂停则恢复
|
|
|
|
- // 添加 「forms.player.playing」 是由会跳转到上次播放时间,会触发些方法
|
|
|
|
- if (
|
|
|
|
- !videoIntervalRef.isActive.value &&
|
|
|
|
- forms.player.currentTime > 0 &&
|
|
|
|
- forms.player.playing
|
|
|
|
- ) {
|
|
|
|
- // console.log('timeupdate play')
|
|
|
|
- videoIntervalRef.resume()
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
|
|
+ // // 拖动结束时
|
|
|
|
+ forms.player.on('seeked', () => {
|
|
|
|
+ console.log('seeked')
|
|
|
|
+ videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
|
+ })
|
|
|
|
|
|
- // 视屏播放时暂停
|
|
|
|
- forms.player.on('ended', () => {
|
|
|
|
- forms.player.pause()
|
|
|
|
|
|
+ // 正在搜索中
|
|
|
|
+ forms.player.on('waiting', () => {
|
|
|
|
+ // console.log('waiting pause')
|
|
|
|
+ videoIntervalRef.isActive.value && videoIntervalRef.pause()
|
|
|
|
+ })
|
|
|
|
|
|
- console.log(videoIntervalRef.isActive.value, 'ended')
|
|
|
|
- })
|
|
|
|
|
|
+ // 如何视频在缓存不会触发
|
|
|
|
+ forms.player.on('timeupdate', () => {
|
|
|
|
+ console.log('timeupdate', forms.player.currentTime())
|
|
|
|
+ // 时间变化时更新每一段的状态
|
|
|
|
+ checkVideoDetails(forms.player.currentTime())
|
|
|
|
+ // 判断视频计时器是否暂停,如果暂停则恢复
|
|
|
|
+ // 添加 「forms.player.playing」 是由会跳转到上次播放时间,会触发些方法
|
|
|
|
+ if (
|
|
|
|
+ !videoIntervalRef.isActive.value &&
|
|
|
|
+ forms.player.currentTime() > 0 &&
|
|
|
|
+ forms.player.playing
|
|
|
|
+ ) {
|
|
|
|
+ // console.log('timeupdate play')
|
|
|
|
+ videoIntervalRef.resume()
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
|
|
- // 开始播放
|
|
|
|
- forms.player.on('play', () => {
|
|
|
|
- console.log('play')
|
|
|
|
- // 判断视频计时器是否暂停,如果暂停则恢复
|
|
|
|
- videoIntervalRef.resume()
|
|
|
|
- })
|
|
|
|
|
|
+ // 视屏播放时暂停
|
|
|
|
+ forms.player.on('ended', () => {
|
|
|
|
+ forms.player.pause()
|
|
|
|
+ })
|
|
|
|
|
|
- // 暂停播放
|
|
|
|
- forms.player.on('pause', () => {
|
|
|
|
- console.log('pause', videoIntervalRef.isActive.value)
|
|
|
|
|
|
+ // 开始播放
|
|
|
|
+ forms.player.on('play', () => {
|
|
|
|
+ console.log('play')
|
|
|
|
+ // 判断视频计时器是否暂停,如果暂停则恢复
|
|
|
|
+ videoIntervalRef.resume()
|
|
|
|
+ })
|
|
|
|
|
|
- videoIntervalRef.pause()
|
|
|
|
- })
|
|
|
|
|
|
+ // 暂停播放
|
|
|
|
+ forms.player.on('pause', () => {
|
|
|
|
+ console.log('pause', videoIntervalRef.isActive.value)
|
|
|
|
|
|
- forms.player.on('enterfullscreen', () => {
|
|
|
|
- console.log('fullscreen')
|
|
|
|
- const i = document.createElement('i')
|
|
|
|
- i.id = 'fullscreen-back'
|
|
|
|
- i.className = 'van-icon van-icon-arrow-left video-back'
|
|
|
|
- i.addEventListener('click', () => {
|
|
|
|
- forms.player.fullscreen.exit()
|
|
|
|
|
|
+ videoIntervalRef.pause()
|
|
})
|
|
})
|
|
- // console.log(document.getElementsByClassName('plyr'))
|
|
|
|
- document.getElementsByClassName('plyr')[0].appendChild(i)
|
|
|
|
- })
|
|
|
|
|
|
|
|
- forms.player.on('exitfullscreen', () => {
|
|
|
|
- console.log('exitfullscreen')
|
|
|
|
- const i = document.getElementById('fullscreen-back')
|
|
|
|
- i && i.remove()
|
|
|
|
- })
|
|
|
|
|
|
+ forms.player.on('fullscreenchange', () => {
|
|
|
|
+ if (forms.player.isFullscreen()) {
|
|
|
|
+ console.log('fullscreen')
|
|
|
|
+ const i = document.createElement('i')
|
|
|
|
+ i.id = 'fullscreen-back'
|
|
|
|
+ i.className = 'van-icon van-icon-arrow-left video-back'
|
|
|
|
+ i.addEventListener('click', () => {
|
|
|
|
+ forms.player.exitFullscreen()
|
|
|
|
+ })
|
|
|
|
+ document.getElementsByClassName('video-js')[0].appendChild(i)
|
|
|
|
+ } else {
|
|
|
|
+ console.log('exitfullscreen')
|
|
|
|
+ const i = document.getElementById('fullscreen-back')
|
|
|
|
+ i && i.remove()
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
checkVideoDetails(0)
|
|
checkVideoDetails(0)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -286,6 +409,7 @@ export default defineComponent({
|
|
watch(
|
|
watch(
|
|
() => videoIntervalRef.isActive.value,
|
|
() => videoIntervalRef.isActive.value,
|
|
(newVal: boolean) => {
|
|
(newVal: boolean) => {
|
|
|
|
+ console.log(videoIntervalRef.isActive.value, 'videoIntervalRef')
|
|
initVideoCount(newVal)
|
|
initVideoCount(newVal)
|
|
}
|
|
}
|
|
)
|
|
)
|
|
@@ -358,7 +482,7 @@ export default defineComponent({
|
|
videoBrowseDataTime: time || 0, // 有效的视频观看时长
|
|
videoBrowseDataTime: time || 0, // 有效的视频观看时长
|
|
videoBrowsePercentage: rate || 0, // 有效的视频观看时长百分比
|
|
videoBrowsePercentage: rate || 0, // 有效的视频观看时长百分比
|
|
videoBrowseTime: videoIntervalRef?.counter.value, // 视频观看时长
|
|
videoBrowseTime: videoIntervalRef?.counter.value, // 视频观看时长
|
|
- videoBrowsePoint: Math.floor(forms.player.currentTime || 0) // 视频最后观看点 - 向下取整
|
|
|
|
|
|
+ videoBrowsePoint: Math.floor(forms.player.currentTime() || 0) // 视频最后观看点 - 向下取整
|
|
}
|
|
}
|
|
})
|
|
})
|
|
} catch {
|
|
} catch {
|
|
@@ -419,7 +543,7 @@ export default defineComponent({
|
|
})
|
|
})
|
|
forms.videoBrowsePoint = data.videoBrowsePoint || 0
|
|
forms.videoBrowsePoint = data.videoBrowsePoint || 0
|
|
if (forms.player) {
|
|
if (forms.player) {
|
|
- forms.player.currentTime = data.videoBrowsePoint || 0
|
|
|
|
|
|
+ forms.player.currentTime(data.videoBrowsePoint || 0)
|
|
}
|
|
}
|
|
forms.introductionVideo = data.introductionVideo
|
|
forms.introductionVideo = data.introductionVideo
|
|
forms.introductionVideoTime = data.introductionVideoTime
|
|
forms.introductionVideoTime = data.introductionVideoTime
|
|
@@ -543,10 +667,10 @@ export default defineComponent({
|
|
<span
|
|
<span
|
|
class={[item.id === forms.videoSelectId ? styles.active : '']}
|
|
class={[item.id === forms.videoSelectId ? styles.active : '']}
|
|
onClick={() => {
|
|
onClick={() => {
|
|
- forms.player.currentTime = item.startNode
|
|
|
|
|
|
+ forms.player.currentTime(item.startNode)
|
|
forms.player.play()
|
|
forms.player.play()
|
|
forms.videoBrowsePoint = item.startNode
|
|
forms.videoBrowsePoint = item.startNode
|
|
- checkVideoDetails(forms.player.currentTime)
|
|
|
|
|
|
+ checkVideoDetails(forms.player.currentTime())
|
|
}}
|
|
}}
|
|
>
|
|
>
|
|
{item.desc}
|
|
{item.desc}
|