Jessibuca 插件播放直播流视频
jessibuca官网:http://jessibuca.monibuca.com/player.html
git地址:https://gitee.com/huangz2350_admin/jessibuca#https://gitee.com/link?target=http%3A%2F%2Fjessibuca.monibuca.com%2F
项目需要的文件
1.播放组件
<template ><div id="jessibuca" style="width: auto; height: auto; position: relative" @mouseover="showbtn"><div :id="'container' + index" ref="container" :style="'position: relative;width: 100%; height:' +height +'; background:url(' + background +') no-repeat;background-size: 100% 100%;background-color: #000;'" @dblclick="fullscreenSwich"><div :id="'buttonsBox' + index" class="buttons-box" style="position: absolute; left: 0; bottom: 0"><div class="buttons-box-left"><i v-if="!playing" class="iconfont icon-play jessibuca-btn" @click="playBtnClick" /><i v-if="playing" class="iconfont icon-pause jessibuca-btn" @click="pause" /><i class="iconfont icon-stop jessibuca-btn" @click="destroy" /><i v-if="isNotMute" class="iconfont icon-audio-high jessibuca-btn" @click="jessibuca.mute()" /><i v-if="!isNotMute" class="iconfont icon-audio-mute jessibuca-btn" @click="jessibuca.cancelMute()" /></div><div class="buttons-box-right"><span class="jessibuca-btn">{{ kBps }} kb/s</span><!-- <i class="iconfont icon-file-record1 jessibuca-btn"></i>--><!-- <i class="iconfont icon-xiangqing2 jessibuca-btn" ></i>--><i class="iconfont icon-camera1196054easyiconnet jessibuca-btn"@click="jessibuca.screenshot('截图', 'png', 0.5)" /><i class="iconfont icon-shuaxin11 jessibuca-btn" @click="playBtnClick" /><i v-if="!fullscreen" class="iconfont icon-weibiaoti10 jessibuca-btn" @click="fullscreenSwich" /><i v-if="fullscreen" class="iconfont icon-weibiaoti11 jessibuca-btn" @click="fullscreenSwich" /></div></div></div><div v-if="!playing && !autoplay" class="btn-image" :style="'height:' + height"><div class="btn-image-center" @click="playBtnClick" :style="'width:' +btnimageW +';height: ' +btnimageH +';background:url(' +btnimage +') no-repeat;background-size: 100% 100%;'"></div></div></div>
</template><script>
/* eslint-disable no-underscore-dangle */
export default {name: 'Jessibuca',props: {index: {//indextype: Number,default: 0,},videoUrl: {//播放地址type: String,default: '',},error: {//报错信息type: Function,default: null,},hasAudio: {//静音type: Boolean,default: false,},height: {//播放器高度type: String,default: '500px',},isFullResize: {//播放面即是否填充满容器type: Boolean,default: true,},autoplay: {//是否自动播放type: Boolean,default: false,},background: {//封面图type: String,default: '',},btnimage: {//播放器按钮图片type: String,default: 'data:image/png;base64,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',},btnimageH: {//播放器按钮图片高度type: String,default: '60px',},btnimageW: {//播放器按钮图片宽度type: String,default: '60px',},},data() {return {jessibuca: null,playing: false,isNotMute: false,quieting: false,fullscreen: false,loaded: false, // mutespeed: 0,performance: '', // 工作情况kBps: 0,btnDom: null,videoInfo: null,volume: 1,rotate: 0,vod: true, // 点播forceNoOffscreen: false,}},watch: {videoUrl: {handler(newData, oldData) {if (!this.autoplay && !oldData) returnthis.play(newData)},},},mounted() {window.onerror = (msg) => {// console.error(msg)}const paramUrl = decodeURIComponent(this.$route.params.url)this.$nextTick(() => {if (typeof this.videoUrl === 'undefined') {this.videoUrl = paramUrl}this.btnDom = document.getElementById('buttonsBox' + this.index)console.log(`初始化时的地址为: ${this.videoUrl}`)this.autoplay ? this.play(this.videoUrl) : ''})},destroyed() {if (this.jessibuca) {this.jessibuca.destroy()}this.playing = false// this.loaded = falsethis.performance = ''},methods: {create() {const options = {}console.log(this.$refs.container)console.log(`hasAudio ${this.hasAudio}`)this.jessibuca = new window.Jessibuca(Object.assign({container: this.$refs.container,videoBuffer: 0.5, // 最大缓冲时长,单位秒isResize: true,isFlv: true,decoder: '/js/jessibuca/index.js',// text: "WVP-PRO",// background: "bg.jpg",loadingText: '加载中',hasAudio:typeof this.hasAudio === 'undefined' ? true : this.hasAudio,debug: false,supportDblclickFullscreen: false, // 是否支持屏幕的双击事件,触发全屏,取消全屏事件。operateBtns: {fullscreen: false,screenshot: false,play: false,audio: false,},record: 'record',isFullResize: this.isFullResize || false,vod: this.vod,forceNoOffscreen: this.forceNoOffscreen,isNotMute: this.isNotMute,},options))// eslint-disable-next-line no-underscore-dangleconst _this = thisthis.jessibuca.on('load', () => {console.log('on load init')})this.jessibuca.on('log', (msg) => {console.log('on log', msg)})this.jessibuca.on('record', (msg) => {console.log('on record:', msg)})this.jessibuca.on('pause', () => {_this.playing = false})this.jessibuca.on('play', () => {_this.playing = true})this.jessibuca.on('fullscreen', (msg) => {console.log('on fullscreen', msg)_this.fullscreen = msg})this.jessibuca.on('mute', (msg) => {console.log('on mute', msg)_this.isNotMute = !msg})this.jessibuca.on('audioInfo', (msg) => {// console.log("audioInfo", msg);})this.jessibuca.on('videoInfo', function (msg) {this.videoInfo = msg// console.log("videoInfo", msg);})this.jessibuca.on('bps', (bps) => {// console.log('bps', bps);})// eslint-disable-next-line no-unused-varslet _ts = 0this.jessibuca.on('timeUpdate', (ts) => {// console.log('timeUpdate,old,new,timestamp', _ts, ts, ts - _ts);_ts = ts})this.jessibuca.on('videoInfo', (info) => {console.log('videoInfo', info)})this.jessibuca.on('error', (error) => {console.log('error', error)})this.jessibuca.on('timeout', () => {console.log('timeout')})this.jessibuca.on('start', () => {console.log('start')})this.jessibuca.on('performance', (performance) => {let show = '卡顿'if (performance === 2) {show = '非常流畅'} else if (performance === 1) {show = '流畅'}_this.performance = show})this.jessibuca.on('buffer', (buffer) => {// console.log('buffer', buffer);})this.jessibuca.on('stats', (stats) => {// console.log('stats', stats);})this.jessibuca.on('kBps', (kBps) => {_this.kBps = Math.round(kBps)})// 显示时间戳 PTSthis.jessibuca.on('videoFrame', () => { })//this.jessibuca.on('metadata', () => { })},playBtnClick(event) {this.play(this.videoUrl)},play(url) {if (!url || url.length == 0) {this.$message.warning('当前摄像头出错,请稍后重试')this.pause()return}if (this.jessibuca) {this.destroy()}this.create()this.jessibuca.on('play', () => {this.playing = true// this.loaded = true// this.quieting = this.jessibuca.quieting})if (this.jessibuca.hasLoaded()) {this.jessibuca.play(url)} else {this.jessibuca.on('load', () => {console.log('load 播放')this.jessibuca.play(url)})}},pause() {if (this.jessibuca) {this.jessibuca.pause()}this.playing = falsethis.err = ''this.performance = ''},destroy() {if (this.jessibuca) {this.jessibuca.destroy()}if (document.getElementById('buttonsBox' + this.index) == null) {document.getElementById('container' + this.index).appendChild(this.btnDom)}this.jessibuca = nullthis.playing = falsethis.err = ''this.performance = ''},showbtn() {if (document.getElementById('buttonsBox' + this.index) == null) {document.getElementById('container' + this.index).appendChild(this.btnDom)}},eventcallbacK(type, message) {// console.log("player 事件回调")// console.log(type)// console.log(message)},fullscreenSwich() {const isFull = this.isFullscreen()this.jessibuca.setFullscreen(!isFull)this.fullscreen = !isFull},isFullscreen() {return (document.fullscreenElement ||document.msFullscreenElement ||document.mozFullScreenElement ||document.webkitFullscreenElement ||false)},},
}
</script><style>
@font-face {font-family: 'iconfont';/* Project id 1291092 */src: url('iconfont.woff2') format('woff2');
}.iconfont {font-family: 'iconfont' !important;font-size: 16px;font-style: normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}.icon-play:before {content: '\e603';
}.icon-pause:before {content: '\e6c6';
}.icon-stop:before {content: '\e6a8';
}.icon-audio-high:before {content: '\e793';
}.icon-audio-mute:before {content: '\e792';
}.icon-shuaxin11:before {content: '\e720';
}.icon-weibiaoti10:before {content: '\e78f';
}.icon-weibiaoti11:before {content: '\e790';
}.icon-camera1196054easyiconnet:before {content: '\e791';
}.buttons-box {width: 100%;height: 0px;transition: 0.4s;background-color: rgba(43, 51, 63, 0.7);display: -webkit-box;display: -ms-flexbox;display: flex;user-select: none;z-index: 100;display: flex;align-items: center;overflow: hidden;
}#jessibuca:hover .buttons-box {height: 40px;
}.buttons-box-left {display: flex;flex: 1;align-items: center;
}.jessibuca-btn {color: rgb(255, 255, 255);line-height: 27px;margin: 0px 5px;padding: 0px 2px;cursor: pointer;text-align: center;font-size: 20px !important;
}.buttons-box-right {height: 100%;position: absolute;right: 0;display: flex;flex: 1;align-items: center;font-size: 20px;
}.btn-image {width: 100%;/* height: 100%; */position: absolute;left: 0;top: 0;z-index: 99 !important;
}.btn-image-center {position: absolute;left: 0;right: 0;bottom: 0;top: 0;margin: auto;
}
</style>
.jessibuca-btn 设置播放控件的间距
decoder: '/js/jessibuca/index.js',地址是服务静态文件的相对地址src: url('iconfont.woff2') format('woff2'); 相对地址 iconfont.woff2需要和组件放在同一目录下
2.父组件引用
<template><div class="app-container"><player video-url="视频地址" :has-audio="false" height="200px" :isFullResize="false" :autoplay="true":index="getIndex" /></div>
</template>
<script>
import player from '@/components/jessibuca/index.vue' // h265播放器export default {name: 'video',components: {player,},data() {return {}},computed: {// 获取时间戳getIndex() {let time = new Date().getTime()return time},},
}
</script>
3.index.html 需要引入静态js文件
<script src="./public/js/jessibuca/index.js"></script>
相关文章:

Jessibuca 插件播放直播流视频
jessibuca官网:http://jessibuca.monibuca.com/player.html git地址:https://gitee.com/huangz2350_admin/jessibuca#https://gitee.com/link?targethttp%3A%2F%2Fjessibuca.monibuca.com%2F 项目需要的文件 1.播放组件 <template ><div i…...

【Docker】03 容器操作
文章目录 一、流转图二、基本操作2.1 查看本地容器进程2.2 启动容器2.2.1 交互式启动容器2.2.2 后台启动容器 2.3 进入容器2.4 停止启动重启容器2.5 退出容器2.6 删除容器2.7 提交容器(打包成镜像)2.8 拷贝文件2.8.1 拷贝容器内文件到宿主机2.8.2 拷贝宿…...

【HarmonyOS】鸿蒙开发之Stage模型-基本概念——第4.1章
Stage模型-基本概念 名词解释 AbilityStage:应用组件的“舞台“ UIAbility:包含UI界面的应用组件,是系统调度的基本单元 WindowStage:组件内窗口的“舞台“ Window:用来绘制UI页面的窗口 HAP:Harmony Ability Package(鸿蒙能力类型的包) HSP:Harmony Sh…...

什么是芯片委外管理系统? 及其主要作用
随着半导体产业的飞速发展,芯片制造企业面临着日益复杂的生产和管理挑战。为了应对这些挑战,许多企业选择将部分生产环节委托给外部厂商进行,这种合作模式被称为“委外加工”。而为了有效地管理和协调这一合作模式,便诞生了“芯片…...
【实战-08】 flink自定义Map中的变量的行为
场景 自定义Map或者别的算子的时候,有时候需要定义一些类变量,在flink内部高并发的情况下需要正确理解这些变量的行为 代码 package com.pg.function;import org.apache.flink.api.common.functions.MapFunction; import org.apache.flink.api.common…...

Docker Volume
"Ice in my vein" Docker Volume(存储卷) 什么是存储卷? 存储卷就是: “将宿主机的本地文件系统中存在的某个目录,与容器内部的文件系统上的某一目录建立绑定关系”。 存储卷与容器本身的联合文件系统? 在宿主机上的这个与容器形成绑定关系…...

开源计算机视觉库OpenCV常用的API介绍
阅读本文之前请参阅-----开源计算机视觉库OpenCV详细介绍 OpenCV(开源计算机视觉库)是一个跨平台的计算机视觉和机器学习软件库,它提供了大量的API(应用程序编程接口),用于处理图像和视频分析、对象检测、面…...

pytorch -- torch.nn下的常用损失函数
1.基础 loss function损失函数:预测输出与实际输出 差距 越小越好 - 计算实际输出和目标之间的差距 - 为我们更新输出提供依据(反向传播) 1. L1 torch.nn.L1Loss(size_averageNone, reduceNone, reduction‘mean’) 2. 平方差(…...

daydayEXP: 支持自定义Poc文件的图形化漏洞利用工具
daydayEXP: 支持自定义Poc文件的图形化漏洞利用工具 基于java fx写的一款支持加载自定义poc文件的、可扩展的的图形化渗透测试框架。支持批量漏洞扫描、漏洞利用、结果导出等功能。 使用 经过测试,项目可在jdk8环境下正常使用。jdk11因为缺少一些必要的组件,所以jdk11版本工…...

无法访问云服务器上部署的Docker容器(二)
说明:记录一次使用公网IP 接口地址无法访问阿里云服务接口的问题; 描述 最近,我使用Docker部署了jeecg-boot项目,部署过程都没有问题,也没有错误信息。部署完成后,通过下面的地址访问后端Swagger接口文档…...

在Pycharm中运行Django项目如何指定运行的端口
方法步骤: 打开 PyCharm,选择你的 Django 项目。在菜单栏中,选择 “Run” -> “Edit Configurations...”。在打开的 “Run/Debug Configurations” 对话框中,选择你的 Django server 配置(如果没有,你…...
Android将 ViewBinding封装到BaseActivity基类中(Java版)
在Android中使用Java语言将ViewBinding封装到基类中,操作步骤如下: 1、在项目的build.gradle文件中启用了ViewBinding,添加以下代码: android {...buildFeatures {viewBinding true} } 2、创建一个名为“BaseActivity”的基类&…...

JSP实现数据传递与保存(一)
一、Web开发步骤 1.1两类模式 后端——————前端 先有前端,前端用的时候直接调用 后端已实现注册接口,接口名为doRegister.jsp 前端此时: 前端的form表单中的action提交地址就只能填doRegister.jsp,即: <f…...

【论文笔记之 YIN】YIN, a fundamental frequency estimator for speech and music
本文对 Alain de Cheveigne 等人于 2002 年在 The Journal of the Acoustical Society of America 上发表的论文进行简单地翻译。如有表述不当之处欢迎批评指正。欢迎任何形式的转载,但请务必注明出处。 论文链接:http://audition.ens.fr/adc/pdf/2002_…...

水印相机小程序源码
水印相机前端源码,本程序无需后端,前端直接导入即可,没有添加流量主功能,大家开通后自行添加 源码搜索:源码软件库 注意小程序后台的隐私权限设置,前端需要授权才可使用 真实时间地址拍照记录,…...

NXP实战笔记(八):S32K3xx基于RTD-SDK在S32DS上配置LCU实现ABZ解码
目录 1、概述 2、SDK配置 2.1、IO配置 2.2、TRGMUX配置 2.3、LCU配置 2.4、Trgmux配置 2.5、Emios配置 2.6、代码实现 1、概述 碰到光电编码器、磁编码器等,有时候传出来的位置信息为ABZ的方式,在S32K3里面通过TRGMUX、LCU、Emios结合的方式可以实现ABZ解码。 官方…...
【深度好文】simhash文本去重流程
对于类似于头条客户端而言,推荐的每一刷的新闻都必须是不同的新闻,这就需要对新闻文本进行排重。传统的去重一般是对文章的url链接进行排重,但是对于抓取的网页来说,各大平台的新闻可能存在重复,对于只通过文章url进行排重是不靠谱的,为了解决这个痛点于是就提出了用simh…...

主流的开发语言和开发环境介绍
个人浅见,不喜勿喷,谢谢 软件开发是一个涉及多个方面的复杂过程,其中包括选择合适的编程语言和开发环境。编程语言是软件开发的核心,它定义了程序员用来编写指令的语法和规则。而开发环境则提供了编写、测试和调试代码的工具和平台…...

List去重有几种方式
目录 1、for循环添加去重 2、for 双循环去重 3、for 双循环重复坐标去重 4、Set去重 5、stream流去重 1、for循环添加去重 List<String> oldList new ArrayList<>();oldList.add("张三");oldList.add("张三");oldList.add("李四&q…...
使用C#+NPOI进行Excel处理,实现多个Excel文件的求和统计
一个简易的控制台程序,使用C#NPOI进行Excel处理,实现多个Excel文件的求和统计。 前提: 待统计的Excel格式相同统计结果表与待统计的表格格式一致 引入如下四个动态库: 1. NPOI.dll 2. NPOI.OOXML.dll 3. NPOI.OpenXml4Net.dll …...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...

算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...