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

vue项目中播放ws(Websocket协议)视频流

一、海康开放平台H5视频播放器开发包下载
https://open.hikvision.com/download/5c67f1e2f05948198c909700
在这里插入图片描述
在这里插入图片描述

二、vue项目引入
1、解压h5player_2.5.1压缩包,将playctrl3文件夹、h5player.min.js文件赋值到vue项目public文件夹下,并在项目入口文件index.html中引入h5player.min.js文件。
在这里插入图片描述

<script src="js/h5player.min.js"></script>

三、vue页面使用

<template>
    <div id="player" style="width: 100%;height: 100%;"></div>
</template>
<script>
export default {
    data () {
        return {
            player: null
        }
    },
    mounted () {
        // 例如一屏播放4个视频,写法如下
        this.initPlayer(2);
        let arr = ['ws://...', 'ws://...', 'ws://...', 'ws://...'];
        arr.forEach((url, index) => {
            this.realplay(url, index);
        })
    },
    methods: {
        // 初始化
        initPlayer (num = 1) { // 设置分屏:1*1、2*2、3*3、4*4
            this.player = new JSPlugin({
                szId: 'player', // 父窗口id,需要英文字母开头 必填
                szBasePath: "js/", // 必填,与h5player.min.js的引用路径一致
                iMaxSplit: 4, // 分屏播放,默认最大分屏4*4
                openDebug: true,
                mseWorkerEnable: false,//是否开启多线程解码,分辨率大于1080P建议开启,否则可能卡顿
                bSupporDoubleClickFull: true,//是否支持双击全屏,true-双击是全屏;false-双击无响应
                oStyle: {
                    borderSelect: '#343434', // 选中视频的边框颜色,默认选择第一个,颜色为#fc0
                }
            })
            this.player.JS_ArrangeWindow(num).then(
                () => { console.log(`arrangeWindow to ${num}x${num} success`) },
                e => { console.error(e) }
            )
        },
        // 预览
        realplay (playURL = '', index = 0) { // 设置第index(从0开始)个窗口的视频地址
            this.player.JS_SetTraceId(index, true);
            this.player.JS_Play(playURL, { playURL, mode: 0, keepDecoder: 0, token: '' }, index).then(
                () => {
                    console.log('realplay success');
                    this.player.JS_GetTraceId(index).then((id) => { console.log("traceid:", id) })
                },
                e => { console.error(e) }
            )  
        },
    }
}
</script>
<style scoped lang="less">
    /* 由于我的视频没有撑满整个容器,所以加了下面的样式,如果没遇到这种情况可以忽略。*/
    // 设置2*2分屏时
    /deep/#player {
        & > div, & > div > div > video {
            width: 100% !important;
            height: 100% !important;
        }
        & > div > div {
            width: 50% !important;
            height: 50% !important;
        }
    }
    /*
    // 设置1*1分屏时
    /deep/#player {
        & > div,
        & > div > div,
        & > div > div > video {
            width: 100% !important;
            height: 100% !important;
        }
    }
    */
</style>

:由于我的功能比较简单,所以用到的方法不多,有更多需求可以查看压缩包里面doc文件夹下的H5player2.5.1开发指南.html文档进行学习,也可以预览demo文件夹下的demo.html文件并查看源代码进行参考。
在这里插入图片描述
这篇文章介绍了rtsp视频流播放方法,有需要可以看看:
https://blog.csdn.net/Dalin0929/article/details/142856685?spm=1001.2014.3001.5501

相关文章:

  • AI时代的数据底座:火山引擎多模态数据湖的设计与实践
  • 英语不好,可以考取Oracle OCP认证吗?
  • 闭包、装饰器学习笔记(第二次学习)
  • 【老电脑翻新】华硕A456U(换电池+换固态+光驱换机械+重装系统+重装系统后开始菜单失灵问题解决)
  • 高质量思维链(CoT)数据助力Deepseek成为国产大模型之光
  • Maven 中 maven.test.skip 与skipTests 区别
  • 实战 | 基于 SpringBoot + UniApp 打造国际版打车系统:架构设计与性能优化全解析
  • 关于ArcGIS中加载影像数据,符号系统中渲染参数的解析
  • nccl的框架结构图 (来自deepseek)
  • QT学习笔记(进程与多线程)
  • 线程池详解:在SpringBoot中的最佳实践
  • 16个气象数据可视化网站整理分享
  • 安科瑞Acrel-2000ES储能能量管理为储能柜厂家赋能未来能源
  • 甘肃旅游服务平台+论文源码视频演示
  • 应用于汽车车灯电路中的电感产品选型及质量管控标准
  • ssh: connect to host github.com port 22: Connection timed out
  • 金融交易平台该如何选择服务器
  • WHAT - 程序员英语之美式发音学习系列(四)
  • 鸿蒙Flutter实战:20. Flutter集成高德地图,同层渲染
  • 老是忘记package.json,备忘一下 webpack 环境下 Vue Cli 和 Vite 命令行工具对比
  • 西安好的网站建设公司/网站搜索系统
  • p2p 金融网站开发/百度提交网站
  • 法语网站建设/百度收录入口
  • wordpress双语站/如何做宣传推广效果最好
  • 注册软件开发公司需要什么条件/搜索引擎seo外包
  • 建设手机银行官方网站/现在有哪些网址