【Vue】播放flv格式视频(flv.js视频播放器)

 图片来源:HTTP-FLV直播初探  

链接

github地址:GitHub - bilibili/flv.js: HTML5 FLV Player

播放flv格式视频

npm install flv.js --save

封装一个组件flvVideo

<template>
  <div class="video">
    <video ref="videoElement" controls autoplay muted v-if="!error"></video>
    <div class="error" v-else>视频播放错误!</div>
  </div>
</template>

<script>
import flvjs from "flv.js";
export default {
  name: "flvVideo",
  props: ["url", "height", "destroy"], // 视频流路径,播放器高度,是否销毁播放器
  data() {
    return {
      flvPlayer: "",
      error: false,
    };
  },
  mounted() {
    this.$nextTick(() => {
      this.init(this.url)
    });
  },
  methods: {
    init(source) {
      if (flvjs.isSupported()) {

        this.flvPlayer = flvjs.createPlayer(
          {
            type: 'flv',						//flv格式
            isLive: true,					//直播模式
            hasVideo: true,				//视频开启
            url: source,
            // hasAudio: true, 			//音频开启
            enableStashBuffer: false, //设置启用播放缓存,只在直播起作用(降低延迟)。关闭IO隐藏缓冲区
            // enableWorker: true, 	//浏览器端开启flv.js的worker,多进程运行flv.js。不启用分离线程
            // reuseRedirectedURL: true, //重用301/302重定向url,用于随后的请求,如查找、重新连接等。
            // autoCleanupSourceBuffer: true, //自动清除缓存
          }
        );

        this.flvPlayer.attachMediaElement(this.$refs.videoElement);
        this.flvPlayer.load();
        this.flvPlayer.play();

        // 加载完成
        this.flvPlayer.on(flvjs.Events.LOADING_COMPLETE, () => {
          this.error = false;
        });

        // 加载失败
        this.flvPlayer.on(flvjs.Events.ERROR, () => {
          this.error = true;
        },(error) => {
          console.log(error);
        });

      } else {
        this.error = true;
      }
    },
    // 销毁
    detachMediaElement() {
      this.flvPlayer.pause();
      this.flvPlayer.unload();
      this.flvPlayer.detachMediaElement();
      this.flvPlayer.destroy();
      this.flvPlayer = "";
    },
    // 播放
    play () {
      this.flvPlayer.play();
    }
  },
  watch: {
    // 更换流
    url() {
      this.error = false;
      this.flvPlayer == "" ? "" : this.detachMediaElement(); // 切换流之前,判断之前的流是否销毁
      this.init(this.url);
    },

    // 开关值
    destroy() {
      if (this.destroy) {
        this.init(this.url);
      } else {
        this.flvPlayer == "" ? "" : this.detachMediaElement();
      }
    },
  },
  beforeDestroy() {
    this.detachMediaElement();
  },
};
</script>

<style scoped>
.video {
  position: relative;
  height: 100%;
}
video {
  width: 100%;
  height: 100%;
  object-fit: fill;
}
.error {
  position: absolute;
  top: 30%;
  left: 50%;
  margin-left: -120px;
  text-align: center;
  color: #00fdff;
  font-weight: bold;
  font-size: 1.2em;
}

</style>

hasAudio设置为true就不展示。。。不知道为啥~

home.vue

 <flv-video height="240px" :url="url" ></flv-video>
import flvVideo from "@/components/flvVideo"
components: { "flv-video": flvVideo },
data() {
  return {
    url:'https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv'
  }
}

参考:Vue 中使用flv.js视频播放器

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue中下载FLV格式视频,你可以使用以下步骤: 1. 安装flv.jsflv.js是一个JavaScript库,用于在浏览器中播放FLV格式视频。你可以通过npm安装它,使用以下命令: ``` npm install flv.js --save ``` 2. 导入flv.js:在Vue组件中,你需要将flv.js导入到项目中。你可以使用以下代码: ``` import flvjs from 'flv.js' ``` 3. 创建FLV视频播放器:你可以在Vue组件中创建一个FLV视频播放器,使用以下代码: ``` <video ref="videoPlayer" controls></video> ``` 4. 初始化FLV视频播放器:在Vue组件的mounted钩子函数中,你需要初始化FLV视频播放器,使用以下代码: ``` mounted() { if (flvjs.isSupported()) { const videoElement = this.$refs.videoPlayer const flvPlayer = flvjs.createPlayer({ type: 'flv', url: 'your_video_url.flv' }) flvPlayer.attachMediaElement(videoElement) flvPlayer.load() flvPlayer.play() } } ``` 在上面的代码中,你需要将“your_video_url.flv”替换为你要下载的FLV视频的URL。 5. 添加下载按钮:你可以在Vue组件中添加一个下载按钮,使用以下代码: ``` <button @click="downloadVideo">下载视频</button> ``` 6. 实现下载功能:在Vue组件的methods中,你需要实现下载功能,使用以下代码: ``` downloadVideo() { const videoUrl = 'your_video_url.flv' const link = document.createElement('a') link.href = videoUrl link.download = 'video.flv' document.body.appendChild(link) link.click() document.body.removeChild(link) } ``` 在上面的代码中,你需要将“your_video_url.flv”替换为你要下载的FLV视频的URL,并将下载的视频命名为“video.flv”。 这样,你就可以在Vue中下载FLV格式视频了。请注意,下载视频可能涉及版权问题,请确保你有权下载并使用视频
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宾果的救星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值