当前位置:首页 > VUE

vue实现视频直播

2026-01-17 07:56:47VUE

Vue 实现视频直播的方法

使用 video.js 和 HLS 协议

安装 video.js 和 videojs-contrib-hls 插件:

npm install video.js videojs-contrib-hls

在 Vue 组件中引入并初始化:

import videojs from 'video.js'
import 'video.js/dist/video-js.css'
import 'videojs-contrib-hls'

export default {
  mounted() {
    this.player = videojs(this.$refs.videoPlayer, {
      controls: true,
      autoplay: true,
      sources: [{
        src: 'http://example.com/live/stream.m3u8',
        type: 'application/x-mpegURL'
      }]
    })
  },
  beforeDestroy() {
    if (this.player) {
      this.player.dispose()
    }
  }
}

模板部分:

<video ref="videoPlayer" class="video-js"></video>

使用 flv.js 实现 FLV 直播

安装 flv.js:

npm install flv.js

Vue 组件实现:

import flvjs from 'flv.js'

export default {
  data() {
    return {
      player: null
    }
  },
  mounted() {
    if (flvjs.isSupported()) {
      this.player = flvjs.createPlayer({
        type: 'flv',
        url: 'http://example.com/live/stream.flv'
      })
      this.player.attachMediaElement(this.$refs.videoPlayer)
      this.player.load()
      this.player.play()
    }
  },
  beforeDestroy() {
    if (this.player) {
      this.player.destroy()
    }
  }
}

模板部分:

<video ref="videoPlayer" controls autoplay></video>

使用 WebRTC 实现低延迟直播

安装 peerjs 库:

npm install peerjs

Vue 组件实现:

import Peer from 'peerjs'

export default {
  data() {
    return {
      peer: null,
      stream: null
    }
  },
  mounted() {
    this.peer = new Peer()
    this.peer.on('call', call => {
      call.answer()
      call.on('stream', stream => {
        this.$refs.videoPlayer.srcObject = stream
        this.stream = stream
      })
    })
  },
  beforeDestroy() {
    if (this.stream) {
      this.stream.getTracks().forEach(track => track.stop())
    }
    if (this.peer) {
      this.peer.destroy()
    }
  }
}

模板部分:

<video ref="videoPlayer" autoplay playsinline></video>

使用第三方直播 SDK

以腾讯云直播 SDK 为例:

import TcPlayer from 'tcplayer.js'

export default {
  mounted() {
    new TcPlayer('player-container-id', {
      m3u8: 'http://example.com/live/stream.m3u8',
      autoplay: true,
      width: '100%',
      height: '500px'
    })
  }
}

模板部分:

<div id="player-container-id"></div>

关键注意事项

确保视频源地址正确,不同协议需要对应不同的播放方案

HLS 和 FLV 协议适用于大多数现代浏览器,RTMP 需要 Flash 支持

WebRTC 方案延迟最低,但实现复杂度较高

直播场景需要考虑断流重连机制和错误处理

移动端需要添加 playsinline 属性防止全屏播放

直播场景建议添加 loading 状态和错误提示 UI

vue实现视频直播

标签: 视频vue
分享给朋友:

相关文章

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式完成,具体取决于项目需求和路由管理方式。 使用 Vue Router Vue Router 是 Vue.js 官方提供的…

项目基于vue实现

项目基于vue实现

基于Vue实现项目的关键方法 搭建基础环境 安装Node.js和npm/yarn,确保开发环境具备运行Vue的能力。通过Vue CLI快速初始化项目结构,选择所需配置(如Babel、Router、Vu…

vue弹幕实现不重叠

vue弹幕实现不重叠

实现 Vue 弹幕不重叠的方法 CSS 定位与动画控制 通过绝对定位和动态计算弹幕轨道高度,确保弹幕在不同轨道上运行。每条弹幕占据固定高度的轨道,避免重叠。 // 弹幕轨道高度计算 const t…

vue如何实现到期提醒

vue如何实现到期提醒

实现 Vue 到期提醒功能 使用计算属性计算剩余时间 在 Vue 组件中定义一个计算属性,计算目标日期与当前日期的差值。通过 Date 对象获取时间戳并计算剩余天数或小时数。 computed:…

vue实现查询替换

vue实现查询替换

Vue 实现查询替换功能 在 Vue 中实现查询替换功能,可以通过数据绑定和字符串操作方法结合实现。以下是具体实现方式: 基础实现 <template> <div>…

vue实现多用户登录

vue实现多用户登录

实现多用户登录的基本思路 在Vue中实现多用户登录通常需要结合后端API完成身份验证,并通过前端路由、状态管理(如Vuex或Pinia)和本地存储(如localStorage)来管理用户会话。以下是关…