Vue3視頻播放器組件Vue3-video-play新手入門教程
Vue3-video-play適用于 Vue3 的 hls.js 播放器組件 | 并且支持MP4/WebM/Ogg格式。
1、支持快捷鍵操作
2、支持倍速播放設置
3、支持鏡像畫面設置
4、支持關燈模式設置
5、支持畫中畫模式播放
6、支持全屏/網(wǎng)頁全屏播放
7、支持從固定時間開始播放
8、支持移動端,移動端會自動調(diào)用自帶視頻播放器
9、支持hls視頻流播放,支持直播10、hls播放支持清晰度切換
1、安裝方式
(1)npm安裝方式
npm i vue3-video-play --save
(2)yarn安裝方式
yarn add vue3-video-play --save
2、使用方式
(1)局部使用
// require style import 'vue3-video-play/dist/style.css' import { videoPlay } from 'vue-video-play' export default { components: { videoPlay } }
(2)全局使用
import { createApp } from 'vue' import App from './App.vue' let app = createApp(App) import vue3videoPlay from 'vue3-video-play' // 引入組件 import 'vue3-video-play/dist/style.css' // 引入css app.use(vue3videoPlay) app.mount('#app')
3、示例代碼
(1)事件示例
vue3-video-play
支持原生video
所有事件。
<template> <div> <vue3VideoPlay width="800px" title="鋼鐵俠" :src="options.src" :poster="options.poster" @play="onPlay" @pause="onPause" @timeupdate="onTimeupdate" @canplay="onCanplay" /> </div> </template> <script setup lang="ts"> import { reactive } from 'vue'; const options = reactive({ src: "https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/IronMan.mp4", //視頻源 poster: '', //封面 }) const onPlay = (ev) => { console.log('播放') } const onPause = (ev) => { console.log(ev, '暫停') } const onTimeupdate = (ev) => { console.log(ev, '時間更新') } const onCanplay = (ev) => { console.log(ev, '可以播放') } </script> <style scoped> </style>
(2)Hls m3u8視頻/直播
vue3-video-play
支持m3u8(hls)播放
<template> <div> <vue3VideoPlay width="800px" title="冰河世紀" :src="options.src" :type="options.type" :autoPlay="false" /> </div> </template> <script setup lang="ts"> import { reactive } from 'vue'; const options = reactive({ src: "https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8", //視頻源 type: 'm3u8', //視頻類型 }) </script> <style scoped> </style>
4、屬性 Props
?vue3-video-play 支持video原生所有Attributes video原生屬性 使用方式和props屬性使用一致
名稱 | 說明 | 類型 | 可選值 | 默認值 |
---|---|---|---|---|
width | 播放器寬度 | string | - | 800px |
height | 播放器高度 | string | - | 450px |
color | 播放器主色調(diào) | string | - | #409eff |
src | 視頻資源 | string | - | - |
title | 視頻名稱 | string | - | - |
type | 視頻類型 | string | - | video/mp4 |
poster | 視頻封面 | string | - | 視頻第一幀 |
webFullScreen | 網(wǎng)頁全屏 | boolean | - | false |
speed | 是否支持快進快退 | boolean | - | true |
currentTime | 跳轉(zhuǎn)到固定播放時間(s) | number | - | 0 |
playsinline | ios點擊屏幕是否全屏 | boolean | - | false |
muted | 靜音 | boolean | - | false |
speedRate | 倍速配置 | array | - | ["2.0", "1.0", "1.5", "1.25", "0.75", "0.5"] |
autoPlay | 自動播放 | boolean | - | false,為true時會自動靜音 |
loop | 循環(huán)播放 | boolean | - | false |
mirror | 鏡像畫面 | boolean | - | false |
ligthOff | 關燈模式 | boolean | - | false |
volume | 默認音量 | number | 0-1 | 0.3 |
control | 是否顯示控制器 | boolean | - | true |
controlBtns | 控制器顯示的按鈕 | array | ['audioTrack', 'quality', 'speedRate', 'volume', 'setting', 'pip', 'pageFullScreen', 'fullScreen'] | ['audioTrack', 'quality', 'speedRate', 'volume', 'setting', 'pip', 'pageFullScreen', 'fullScreen'] |
preload | 預加載 | string | meta/auto/none | auto |
props屬性 controlBtns 按鈕說明
名稱 | 說明 |
---|---|
audioTrack | 音軌切換按鈕 |
quality | 視頻質(zhì)量切換按鈕 |
speedRate | 速率切換按鈕 |
volume | 音量 |
setting | 設置 |
pip | 畫中畫按鈕 |
pageFullScreen | 網(wǎng)頁全屏按鈕 |
fullScreen | 全屏按鈕 |
Events
vue3-video-play支持video原生所有事件 video默認事件(見文末)
事件名稱 | 說明 | 回調(diào) |
---|---|---|
mirrorChange | 鏡像翻轉(zhuǎn)事件 | val |
loopChange | 循環(huán)播放開關事件 | val |
lightOffChange | 關燈模式事件 | val |
loadstart | 客戶端開始請求數(shù)據(jù) | event |
progress | 客戶端正在請求數(shù)據(jù) | event |
error | 請求數(shù)據(jù)時遇到錯誤 | event |
stalled | 網(wǎng)速失速 | event |
play | 開始播放時觸發(fā) | event |
pause | 暫停時觸發(fā) | event |
loadedmetadata | 成功獲取資源長度 | event |
loadeddata | 緩沖中 | event |
waiting | 等待數(shù)據(jù),并非錯誤 | event |
playing | 開始回放 | event |
canplay | 暫停狀態(tài)下可以播放 | event |
canplaythrough | 可以持續(xù)播放 | event |
timeupdate | 更新播放時間 | event |
ended | 播放結束 | event |
ratechange | 播放速率改變 | event |
durationchange | 資源長度改變 | event |
volumechange | 音量改變 | event |
快捷鍵說明
鍵名 | 說明 |
---|---|
Space | 暫停/播放 |
方向右鍵 → | 單次快進 10s,長按 5 倍速播放 |
方向左鍵 ← | 快退 10s |
方向上鍵 ↑ | 音量+10% |
方向下鍵 ↓ | 音量-10% |
Esc | 退出全屏/退出網(wǎng)頁全屏 |
F | 全屏/退出全屏 |
附:HTML5的Video標簽的屬性,方法和事件匯總
<video>標簽的屬性 src :視頻的屬性 poster:視頻封面,沒有播放時顯示的圖片 preload:預加載 autoplay:自動播放 loop:循環(huán)播放 controls:瀏覽器自帶的控制條 width:視頻寬度 height:視頻高度 html 代碼 <video id="media" src="http://www.sundxs.com/test.mp4" controls width="400px" heigt="400px"></video> //audio和video都可以通過JS獲取對象,JS通過id獲取video和audio的對象 獲取video對象 Media = document.getElementById("media"); Media方法和屬性: HTMLVideoElement和HTMLAudioElement 均繼承自HTMLMediaElement Media.error; //null:正常 Media.error.code; //1.用戶終止 2.網(wǎng)絡錯誤 3.解碼錯誤 4.URL無效 //網(wǎng)絡狀態(tài) - Media.currentSrc; //返回當前資源的URL - Media.src = value; //返回或設置當前資源的URL - Media.canPlayType(type); //是否能播放某種格式的資源 - Media.networkState; //0.此元素未初始化 1.正常但沒有使用網(wǎng)絡 2.正在下載數(shù)據(jù) 3.沒有找到資源 - Media.load(); //重新加載src指定的資源 - Media.buffered; //返回已緩沖區(qū)域,TimeRanges - Media.preload; //none:不預載 metadata:預載資源信息 auto: //準備狀態(tài) - Media.readyState;//1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA - Media.seeking; //是否正在seeking //回放狀態(tài) Media.currentTime = value; //當前播放的位置,賦值可改變位置 Media.startTime; //一般為0,如果為流媒體或者不從0開始的資源,則不為0 Media.duration; //當前資源長度 流返回無限 Media.paused; //是否暫停 Media.defaultPlaybackRate = value;//默認的回放速度,可以設置 Media.playbackRate = value;//當前播放速度,設置后馬上改變 Media.played; //返回已經(jīng)播放的區(qū)域,TimeRanges,關于此對象見下文 Media.seekable; //返回可以seek的區(qū)域 TimeRanges Media.ended; //是否結束 Media.autoPlay; //是否自動播放 Media.loop; //是否循環(huán)播放 Media.play(); //播放 Media.pause(); //暫停 //視頻控制 Media.controls;//是否有默認控制條 Media.volume = value; //音量 Media.muted = value; //靜音 TimeRanges(區(qū)域)對象 TimeRanges.length; //區(qū)域段數(shù) TimeRanges.start(index) //第index段區(qū)域的開始位置 TimeRanges.end(index) //第index段區(qū)域的結束位置 //相關事件 var eventTester = function(e){ Media.addEventListener(e,function(){ console.log((new Date()).getTime(),e) },false); } eventTester("loadstart"); //客戶端開始請求數(shù)據(jù) eventTester("progress"); //客戶端正在請求數(shù)據(jù) eventTester("suspend"); //延遲下載 eventTester("abort"); //客戶端主動終止下載(不是因為錯誤引起) eventTester("loadstart"); //客戶端開始請求數(shù)據(jù) eventTester("progress"); //客戶端正在請求數(shù)據(jù) eventTester("suspend"); //延遲下載 eventTester("abort"); //客戶端主動終止下載(不是因為錯誤引起), eventTester("error"); //請求數(shù)據(jù)時遇到錯誤 eventTester("stalled"); //網(wǎng)速失速 eventTester("play"); //play()和autoplay開始播放時觸發(fā) eventTester("pause"); //pause()觸發(fā) eventTester("loadedmetadata"); //成功獲取資源長度 eventTester("loadeddata"); // eventTester("waiting"); //等待數(shù)據(jù),并非錯誤 eventTester("playing"); //開始回放 eventTester("canplay"); //可以播放,但中途可能因為加載而暫停 eventTester("canplaythrough"); //可以播放,歌曲全部加載完畢 eventTester("seeking"); //尋找中 eventTester("seeked"); //尋找完畢 eventTester("timeupdate"); //播放時間改變 eventTester("ended"); //播放結束 eventTester("ratechange"); //播放速率改變 eventTester("durationchange"); //資源長度改變 eventTester("volumechange"); //音量改變
總結
到此這篇關于Vue3視頻播放器組件Vue3-video-play新手入門的文章就介紹到這了,更多相關視頻播放器組件Vue3-video-play內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue中的get方法\post方法如何實現(xiàn)傳遞數(shù)組參數(shù)
這篇文章主要介紹了vue中的get方法\post方法如何實現(xiàn)傳遞數(shù)組參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04詳談Vue.js框架下main.js,App.vue,page/index.vue之間的區(qū)別
這篇文章主要介紹了詳談Vue.js框架下main.js,App.vue,page/index.vue之間的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08