当前位置: 首页 > article >正文

vue video播放m3u8监控视频

很关键的问题 vite创建的项目不需要import ‘videojs-contrib-hls’ 导入就报错

直接添加如下代码即可

  html5: {
          vhs: {
            overrideNative: true
          },
          nativeVideoTracks: false,
          nativeAudioTracks: false,
          nativeTextTracks: false
        }

下面是完整组件示例 

<template>
  <div>
    <video
      style="border-radius: 8px; margin: 0 auto; overflow: hidden"
      id="my-video"
      class="video-js vjs-default-skin"
      controls
      autoplay
      muted
      preload="auto"
      width="300"
      ref="videoPlayer"
    ></video>
  </div>
</template>

<script setup>
  import { ref, onMounted, onBeforeUnmount, watch } from 'vue';
  import videojs from 'video.js';
  import 'video.js/dist/video-js.css';

  const props = defineProps({
    srcUrl: {
      type: String,
      required: true
    }
  });

  const videoPlayer = ref(null);
  let player = null;

  const getVideo = () => {
    console.log('11111111');
    player = videojs(
      videoPlayer.value,
      {
        bigPlayButton: true,
        textTrackDisplay: false,
        posterImage: false,
        errorDisplay: false,
        controlBar: true,
        html5: {
          vhs: {
            overrideNative: true
          },
          nativeVideoTracks: false,
          nativeAudioTracks: false,
          nativeTextTracks: false
        }
      },
      function onPlayerReady() {
        console.log('视频加载成功');
        this.src({ type: 'application/x-mpegURL', src: props.srcUrl });
        this.play();
      }
    );
  };

  onMounted(() => {
    getVideo();
  });

  watch(
    () => props.srcUrl,
    (newSrcUrl) => {
      if (player) {
        player.src({ type: 'application/x-mpegURL', src: newSrcUrl });
        player.play();
      }
    }
  );

  onBeforeUnmount(() => {
    if (player) {
      player.dispose();
    }
  });
</script>

<style scoped>
  video {
    border-radius: 8px;
    margin-bottom: 24px;
  }
</style>

 


http://www.kler.cn/news/355432.html

相关文章:

  • 车载实操:一对一实操学习、CANoe实操学习、推荐就业机会、就业技术支持、协助面试辅导
  • Vue Element Form组件v-for循环里的表单验证
  • 物联网智能家居环境监测系统
  • context.getExternalFilesDir()与返回的路径对照 Android 存储路径
  • 代码随想录算法训练营第二天(补) | 滑动窗口、模拟、前缀和
  • 15分钟学Go 第5天:数据类型
  • OQE-OPTICAL AND QUANTUM ELECTRONICS
  • Ansible自动化工具
  • 通信工程学习:什么是TCP/IP(传输控制协议/互联网议)
  • 华硕飞行堡垒FX53VD键盘全部失灵【除电源键】
  • 深兰科技|“武汉市AI心理热线医工交叉研发合作基地”正式揭牌
  • 【openwrt-21.02】Openwrt NAT配置举例
  • 使用Git进行版本控制
  • 如何利用RFID技术提升应急物资管理效率?
  • Reactor 与 Proactor 模式概述
  • 动态规划一>下降路径最小和
  • TDengine 与北微传感达成合作,解决传统数据库性能瓶颈
  • JVM进阶调优系列(4)年轻代和老年代采用什么GC算法回收?
  • Dubbo 序列化方式
  • 19.面试算法-树的深度优先遍(一)