vue3使用flv.js播放flv直播流的代码示例

 更新时间:2025年05月12日 08:30:44   作者:一方_self  
这篇文章主要介绍了vue3使用flv.js播放flv直播流的相关资料,详细描述了安装flv.js和编写HTML、JavaScript代码的过程,包括在页面关闭时销毁播放器的操作,需要的朋友可以参考下

目前有个需求是:管理直播机有一个列表需要查看每个直播机的实时内容,所以需要在后台加这个功能。

效果:我用ffmpeg模拟推流:

如何用ffmpeg模拟推流请看我上一篇文章

网页:

如上是可以正确再网页端拉流,这个功能费了一天的时间,在这里免费分享出来。

首先安装flv.js(用npm的话我遇到过报错):

pnpm i flv.js

页面核心代码:

html:

<video ref="videoElementRef" controls autoplay muted
                  style="width: 400px; height: 300px; object-fit: fill"></video>

js:

import { computed, ref, nextTick, watch } from 'vue';
const formValue = ref(newState(null));
const flvPlayer = ref<flvjs.Player | null>(null);
const videoElementRef = ref<HTMLVideoElement | null>(null);  // 明确类型
const createVideo = async () => {
  if (flvjs.isSupported()) {
    if (!videoElementRef.value) {
      console.warn('videoElementRef.value is null, retrying...');
      return; // 如果 video 元素还未准备好,则直接返回
    }
    console.log('videoElement', videoElementRef.value);
    flvPlayer.value = flvjs.createPlayer({
      type: 'flv', // 只支持flv和mp4
      url: 'http://live.xxx.com/xxx/2.flv', //你的url地址
      isLive: true,
      hasAudio: true,
    });
    console.log('flvPlayer.value', flvPlayer.value);
    flvPlayer.value.attachMediaElement(videoElementRef.value);
    flvPlayer.value.load();
    flvPlayer.value.play();
    //处理视频播放错误的语法
    flvPlayer.value.on('error', () => {
      message.error(`视频加载失败,请稍候重试!`);
      return false;
    });
  }
};
// 监听 formValue 的变化,当数据加载完成后初始化视频
watch(
  () => formValue.value,
  (newFormValue) => {
    if (newFormValue && showModal.value) {
      nextTick(() => {
        createVideo();
      });
    }
  },
  { deep: true, immediate: false } // 深度监听,并且初始不执行
);
​

页面关闭时销毁flvPlayer:

//销毁播放器

  if (flvPlayer.value) {
    flvPlayer.value.pause();
    flvPlayer.value.unload();
    flvPlayer.value.detachMediaElement();
    flvPlayer.value.destroy();
    flvPlayer.value = null;
  }

总结 

到此这篇关于vue3使用flv.js播放flv直播流的文章就介绍到这了,更多相关vue3 flv.js播放flv直播流内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在vue项目中 实现定义全局变量 全局函数操作

    在vue项目中 实现定义全局变量 全局函数操作

    这篇文章主要介绍了在vue项目中 实现定义全局变量 全局函数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • vue elementui 动态追加下拉框、输入框功能

    vue elementui 动态追加下拉框、输入框功能

    这篇文章主要介绍了vue elementui 动态追加下拉框、输入框功能,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-04-04
  • element table数据量太大导致网页卡死崩溃的解决办法

    element table数据量太大导致网页卡死崩溃的解决办法

    当页面数据过多,前端渲染大量的DOM时,会造成页面卡死问题,下面这篇文章主要给大家介绍了关于element table数据量太大导致网页卡死崩溃的解决办法,需要的朋友可以参考下
    2023-02-02
  • Vue浅析axios二次封装与节流及防抖的实现

    Vue浅析axios二次封装与节流及防抖的实现

    axios是基于promise的HTTP库,可以使用在浏览器和node.js中,它不是vue的第三方插件,vue-axios是axios集成到Vue.js的小包装器,可以像插件一样安装使用:Vue.use(VueAxios, axios),本文给大家介绍axios的二次封装和节流与防抖
    2022-08-08
  • vue组件props不同数据类型传参的默认值问题

    vue组件props不同数据类型传参的默认值问题

    这篇文章主要介绍了vue组件props不同数据类型传参的默认值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • vue2.0 如何在hash模式下实现微信分享

    vue2.0 如何在hash模式下实现微信分享

    这篇文章主要介绍了vue2.0 如何在hash模式下实现微信分享,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • vue中定时器setInterval的使用及说明

    vue中定时器setInterval的使用及说明

    这篇文章主要介绍了vue中定时器setInterval的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Vue指令之v-for的使用说明

    Vue指令之v-for的使用说明

    这篇文章主要介绍了Vue指令之v-for的使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue和Flask通信的实现

    Vue和Flask通信的实现

    最近新做了个项目,前端使用的是目前很流行的前端框架,对于后端,本项目选择的是比较好上手、轻量级的python后台框架:Flask。感兴趣的可以了解一下
    2021-05-05
  • 深入理解Vue响应式原理及其实现方式

    深入理解Vue响应式原理及其实现方式

    Vue的响应式原理是Vue最核心的特性之一,也是Vue能够为开发者提供高效便捷的开发体验的重要原因之一,这篇文章主要介绍了响应式的原理及其实现方式,需要详细了解可以参考下文
    2023-05-05

最新评论