日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue-video-player 斷點續播的實現

瀏覽:13日期:2022-10-07 11:39:26

最近的項目中需要實現視頻斷點續播的功能,一聽到這個功能。內心方張了..但卻又有點小竊喜,小懵亂。抱著求學態度去挑戰一下。

1.安裝插件

npm install vue-video-player --save2.Main.js 引入組件

import VideoPlayer from ’vue-video-player’require(’video.js/dist/video-js.css’)require(’vue-video-player/src/custom-theme.css’)Vue.use(VideoPlayer)3.頁面使用組件

<el-tree :data='ChapterOptions' :props='defaultProps' node-key=’id’ highlight-current :filter-node-method='filterNode' ref='tree' default-expand-all @node-click='handleNodeClick' /><video-player ref='videoPlayer' :playsinline='true':options='playerOptions'@pause='onPlayerPause($event)'@ended='onPlayerEnded($event)'@play='onPlayerPlay($event)'@timeupdate='onPlayerTimeupdate($event)'@ready='playerReadied' /><script>import { videoPlayer } from ’vue-video-player’import ’video.js/dist/video-js.css’import ’vue-video-player/src/custom-theme.css’import { treeselect } from '@/api//driver/videoChapter';import Treeselect from '@riophae/vue-treeselect';import '@riophae/vue-treeselect/dist/vue-treeselect.css';export default { name: 'videoPlayer', components: { Treeselect,videoPlayer }, data() { return { //用戶信息 user:{}, //=============================== paused: true, learningDuration: { userId: ’’, //用戶id chapterId:’’,//章節id timeLog: ’’, //視頻觀看時長 }, playerOptions: { playbackRates: [0.5, 1.0, 1.5, 2.0], //播放速度 autoplay: false, // 如果true,瀏覽器準備好時開始回放。 muted: false, // 默認情況下將會消除任何音頻。 loop: false, // 導致視頻一結束就重新開始。 preload: ’auto’, // 建議瀏覽器在<video>加載元素后是否應該開始下載視頻數據。auto瀏覽器選擇最佳行為,立即開始加載視頻(如果瀏覽器支持) language: ’zh-CN’, aspectRatio: ’16:9’, // 將播放器置于流暢模式,并在計算播放器的動態大小時使用該值。值應該代表一個比例 - 用冒號分隔的兩個數字(例如'16:9'或'4:3') fluid: true, // 當true時,Video.js player將擁有流體大小。換句話說,它將按比例縮放以適應其容器。 sources: [ { type: ’video/mp4’, // 這里的種類支持很多種:基本視頻格式、直播、流媒體等,具體可以參看git網址項目 src: ’’// url地址 } ], hls: true, poster: ’’, // 你的封面地址 width: document.documentElement.clientWidth, // 播放器寬度 notSupportedMessage: ’此視頻暫無法播放,請稍后再試’, // 允許覆蓋Video.js無法播放媒體源時顯示的默認信息。 controlBar: { //當前時間和持續時間的分隔符 timeDivider: true, //顯示持續時間 durationDisplay: true, //是否顯示剩余時間功能 remainingTimeDisplay: false, //全屏按鈕 fullscreenToggle: true } } };},computed: { player() { return this.$refs.videoPlayer.player//自定義播放 } },mounted () { this.timer = setInterval(this.putLearningObj, 3000) },destroyed () { // 如果定時器在運行則關閉 if (this.timer) { clearInterval(this.timer) } },methods: { //用戶信息 getUser() { getUserProfile().then(response => { this.user = response.data; this.learningDuration.userId = this.user.userId }); }, //============================ fullScreen() { const player = this.$refs.videoPlayer.player player.requestFullscreen()//調用全屏api方法 player.isFullscreen(true) player.play() }, onPlayerPlay(player) { this.paused = false // player.play() }, onPlayerPause (player) { this.paused = true // console.log(’onPlayerPause!’, player) }, onPlayerEnded (player) { this.paused = false; // clearInterval(this.timer); }, //當前播放位置發生變化時觸發。 onPlayerTimeupdate (player) { // console.log(’ onPlayerTimeupdate!’, this.timeLog) }, /* 設置視頻進度 */ playerReadied: function (player) { },};</script>

上面的 src視頻地址可以換成具體的地址串,也能換成后臺的地址串,因為我的是章節樹所以我和章節id進行了關聯

/** 查詢部門下拉樹結構 */ getTreeselect() { treeselect().then((response) => { //封面 var img = ’’; this.ChapterOptions = response.data; for (let i = 0; i <this.ChapterOptions.length ; i++) { this.videoName = this.ChapterOptions[0].children[0].chapterName this.videoIntroduce = this.ChapterOptions[0].children[0].chapterIntroduce this.VideoUrl = JSON.parse(this.ChapterOptions[0].children[0].videoAddress) img = JSON.parse(this.ChapterOptions[0].children[0].imageAddress) //初始化封面 for (let j = 0; j <img.length ; j++) { this.playerOptions.poster =img[0]; } //初始化第一個章節視頻 for (let j = 0; j <this.VideoUrl.length ; j++) { this.playerOptions.sources[0].src = this.VideoUrl[0] } //初始化章節 this.learningDuration.chapterId = this.ChapterOptions[0].children[0].id; //默認高亮第一個章節節點 this.$nextTick(()=>{ this.$refs.tree.setCurrentKey(this.ChapterOptions[0].children[0].id); }) } }); }, // 篩選節點 filterNode(value, data) { if (!value) return true; return data.label.indexOf(value) !== -1; }, // 節點單擊事件 handleNodeClick(data) { // console.log(data) var img = ’’; //刷新原視頻, 原封面 this.playerOptions.sources[0].src = ’’; this.playerOptions.poster = ’’; //轉換視頻 this.VideoUrl= JSON.parse(data.videoAddress); // console.log('this.VideoUrl') for (let i = 0; i <this.VideoUrl.length ; i++) { this.playerOptions.sources[0].src = this.VideoUrl[0]; } img = JSON.parse(data.imageAddress); for (let i = 0; i <img.length ; i++) { this.playerOptions.poster = img[0]; } // console.log('this.playerOptions.sources[0].src') // console.log(this.playerOptions.sources[0].src) //章節介紹 this.videoIntroduce = data.chapterIntroduce; //章節名稱 this.videoName = data.chapterName; //章節id this.learningDuration.chapterId = data.id // console.log(this.videoIntroduce) },

4.進度保存

接下來就是 保存視頻的進度條了,通過打印發現onPlayerTimeupdate可獲取到視頻的進度,故采用定時器 每3秒觸發一次數據交互

computed: { player() { return this.$refs.videoPlayer.player//自定義播放 } }, mounted () { this.timer = setInterval(this.putLearningObj, 3000) }, destroyed () { // 如果定時器在運行則關閉 if (this.timer) { clearInterval(this.timer) } },methods: { putLearningObj () { if (!this.paused) { //保存視頻進度 saveTime(this.learningDuration) console.log(’putLearningObj ~~~~~~~~~’) } },//當前播放位置發生變化時觸發。onPlayerTimeupdate (player) { this.learningDuration.timeLog = player.cache_.currentTime // console.log(’ onPlayerTimeupdate!’, this.timeLog) },},

saveTime是我自定義的與后端交互的方法。(可自行定義)

// 保存視頻進度export function saveTime(data) { return request({ url: ’/***/****/***/’, method: ’put’, data: data })}

那么到了這一步 進度就能保存下來了

4.進度恢復

想要恢復進度,就必須在視頻播放前把 保存進度下來的設置到視頻當中,通過打印可以看出playerReadied 可以設置

/* 設置視頻進度 */playerReadied: function (player) {//可在此調用后臺交互方法...player.currentTime(this.learningDuration.timeLog)},

到此 進度可以 恢復了 大功告成!。至于后臺交互數據 需求不一樣,代碼也就沒有貼出來。

vue-video-player 斷點續播的實現

到此這篇關于vue-video-player 斷點續播的文章就介紹到這了,更多相關vue video player 斷點續播內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
婷婷成人综合| 日韩一区二区三区免费| 亚洲国产影院| 亚洲一级网站| 欧美日韩在线播放视频| 久久久久久久久久久妇女 | 亚洲综合专区| 国产欧美日韩影院| 精品一级视频| 激情综合网址| 色综合视频一区二区三区日韩| 免费在线观看精品| 91欧美日韩在线| 国产精品亚洲一区二区在线观看| 国产精品一区二区精品视频观看 | 成人看片网站| 国产亚洲精品v| 日本中文字幕一区二区视频| 国产精品一区二区免费福利视频| 91免费精品| 在线亚洲欧美| 免费一级欧美在线观看视频| 日本免费久久| 午夜久久av| av日韩中文| 色狠狠一区二区三区| а√天堂8资源在线| 亚洲欧洲免费| 欧美aa在线观看| 国产精品调教视频| 先锋影音久久久| 国产a亚洲精品| 日韩av不卡在线观看| 欧美美女一区| 久草免费在线视频| 日韩**一区毛片| 美女少妇全过程你懂的久久| 国产高清亚洲| 亚洲理论在线| 久久久一二三| www.九色在线| 精品国产中文字幕第一页| 综合一区在线| 伊人成人网在线看| 色天使综合视频| 久久久久久久久成人| 日本午夜精品一区二区三区电影 | 亚洲欧美日韩专区| 偷拍精品精品一区二区三区| 欧美精品二区| 免费亚洲婷婷| 久久精品99国产精品| 少妇高潮一区二区三区99| 免费成人在线视频观看| 伊人精品在线| 91久久午夜| 亚洲一级高清| 国产精品亚洲片在线播放| 国产精品欧美在线观看| 午夜在线精品| 91精品精品| 久久视频一区| 美日韩精品视频| 欧美啪啪一区| 日韩精品免费视频一区二区三区| 亚洲一区观看| 99精品电影| 91精品xxx在线观看| 亚洲成人va| 欧美1区免费| 自拍日韩欧美| 精品国产美女a久久9999| 亚洲欧美日韩视频二区| 丝袜美腿一区二区三区| 免费在线观看一区二区三区| 亚洲开心激情| 国内精品美女在线观看| 91精品国产乱码久久久久久久| 九九久久婷婷| 日韩手机在线| 久久精品色播| 日韩精品看片| 亚洲一区二区三区四区五区午夜| 日韩欧美在线精品| 国产网站在线| 日韩欧美四区| 欧美日韩尤物久久| 婷婷亚洲成人| 欧洲一级精品| 香蕉久久一区| 亚洲va中文在线播放免费| 亚洲毛片网站| 另类中文字幕国产精品| 亚洲精品少妇| 色婷婷精品视频| 国产午夜精品一区在线观看| 国产在线欧美| 欧美日韩一区自拍| 美女毛片一区二区三区四区| 国产精品观看| 在线视频亚洲欧美中文| 日本久久成人网| 国产高清视频一区二区| 亚洲我射av| 91久久中文| 色在线视频观看| 国产精品网站在线看| 亚洲一区二区三区四区电影 | 亚洲精品伊人| 久久精品影视| 国内不卡的一区二区三区中文字幕| 亚洲毛片网站| 亚洲制服一区| 免费在线观看视频一区| 91成人网在线观看| 欧洲在线一区| 成人免费网站www网站高清| 狠狠久久伊人中文字幕| 国产九九精品| 国产精一区二区| 国产精品一区三区在线观看| 亚洲日产国产精品| 亚洲欧美专区| 亚洲天堂av资源在线观看| 激情91久久| 亚洲综合在线电影| 欧美在线91| 国产欧洲在线| 好吊视频一区二区三区四区| 国产欧美一区二区三区国产幕精品| 欧美一级精品| 在线精品小视频| 91精品国产91久久久久久黑人| 国产精品日韩精品在线播放| 日韩精品国产精品| 久久国产三级| 久久婷婷国产| 精品视频一区二区三区四区五区| 日本成人在线一区| 麻豆精品久久| 另类亚洲自拍| 1000部精品久久久久久久久| 黄色在线网站噜噜噜| 精品国产欧美日韩一区二区三区| 欧美激情视频一区二区三区免费| 国产精品啊啊啊| 国产在线看片免费视频在线观看| 亚洲精品国产嫩草在线观看| 色吊丝一区二区| 免费欧美日韩| 国产伦乱精品| 久久香蕉国产| 亚洲人成毛片在线播放女女| 日韩精品欧美精品| 日韩成人午夜精品| 精品国产黄a∨片高清在线| 久久国产欧美| 中文字幕日韩亚洲| 久久免费视频66| 伊人影院久久| 五月亚洲婷婷 | 亚洲日本在线观看视频| 国产精品久久777777毛茸茸| 成人午夜精品| 亚洲丝袜啪啪| 精品91福利视频| 亚洲精品国产偷自在线观看| 日本三级亚洲精品| 五月天综合网站| av中文资源在线资源免费观看| 日韩影院免费视频| 日韩欧美不卡| 日韩区欧美区| 亚洲一区区二区| 久久精品国语| 日韩高清成人在线| 免费不卡在线视频| 久久久久久黄| 粉嫩av一区二区三区四区五区| 日韩av网站免费在线| 美女精品在线| 欧美高清一区| 999久久久亚洲| 久久久777| 亚洲一本视频| 亚洲精品网址| 国产精品嫩草99av在线| 亚洲精品在线影院| 毛片在线网站| 日韩精品一卡| 欧洲av不卡| 不卡中文字幕| 在线国产一区| 中文一区在线| 亚洲伊人精品酒店| 久久视频精品| 欧美日韩免费看片| 91亚洲一区| 欧美亚洲激情| 国产91欧美|