首页 > 其他分享 >Jessibuca 视频插件Vue2使用

Jessibuca 视频插件Vue2使用

时间:2024-06-04 15:26:46浏览次数:27  
标签:插件 false Vue2 Jessibuca 50% shotURL hdHandle new true

官网: http://jessibuca.com/document.html#window-jessibuca-is-not-a-constructor

使用环境  vue2,

第一步、需要如下三个文件,

 

 

第二步、在index.html中引入 jessibuca.js

 <script src="./jessibuca.js"></script>

 

第三步,随便建个文件初始化,Icon使用的是iView组件,

<template>
	<div>
		<div class="videoCanvas" ref="bigVideo">
			<div class="playBt">
				<Icon size="28" v-if="hdHandle && hdHandle.isPlaying()" @click="hdHandle.pause()" type="md-pause">
				</Icon>
				<Icon size="28" v-else-if="hdHandle && !hdHandle.isPlaying()" type="md-play" @click="hdHandle.play()">
				</Icon>
			</div>
			<div class="closeBt">
				<Icon size="28" type="md-close" @click="hdShow = false"></Icon>
			</div>
			<div class="screenshotBt">
				<Icon size="28" type="md-camera" @click="screenshot()"></Icon>
			</div>
		</div>


		<div class="screenshot" v-if="shotURL">
			<!-- <Spin v-if="loading" fix></Spin> -->
			<div class="closeBt">
				<Icon size="28" type="md-close" @click="shotURL = null"></Icon>
			</div>
			<div class="playBt">
				<Icon size="28" type="md-cloud-upload" @click="upload"></Icon>
			</div>
			<img style="width:100%;display: block;" :src="shotURL" id="shotId">
		</div>


	</div>
</template>

<script>
	export default {
		data() {
			return {
				hdHandle: null,
				videoUrl: "https://XXXXXX.flv",
				shotURL: '',
			}
		},
		mounted() {
			this.init()
		},
		methods: {
			upload() {//截图上传
				let myform = new FormData()
				if (this.shotURL) {
					myform.append('file', this.dataURLToBlob(this.shotURL))
					
					//调用接口上传图片
					// uploadScreenshot(myform).then(res => {
					// 	this.loading = false
					// 	if (res?.result_code === '0') {
					// 		this.shotURL = null
					// 		this.$Message.success({
					// 			content: '上传成功',
					// 			duration: 3
					// 		})
					// 	} else {
					// 		this.$Message.error({
					// 			content: '上传失败',
					// 			duration: 3
					// 		})
					// 	}
					// })
				}
			},
			dataURLToBlob(fileDataURL) {
				let arr = fileDataURL.split(','),
					mime = arr[0].match(/:(.*?);/)[1],
					bstr = atob(arr[1]),
					n = bstr.length,
					u8arr = new Uint8Array(n);
				while (n--) {
					u8arr[n] = bstr.charCodeAt(n)
				}
				return new Blob([u8arr], {
					type: mime
				})
			},
			screenshot() { //截图
				if (this.hdHandle) {
					const b64 =
						this.hdHandle.screenshot('test', 'jpeg', 'base64')
					this.shotURL = b64
				}
			},
			init() { //初始化组件
				this.hdHandle = new window.Jessibuca(
					Object.assign({
						container: this.$refs['bigVideo'],
						isResize: true,
						// isFullResize: true,
						controlAutoHide: true,
						videoBuffer: 2,
						text: "",
						// background: "bg.jpg",
						loadingText: "loading...",
						// hasAudio:false,
						// debug: true,
						supportDblclickFullscreen: false,
						// showBandwidth: true, // 显示网速
						operateBtns: {
							// fullscreen: true,
							// screenshot: true,
							// play: true,
							// audio: true,
						},
						forceNoOffscreen: true,
						isNotMute: false,
						timeout: 10,
						useWebFullScreen: true,
						useMSE: true,
						useWCS: true,
						autoWasm: true,
					}, {})
				);
				
				this.hdHandle.play(this.videoUrl)
			},
		}
	}
</script>

<style>
	.screenshot {
		position: absolute;
		border: 5px solid #FFFFFF;
		z-index: 10000;
		width: 80vw;
		top: 50%;
		left: 50%;
		transform: translate(-50%, -50%);
		animation: scalekey 0.2s ease-in;
		// transition: width 3.8s
	}
</style>

 

最终展示视频如下,图片后面的视频是摄像头视频,不能展示,可以右上角暂停,截图等。

标签:插件,false,Vue2,Jessibuca,50%,shotURL,hdHandle,new,true
From: https://www.cnblogs.com/weiyanei/p/18230807

相关文章

  • AI绘画最新Stable Diffusion安装包+教程+模型+插件+全套入门资料来了,免费拿!
    大家好,我是设计师阿威这篇文章主要给大家分享一些AI绘画方面的学习资料、AI工具以及模型插件、视频教程等等。如果你是新手入门,就一定不要错过这些资料!获取方式:请查看文章底部1.stablediffusion安装包随着技术的迭代,目前StableDiffusion已经能够生成非常艺术化的......
  • vue2.0和vue3.0同时使用
    背景:原先电脑上安装了vue2.0和node14.17.6版本,后面新项目使用的是vue3.0和node 16.6.1。通过nvm安装node 16.6.1的时候,不小心把原来的2.0环境给搞坏了。目的:本文将通过文字描述(都是cmd命令,截图感觉没啥意义)的方式,讲述卸载和安装多版本node的vue环境前言:步骤中所有的命令都......
  • 第十九节:带你梳理Vue2: 父组件向子组件传参(props传参)
    1.组件嵌套1.1组件的嵌套使用之前有说过,Vue组件跟Vue实例是一样的,因此在Vue中一个组件中也可以定义并使用自己的局部组件,这就是组件的嵌套使用例如:示例代码如下:<divid="app"><!--3.使用组件--><my-component></my-component></div><script>......
  • 第十八节:带你梳理Vue2: Vue组件中的注意事项和特例
    1.Vue组件名推荐使用驼峰命名现在我们来看看为什么在Vue中推荐注册组件时使用驼峰写法,在了解这个之前,相信大家应该都能明白为什么在Vue中,局部组件的使用频率高于全局组件.推荐使用驼峰写法也是和局部组件有关系我们先看一个示例<divid="app"><!--3.在注......
  • [22] 虚幻引擎知识拓展 智能指针、JSON解析、插件
    Day1大纲虚幻智能指针  共享指针  共享引用JSON解析对象型、数组型、解析Json文件、书写Json、读取场景Actor保存到Json任务:封装高德地图天气系统插件给蓝图使用内容虚幻智能指针创建共享指针////创建共享指针//TSharedPtr<FMyClass>pMyClass=MakeShareab......
  • 使用 Helmfile 插件进行 Argo CD 部署 - 未找到卷挂载
    我正试图在我的Rancherkubernetes集群中使用Helmfile插件设置ArgoCD部署,并遵循此参考文档。但是,我遇到了找不到卷挂载的问题。以下是我的设置细节:<代码Deployment.yaml:apiVersion:apps/v1类型:部署元数据:名称:argocd-repo-server命名空间:argocdspec:tem......
  • Notepad++文件内容对比插件
    遇到一个比较有意思的测试任务,上报日志功能接口路由需要更换V2版本,需要测试对比V1和V2版本上报的数据有没有异常点思路很简单,使用相同的数据遍历调用V1和V2版本的接口路由,取出最后的日志接口对比即可Notepad++插件compare安装插件--插件管理--搜素compare安装即可(安装插件后程......
  • KRPano插件一键解密大师1.4.0更新
    KRPano插件一键解密大师,可以一键解密KRPano的XML/JS插件,并可以分析下载静态和动态网站的所有资源。软件下载安装即可使用,解密仅需鼠标一键点击即可,无需配置任何开发环境,方便全景开发人员研究学习全景开发,了解KRPano插件运行原理等。  1.4.0版本更新 1.修复某些网址无法......
  • PDPS二次开发插件流程
    PDPS二次开发插件流程一.第一步通过C#创建插件dll1.在本地安装PDPS的安装目录下找到eMpower下的Tecnomatix.Engineering.dll,Tecnomatix.Engineering.Ui.dll2.在vs中新建winform窗体,引用以上目录下的两个dll文件3.新建一个类文件例如叫FristTestPlugin,继承Engineering下的TxBut......
  • Eclipse 下 Activiti Designer 插件安装教程
    Activiti开源工作流引擎简介:什么是工作流?工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。个人理解:工......