前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Electron播放rtmp直播流

Electron播放rtmp直播流

作者头像
治电小白菜
发布2022-09-21 08:24:58
4.9K0
发布2022-09-21 08:24:58
举报
文章被收录于专栏:技术综合技术综合

方法一 直接转flv吧

方法二 使用flash

示例代码

如果直接前端放rtmp直播流, 则需要有flash, 而Chrome已经不再支持flash了, 所以得借助flash插件

1659969197107.png

从Electron最新文档可以看到, 最新版Electron不再支持flash插件了, 所以得从修改日志里, 看看最后支持的是那个版本的Electron

image.png

可以看到是Electron12, 所以直接安Electron11即可

步骤

1. 搭环境

使用 vue-cli5 + vue-cli-plugin-electron-builder搭建, 具体看插件文档

播放器使用vue-video-player组件和videojs-flash插件

注意:vue-video-player组件和videojs-flash插件都用到了video.js库, 但是直接安装会导致两个版本冲突(报错ERROR: The "flash" tech is undefined. Skipped browser support check for that tech.), 所以需要对两个库的video.js的依赖进行版本统一 package.json 文件里的resolutions 字段用于解析选择性版本,可以通过此功能自定义依赖版本

代码语言:javascript
复制
 "resolutions": {
    "video.js": "^7.10.0"
  },

参考资料: https://github.com/surmon-china/vue-video-player/issues/221

2. 引入flash插件

方法也可以在网上找老版本的Electron文档

① 先是搞到flash插件文件, 我的示例里有, 或者去flash网站下PPAPI版的, 然后在安装的目录下找到对应的dll文件即可

image.png

② 然后在主进程引入插件

要注意开发环境和打包环境的路径是不一样的, 所以需要在vue.config.js中配置把插件文件打包到安装目录

代码语言:javascript
复制
 extraResources: {
  from: 'libs/',
  to: './',
},

然后再引用的时候要进行判断, 如果有64和32位的dll, 也可以判断下

代码语言:javascript
复制
const path = require('path')
  let dllName = 'pepflashplayer64_29_0_0_238.dll'
  if (process.arch === 'ia32') {
    dllName = 'pepflashplayer32_29_0_0_238.dll'
  }

  let libPath = path.resolve(`libs/flash/${dllName}`)
  if (process.env.NODE_ENV !== 'development') {
    libPath = path.resolve(`resources/flash/${dllName}`)
  }
  app.commandLine.appendSwitch('ppapi-flash-path', libPath)
3. 配置播放器

可以通过navigator.plugins来看flash插件有没有引入成功

image.png

然后引入组件, 配置直播流即可

代码语言:javascript
复制
<template>
  <div class="container">
    <video-player
      class="video-player"
      ref="videoPlayer"
      :options="options"
      :playsinline="true"
    ></video-player>
  </div>
</template>
<script>
import 'video.js/dist/video-js.css'
import { videoPlayer } from 'vue-video-player'
import 'videojs-flash'
export default {
  name: 'App',
  components: {
    videoPlayer,
  },
  data() {
    return {
      options: {
        autoplay: true,
        controls: false,
        preload: 'none',
        muted: false,
        // aspectRatio: '16:9',
        language: 'zh-CN',
        sources: [{
          type: 'rtmp/mp4',
          src: 'rtmp://127.0.0.1/live/test',
        }],
        techOrder: ['flash', 'html5'],
        poster: '',
        notSupportedMessage: '服务错误', //允许覆盖Video.js无法播放媒体源时显示的默认信息。
      },
      isMini: false,
    }
  },
}
</script>
<style>
html,
body {
  margin: 0;
  width: 100%;
  height: 100%;
  background: transparent;
}
body {
  -webkit-app-region: drag;
}
.container {
  background: transparent;
}
.container,
.video-player,
.video-js {
  width: 100%;
  height:100%;
}
</style>
4. 缺点

① 可能今天用正常, 明天就提示版本过低

53e080061ff004ec558e43f80abd24d.jpg

② 使用最新版本还会提示异常

image.png

③ 打包后 页面必须得通过服务开启, 不能用file:方式

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法一 直接转flv吧
  • 方法二 使用flash
    • 步骤
      • 1. 搭环境
      • 2. 引入flash插件
      • 3. 配置播放器
      • 4. 缺点
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档