vue 实现在线视频播放功能

此文章基于vue3-video-play实现前端视频播放效果

参考资料:GitHub - xdlumia/vue3-video-play: 适用于 Vue3 的 hls.js 播放器组件,配置丰富,界面还算好看

安装vue3-video-play

npm i vue3-video-play --save

yarn add vue3-video-play --save


//我这里用的是 "vue3-video-play": "^1.3.1-beta.6" 此版本

引入vue3-video-play

在需要使用该功能的vue页面js部分引入(以下所有代码可以直接复制使用)

<script setup>
import 'vue3-video-play/dist/style.css'
import { videoPlay } from 'vue3-video-play'
</script>

使用vue3-video-play

demo1直接使用

<template>
  <div>
    <videoPlay ref="aplayVideo" v-bind="options" @play="onPlay" @error="handleError" />
  </div>
</template>

<script setup>
import 'vue3-video-play/dist/style.css'
import { videoPlay } from 'vue3-video-play'
import { reactive } from 'vue'
//事件示例
const onPlay = (ev) => {
  console.log('播放', ev)
}
const handleError = (err) => {
  console.error('视频播放出错:', err)
}
//播放器
const options = reactive({
  width: '100%', //播放器高度
  height: '100%', //播放器高度
  color: '#409eff', //主题色
  title: '', //视频名称
  webFullScreen: false, //网页全屏
  speed: true, //是否支持快进快退
  currentTime: 0, //跳转到固定播放时间(s)
  muted: false, //静音
  autoPlay: true, //自动播放
  loop: false, //循环播放
  mirror: false, //镜像画面
  control: true, //是否显示控制器
  ligthOff: false, //关灯模式
  volume: 0.3, //默认音量0-1
  src: '/src/20240618_160252.mp4', //视频源
  poster: '', //封面
  speedRate: [1.0, 1.25, 1.5, 2.0], // 可选的播放速度
  controlBtns: [
    'audioTrack', //音轨切换按钮
    'quality', //视频质量切换按钮
    'speedRate', //速率切换按钮
    'volume', //音量
    'setting', //设置
    'pip', //画中画按钮
    'pageFullScreen', //网页全屏按钮
    'fullScreen' //全屏按钮
  ] //显示所有按钮,
})
</script>

<style lang="scss" scoped></style>

demo2分装成组件使用

//在components下新建MyVideoPlayer.vue文件直接复制该代码
<template>
  <div>
    <videoPlay ref="aplayVideo" v-bind="mergedOptions" @play="onPlay" @error="handleError" />
  </div>
</template>

<script setup>
import 'vue3-video-play/dist/style.css'
import { videoPlay } from 'vue3-video-play'
import { reactive, computed } from 'vue'

// 定义props,允许外部传入视频源和其他配置
const props = defineProps({
  src: {
    type: String,
    required: true
  },
  width: {
    type: String,
    default: '100%'
  },
  height: {
    type: String,
    default: '100%'
  }
  // ... 其他配置项也可以按照这种方式定义
})

// 使用computed属性合并外部传入的props和内部默认配置
const mergedOptions = computed(() => ({
  width: props.width,
  height: props.height,
  color: '#409eff',
  title: '',
  webFullScreen: false,
  speed: true,
  currentTime: 0,
  muted: false,
  autoPlay: true,
  loop: false,
  mirror: false,
  control: true,
  ligthOff: false,
  volume: 0.3,
  src: props.src,
  poster: '',
  speedRate: [1.0, 1.25, 1.5, 2.0],
  controlBtns: [
    'audioTrack',
    'quality',
    'speedRate',
    'volume',
    'setting',
    'pip',
    'pageFullScreen',
    'fullScreen'
  ]
}))

const onPlay = (ev) => {
  console.log('播放', ev)
}

const handleError = (err) => {
  console.error('视频播放出错:', err)
}
</script>

<style lang="scss" scoped></style>

使用该组件

//通过引入组件的方法使用
<template>
  <div>
    <my-video-player :src="'/src/20240618_160252.mp4'" />
  </div>
</template>

<script setup>
import MyVideoPlayer from './components/MyVideoPlayer.vue'
</script>

<style lang="scss" scoped></style>

效果图

 

以上实现了前端如何使用vue3-video-play实现视频播放具体可以参考文章开始的github地址,作者还提供了许多方法以及参数供给大家使用

参考资料:

vue3-video-play 实现视频播放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值