Vue.js 学习14 集成H265web.js播放器实现webpack自动化构建

这篇具有很好参考价值的文章主要介绍了Vue.js 学习14 集成H265web.js播放器实现webpack自动化构建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

网页集成h265web.js,javascript,vue.js,学习

一、项目说明

1. H265web.js 简介

H265web.js 是一个用于在 Web 浏览器中播放 H.265 视频的 JavaScript 播放器。它支持在浏览器中直接解码 H.265 编码的视频流,提供了高效的视频播放体验。在 Element UI 项目中集成 H265web.js 可以让我们轻松实现 H.265 视频的播放功能。

H265web.js 开源地址:
https://github.com/numberwolf/h265web.js
文档地址:
https://github.com/numberwolf/h265web.js?tab=readme-ov-file

目前vue里集成H265web.js 还有一定的复杂度,本文作以详细介绍。

2. 准备环境

  • 一个 准备好的 element-ui 项目和开发环境
  • 本文基于VUE2.0

二、项目配置

1. 下载 H265web.js

我们采用直接下载 dist 的方式,而不是使用 npm 安装,据说npm对wasm不太友好(我没有实证)。
到官网找到最新版本的 releasae或者接下载整个项目:
网页集成h265web.js,javascript,vue.js,学习
后面需要使用的是 dist/ 目录的内容。
本文参考了官方目录 example_vue2/ 里的实现代码,主要加入了对 npm 自动化构建的支持。

2. 在vue项目里引入 H265web

首先在 vue 项目里新建一个 template 目录,按如下方式组织文件:
网页集成h265web.js,javascript,vue.js,学习
即把 H265web.js 的dist目录,拷到 template/libs/h265web下。

index.html 是构建vue项目时使用的模板文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Your App Title</title>
  <script type="text/javascript" src="static/js/missile.js"></script>
  <script src="static/js/h265webjs-v20221106.js"></script>
</head>
<body>
<div id="app"></div>

</body>
</html>

使用npm命令构建时,默认情况会在目录的 public/ 目录自动生成 index.html 文件。但是我们需要在 index.html 里引入 h265web.js 的文件,构建后再去添加引用就有些繁琐,所以自定义了此模板页方便构建。

3. 设置 vue.config.js

本步骤的目的是在 npm 构建时,自动将 h265 的库文件拷贝到构建的目标目录 。
这里重点是使用了 copy-webpack-plugin 和 html-webpack-plugin 两个构建的插件。
vue.config.js 设置

// 这一句定义在 module.exports 之前
const CopyWebpackPlugin = require('copy-webpack-plugin')
// 定义模板页位置
const HtmlWebpackPlugin = require('html-webpack-plugin')
// 在 module.exports ,加入
module.exports = {
  configureWebpack: {
    // provide the app's title in webpack's name field, so that
    // it can be accessed in index.html to inject the correct title.
    name: name,
    resolve: {
      alias: {
        '@': resolve('src')
      }
    },
    plugins: [
      new HtmlWebpackPlugin({
        template: 'template/index.html'
      }),
      new CopyWebpackPlugin([
        {
          from: 'template/libs/h265web',
          to: './static/js/'
        }
      ])
    ]
  }
}

这样在执行 npm run devnpm run build:prod时, h265web的库文件会拷到目标的 static/js 目录下。

执行构建命令的效果如下:
网页集成h265web.js,javascript,vue.js,学习

三、代码引用

1. 参照官方demo , 创建 executor.js

路径可按自己需要放置,我这里放到了src/utils下:
网页集成h265web.js,javascript,vue.js,学习
内容:

const PRESET_CONFIG = {
  player: 'glplayer',
  width: 960,
  height: 540,
  token: 'base64:QXV0aG9yOmNoYW5neWFubG9uZ3xudW1iZXJ3b2xmLEdpdGh1YjpodHRwczovL2dpdGh1Yi5jb20vbnVtYmVyd29sZixFbWFpbDpwb3JzY2hlZ3QyM0Bmb3htYWlsLmNvbSxRUTo1MzEzNjU4NzIsSG9tZVBhZ2U6aHR0cDovL3h2aWRlby52aWRlbyxEaXNjb3JkOm51bWJlcndvbGYjODY5NCx3ZWNoYXI6bnVtYmVyd29sZjExLEJlaWppbmcsV29ya0luOkJhaWR1',
  extInfo: {
    moovStartFlag: true,
    coreProbePart: 0.1,
    ignoreAudio: 0,
    autoPlay: true,
    core: 1
  }
}

// FYI. the Player class is a wrapper container provide the init and destory methods.
// you should destory the player instance at the page unshift time.
// By the way if you want to impl a progress bar you should view the normal_example.
// It's a  full example. This demo only provide a minimalist case.
// Why use class? Convenient der is enough :)
// Should I registry the instnace at a microTask? Of course.
// Pay attention to index.html. vite boy. Don't forget import the static source code :)

export class Player {
  #config = {};
  instance;
  constructor(opt = {}) {
    const { presetConfig = PRESET_CONFIG } = opt
    if (presetConfig) Object.assign(this.#config, presetConfig)
  }

  init(url) {
    this.instance = window.new265webjs(url, this.#config)
  }
}

2. 在 vue 页面里引用

html 模板

              <!-- video player content -->
              <div class="player-container">
                <div id="glplayer" class="glplayer"></div>
              </div>

js

这里是用在 dialog 里的, 在watch 的 $nextTick() 中来创建播放器, 可视需要在其它事件中使用。

import { Player } from '@/utils/executor'

watch: {
    show() {
      const that = this
      this.mrl = this.mediaObject.flv
      if (that.visible) {
        this.$nextTick(() => {
          console.info(TAG, '初始化播放器', this.show)
          const player = new Player()
          player.init(this.mrl)
          that.instance = player.instance

          player.instance.onLoadFinish = () => {
            const mediaInfo = player.instance.mediaInfo()
            console.log(TAG, 'onLoadFinish', mediaInfo)
          }
          player.instance.onPlayFinish = () => {
            console.log(TAG, 'onPlayFinish')
          }
          player.instance.do()
        })
      }
    }
  },

其它地方使用,调用 player.instance 相关的方法即可。
运行效果:
网页集成h265web.js,javascript,vue.js,学习文章来源地址https://www.toymoban.com/news/detail-839888.html

到了这里,关于Vue.js 学习14 集成H265web.js播放器实现webpack自动化构建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【VideoJs】初识videojs && video.js 视频播放器的基本使用 && videojs基础用法 && videojs视频播放器 && vue3中使用videojs

    免费,开源 插件多 可自定义 【推】 虽然,但是Videojs算好了,但我觉得有点杂,特别是文档与插件,且自定义插件有点困难,也可能是我比较菜吧 相比之下,我还是强烈推荐 【Xgplayer ——点我进入】 备用地址 http://t.csdn.cn/H0cAV Xgplayer 优点 优雅、美观 文档清晰明了 大厂出

    2024年02月03日
    浏览(63)
  • 浏览器不需要安装插件,前端播放在线视频方案,几款播放器介绍,hls协议下的h.265视频播放方案推荐

    一般我们播放本地视频都是使用 video标签,但是 video 元素只支持三种视频格式:MP4、WebM、Ogg ,对于在线视频直接使用video是没法播放的,这里介绍几款这两天我在做播放在线监控视频功能时使用过的几款播放器,初次接触流媒体踩了一堆坑,到目前为止对这部分内容都还了

    2024年02月08日
    浏览(53)
  • 挑选几款开源的、优秀的H.265网页播放器,进行特征整理及使用评价

    H265和H264都是视频编码规范,H265是新一代视频编码规范,与H264相比压缩比更高,同样的码率下视频质量更高,或者说同样质量的视频占用的带宽和存储更少。之前由于终端支持有限,h265的推广使用一直较为缓慢,最近随着越来越多的设备终端开始支持H265,H265的使用范围在迅

    2024年02月04日
    浏览(46)
  • vue项目中视频实时播放时播放器遇到的问题和解决过程 flv.js - EasyPlayer - LivePlayer

    需要画面监控设备实时播放,支持HTTP-FLV直播流,支持其他流后续可能会更换 需要类似于安防监控多个视频实时画面同步 播放器可控制度强,完全由我们来控制播放暂停进行拉流断流 项目使用的是的vue3+ts 原本使用的video.js 但是不支持HTTP-FLV播放,改用flv.js 引入flv.js 开发问

    2024年02月01日
    浏览(49)
  • vue项目中视频实时播放时 播放器遇到的问题和解决过程 flv.js - EasyPlayer - LivePlayer

    需要画面监控设备实时播放,支持HTTP-FLV直播流,支持其他流后续可能会更换 需要类似于安防监控多个视频实时画面同步 播放器可控制度强,完全由我们来控制播放暂停进行拉流断流 项目使用的是的vue3+ts 原本使用的video.js 但是不支持HTTP-FLV播放,改用flv.js 引入flv.js 开发问

    2024年01月24日
    浏览(49)
  • springboot + vue3实现视频播放Demo(video.js & Vue3-video-play视频播放器)

    ffmpeg官网 长时长视频java存储及vue播放解决方法 【 攻城略地 】vue3 + video.js播放m3u8视频流格式 Vue3-video-play组件官网 Vue3视频播放器组件Vue3-video-play入门教程 vue-video-player播放m3u8格式的视频 Spring boot视频播放(解决MP4大文件无法播放),整合ffmpeg,用m3u8切片播放。 Java获取MP4视频文

    2024年02月07日
    浏览(75)
  • webrtc视频播放器(ZLMRTCClient.js)

    在播放实时视频时,视频播放器一般会有延迟,此时,就可以使用webrtc来拉流,延迟在1s或者基本没有延迟。与zlm配套的rtc js客户端.(国标) ZLMRTCClient.js: 与zlm配套的rtc js客户端 ZLMRTCClient.js: 与zlm配套的rtc js客户端 https://gitee.com/xiongguangjie/zlmrtcclient.js 按照 下图执行命令行,则自

    2024年02月11日
    浏览(51)
  • webrtc视频播放器(srs.sdk.js)

    在vue中使用,需要将js方法中的函数通过 export default{}的方式暴露出来。 下面是通过srs.sdk.js文件中的SrsRtcPlayerAsync方法进行拉流; 还有一种方法,可以在index.html中通过script引入jswebrtc.min.js文件,调用方法直接使用 (1)封装组件 (2)使用 (1)封装 (2)使用

    2024年02月09日
    浏览(54)
  • SkeyeWebPlayer.js H5播放器使用文档说明

    SkeyeWebPlayer.js H5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)视频直播与视频点播等多种协议, 支持H.264、H.265、AAC等多种音视频编码格式,支持mse、wasm等多种解码方式,支持Windows、Android、iOS全平台终端的H5播放器。 功能说明 支持 m3u8/HLS 播放; 支持 HTTP-FLV/WS-FLV 播放

    2023年04月08日
    浏览(33)
  • 展厅中控视频播放器,支持网络、串口、语音、web、键盘控制

    一、控制代码 网盘:https://pan.baidu.com/s/1Jthrn4HXcRarXxCH8P7X9Q 提取码:1234 1、udp、tcp、串口控制协议、强大的指令集,可满足展厅对于播控的需要 2、语音识别控制 播放器也支持语音控制,例如说出暂停、播放、影片名称等等。识别到会进行切换相应响应。 3、web控制 播放器同时

    2024年02月12日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包