1. 安装
npm install --save-dev video.js
复制代码
2. 引入
在main.js里
import VideoPlayer from '@videojs-player/vue'
import 'video.js/dist/video-js.css'
const app = createApp(App)
app.use(VideoPlayer)
复制代码
在需要使用的页面里 template部分
<video-player :src="options.src" :poster="options.poster" class="video-player "
crossorigin="anonymous" :preload="options.preload" playsinline controls :loop="true" :volume="0.6"
:options="options" @mounted="handleMounted" @ended="ended($event)" @play="play($event)"
@pause="pause($event)"></video-player>
复制代码
script 部分
/* videoplayer */
const player = shallowRef(null)
const options = reactive({
width: '100vw', // 播放器宽度,默认100vw
height: '200px', // 播放器高度,默认100vh
src: '', // 视频地址
poster: '', // 视频海报
type: 'm3u8', // 视频类型
muted: false, // 视频静音
autoplay: true, // 自动播放
loop: false, // 循环播放
volume: 1, // 音量大小 0-1
preload: 'auto', // 预加载
objectFit: 'cover', // 同css object-fit,作用于video标签
currentTime: 0, // 当前播放时间
showCurrentTime: false, // 是否在拖动进度条时toast当前时间文字
errorText: '播放出错', // 视频error时,toast提示
control: true,
preferFullWindow: true, //将此设置为true将更改不支持 HTML5 全屏 API 但支持视频元素全屏的设备(即 iPhone)上的全屏行为。播放器将被拉伸以填充浏览器窗口,而不是全屏播放视频
})
// 当我们需要给视频增加流体模式时,也可以在mounted阶段
const handleMounted = (payload) => {
player.value = payload.player
player.value.fluid(true)
player.value.aspectRatio('16:9')
}
// 我们还可在播放、暂停、结束进行一些操作,或者当这些操作发生时我们需要做什么
const play = (log) => {
// 播放之前做验证,需要验证的则暂停播放
if (nowPlayUrlIndex.value !== 0 && !nowVideoIdCheck.value[nowgood_id].code) {
player.value.pause()
show.value = true
} else {
show.value = false
}
}
const pause = (log) => {
// 暂停的时候我们可以跳出广告弹窗
}
// 视频播放完 =》 跳转下一个
const ended = (log) => {
player.value.src(nextPlayUrl.value)
player.value.poster(videoList.value[index].resCover)
player.value.load(nextPlayUrl.value)
player.value.play(nextPlayUrl.value)
}
复制代码
CSS 部分
.video-js {
width: 100%;
/*不给高度是因为开启了流体模式自适应*/
}
:deep(.vjs-poster img) {
object-fit: fill ; /*让封面图片也铺开*/
}
/*对原生的播放按钮进行样式修改*/
:deep(.video-js .vjs-big-play-button) {
display: none;
height: 3em;
line-height: 3em;
border: none;
border-radius: 50%;
margin-top: -1.31666em;
margin-left: -1.5em;
}
/*隐藏一些不需要的按钮*/
.vjs-picture-in-picture-control vjs-control vjs-button {
display: none !important;
}
复制代码
3. videojs相关链接
GitHub github.com/videojs/vid…
中文文档 gitcode.gitcode.host/docs-cn/vid…
官方文档 videojs.com/
4. 相关的配置、方法和事件
常用的videojs
配置选项:
html5
,这里需要播放rtmp
所以首选项要是flash
常用方法和事件