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.js设计与实现无限递归学习总结

    Vue.js设计与实现无限递归学习总结

    这篇文章主要为大家介绍了Vue.js设计与实现无限递归学习总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 详解利用eventemitter2实现Vue组件通信

    详解利用eventemitter2实现Vue组件通信

    这篇文章主要介绍了详解利用eventemitter2实现Vue组件通信,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • uniapp使用scroll-view下拉刷新无法取消的坑及解决

    uniapp使用scroll-view下拉刷新无法取消的坑及解决

    这篇文章主要介绍了uniapp使用scroll-view下拉刷新无法取消的坑及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • vue3 使用socket的完整代码

    vue3 使用socket的完整代码

    这篇文章主要介绍了vue3 使用socket的完整代码,包括vue3客户端和服务端的实例讲解,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Vue如何处理Axios多次请求数据显示问题

    Vue如何处理Axios多次请求数据显示问题

    这篇文章主要介绍了Vue如何处理Axios多次请求数据显示问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 详解vue过度效果与动画transition使用示例

    详解vue过度效果与动画transition使用示例

    Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果,Vue 提供了内置的过渡封装组件transition,该组件用于包裹要实现过渡效果的组件
    2021-10-10
  • Vue基础之MVVM,模板语法和数据绑定

    Vue基础之MVVM,模板语法和数据绑定

    这篇文章主要为大家介绍了Vue之MVVM,模板语法和数据绑定,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 在vite项目中使用@进行文件的引入方式

    在vite项目中使用@进行文件的引入方式

    这篇文章主要介绍了在vite项目中使用@进行文件的引入方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 关于Vue新搭档TypeScript快速入门实践

    关于Vue新搭档TypeScript快速入门实践

    这篇文章主要介绍了关于Vue新搭档TypeScript快速入门实践,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Vue.js中安装一个路由器demo

    Vue.js中安装一个路由器demo

    这篇文章主要为大家介绍了Vue.js中安装一个路由器demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论