electron 学习之 开始视频加载

本文探讨了在Vue项目打包成Electron应用后,本地视频无法加载的问题。作者指出,由于Electron不提供web服务器,导致调试时正常,打包后视频加载失败。解决方案包括设置Web服务器或使用Blob资源加载。作者选择了Blob方式,通过读取本地视频文件,转换为Blob对象,再生成URL供video标签使用,成功解决了问题。
摘要由CSDN通过智能技术生成

最开始的做法

<template>
  <div id="app">
    <video v-if="!isStart" id="video" width="800" height="600" autoplay>
      <source src="/video/logo.mp4" type="video/mp4">
      您的浏览器不支持Video标签。
    </video>
    <div id="content" v-if="isStart">
      <div class="header" v-if="!isLoginPage">
        <heads></heads>
        <navs></navs>
      </div>
      <router-view/>
      <foot class="foot"></foot>
    </div>
  </div>
</template>

  created () {
    console.log(this.isLoginPage, this.isStart)

    let timehander: any = setTimeout(() => {
      this.isStart = true
      clearTimeout(timehander)
      timehander = null
    }, 4500)
  }

这种做法的问题是,调试时运行正常,但是打包后就一直加载不了视频内容,用第三方服务提供的视频时可以正常加载的
原因是,调试时 vue时有vue-server 提供的,可以调用所有的静态资源,但是打包后,electron 并不提供web服务器,只能加载简单的网页图片等资源
所以,解决方法有两种 1.增加web服务器;2.采用bolb 资源加载
本人采用第二种方案

<template>
  <div id="app">
    <video v-if="!isStart" id="video" width="800" height="600" autoplay>
      <source :src="videoSrc" type="video/mp4" />
      您的浏览器不支持Video标签。
    </video>
    <div id="content" v-if="isStart">
      <div class="header" v-if="!isLoginPage">
        <heads></heads>
        <navs></navs>
      </div>
      <router-view />
      <foot class="foot"></foot>
    </div>
  </div>
</template>
export default class App extends Vue {
  private videoSrc = "";
  private readonly localSrc = path.join(__static, "./video/logo.mp4");
  private isStart = process.env.NODE_ENV !== "production";
    created() {
    console.log(this.isLoginPage, this.isStart);

    let timehander: any = setTimeout(() => {
      this.isStart = true;
      clearTimeout(timehander);
      timehander = null;
    }, 4500);
  }

  mounted() {
    const buf = fs.readFileSync(this.localSrc); //读取文件,并将缓存区进行转换
    const uint8Buffer = Uint8Array.from(buf);
    const bolb = new Blob([uint8Buffer]); //转为一个新的Blob文件流
    this.videoSrc = window.URL.createObjectURL(bolb); //转换为url地址并直接给到audio
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值