vue3使用video-player实现视频播放(可拖动视频窗口、调整大小)
1.安装video-player
npm install video.js @videojs-player/vue --save
在main.js中配置全局引入
// 导入视频播放组件
import VueVideoPlayer from '@videojs-player/vue'
import 'video.js/dist/video-js.css'const app = createApp(App)
// 视频播放组件
app.use(VueVideoPlayer)
2.安装拖拽组件vue3-draggable-resizable
npm install vue3-draggable-resizable
3.使用vue3-draggable-resizable
<template><div id="app"><div class="parent"><Vue3DraggableResizable:initW="110":initH="120"v-model:x="x"v-model:y="y"v-model:w="w"v-model:h="h"v-model:active="active":draggable="true":resizable="true"@activated="print('activated')"@deactivated="print('deactivated')"@drag-start="print('drag-start')"@resize-start="print('resize-start')"@dragging="print('dragging')"@resizing="print('resizing')"@drag-end="print('drag-end')"@resize-end="print('resize-end')">This is a test example</Vue3DraggableResizable></div></div>
</template><script>
import { defineComponent } from 'vue'
import Vue3DraggableResizable from 'vue3-draggable-resizable'
//default styles
import 'vue3-draggable-resizable/dist/Vue3DraggableResizable.css'
export default defineComponent({components: { Vue3DraggableResizable },data() {return {x: 100,y: 100,h: 100,w: 100,active: false}},methods: {print(val) {console.log(val)}}
})
</script>
<style>
.parent {width: 200px;height: 200px;position: absolute;top: 100px;left: 100px;border: 1px solid #000;user-select: none;
}
</style>
具体使用方法可查看官方文档:vue3-draggable-resizable/docs/document_zh.md at main · a7650/vue3-draggable-resizable · GitHub
首先去掉右上角的缩放句柄,将一个按钮放在右上角,这样我们就可以随时使用v-if关闭这个拖拽窗口,将视频放入拖拽窗口中,代码:
<Vue3DraggableResizable v-if="cunzai" :lockAspectRatio="true":handles="['tl', 'tm', 'mr', 'ml', 'bl', 'bm', 'br']" :initW="320" :initH="180" :minW="320" :minH="180"v-model:x="x" v-model:y="y" v-model:w="w" v-model:h="h" v-model:active="active" :draggable="true":resizable="true" :parent="true" @activated="print('activated')" @deactivated="print('deactivated')"@drag-start="print('drag-start')" @resize-start="print('resize-start')" @dragging="print('dragging')"@resizing="print('resizing')" @drag-end="print('drag-end')" @resize-end="print('resize-end')"><div class="close" @click="close()"><Icon size="20" color="#1196db" type="md-close-circle" /></div><div><video-player v-if="modal1" :controls="true" :autoplay="false" :src="videoSrc" :options="playerOptions":volume="0.6" /></div></Vue3DraggableResizable>
视频部分代码:
// 视频链接地址
const videoSrc = ref('url'); //自定义url
// 视频播放器配置
let playerOptions = ref({height: 250,width: 250, playbackRates: [0.7, 1.0, 1.5, 2.0], autoplay: false, muted: true, loop: true, preload: 'auto', language: 'zh-CN',aspectRatio: '16:9', fluid: true, notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。controls: true,controlBar: {timeDivider: true,durationDisplay: true,remainingTimeDisplay: false,fullscreenToggle: true // 全屏按钮}
})
const cunzai = ref(false);
//关闭视频
function close() {cunzai.value = false
}
这样就可以实现视频窗口的放大缩小移动。

放大移动;

相关文章:
vue3使用video-player实现视频播放(可拖动视频窗口、调整大小)
1.安装video-player npm install video.js videojs-player/vue --save在main.js中配置全局引入 // 导入视频播放组件 import VueVideoPlayer from videojs-player/vue import video.js/dist/video-js.cssconst app createApp(App) // 视频播放组件 app.use(VueVideoPlayer)2…...
模块化和面向接口的设计:深入理解和应用
模块化和面向接口的设计:深入理解和应用 在面向对象编程中,模块化 和 面向接口设计 是两种非常重要的编程理念。它们能帮助开发人员构建更加清晰、可维护和易于扩展的系统。接下来,我们将详细解释这两种设计思想,并结合 Python 中…...
《SwiftUI 实现点击按钮播放 MP3 音频》
功能介绍 点击按钮时,应用会播放名为 yinpin.mp3 的音频文件。使用 AVAudioPlayer 来加载和播放音频。 关键点: 按钮触发:点击按钮会调用 playAudio() 播放音频。音频加载:通过 Bundle.main.url(forResource:) 加载音频文件。播…...
微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)Proteus中Unknown 1-byte opcode / Unknown 2-byte opcode错误
原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …...
MySQL如何执行.sql 文件:详细教学指南
在使用MySQL数据库过程中,我们经常需要执行包含SQL语句的.sql文件。这些文件通常用于数据库的备份和恢复或批量执行SQL脚本。本文将详细介绍如何在不同环境下执行MySQL的.sql文件。 前置准备 在开始之前,请确保以下条件已经满足: 已经安装…...
非周期性脑活动的动态重构支持癫痫患者的认知功能:一种神经指纹识别方法
摘要 颞叶癫痫(TLE)的特征是大脑活动模式发生大规模的变化,并且这种变化与患者的认知功能受损密切相关。本研究旨在使用神经指纹方法分析大脑活动的动态重构,以描绘TLE患者的个体特征及其认知功能相关性。本研究收集了68名TLE患者和34名对照组的10min静息…...
ZYNQ初识6(zynq_7010)clock时钟IP核
基于板子的PL端无时钟晶振,需要从PS端借用clock1(50M)晶振 接下去是自定义clock的IP核封装,为后续的simulation可以正常仿真波形,需要注意顶层文件的设置,需要将自定义的IP核对应的.v文件设置为顶层文件&a…...
使用MFC编写一个paddleclas预测软件
目录 写作目的 环境准备 下载编译环境 解压预编译库 准备训练文件 模型文件 图像文件 路径整理 准备预测代码 创建预测应用 新建mfc应用 拷贝文档 配置环境 界面布局 添加回cpp文件 修改函数 报错1解决 报错2未解决 修改infer代码 修改MFCPaddleClasDlg.cp…...
SAP SD BP名称和销售订单描述的对应不起来的问题
问题 VBPA-ADRNR地址 和 KNA1-ADRNR 指向同一个号码 销售订单读取这个地址 改正后恢复正常 原因:推测 应该是创建Y0 电商客户的时候,引起锁和混乱导致的。 具体实际时什么样,不太清楚 写于20241230 浙江台州...
FlastOcc-网络复现-1.环境配置及问题
研究OCC网络 1.RuntimeError: Ninja is required to load C extensions RuntimeError: Ninja is required to load C extensions #32 Ninja is required to load C extensions File “/FlashOCC/projects/mmdet3d_plugin/core/evaluation/ray_metrics.py”, line 12, in dvr …...
Go语言中值接收者和指针接收者的区别?
在 Go 语言中,值接收者和指针接收者是方法定义中的两种接收者类型。它们的主要区别在于方法调用时的行为、接收者是否可以被修改,以及性能上的差异。 值接收者 定义 值接收者的方法接收的是调用对象的一个副本,方法内部对该副本的修改不会影…...
kafka小实站
需要先在前面的文章里面照着下载好kafka,并且启动 先启动zookeeper 项目目录 package kafka; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import…...
基于Python实现车辆检测、机动车检测、识别位置标记、计数
目录 引言背景与应用场景车辆检测的研究意义相关工作车辆检测概述机动车检测方法分类基于传统计算机视觉的检测方法基于深度学习的检测方法技术与方法车辆检测技术概述基于Python的车辆检测方法图像处理与特征提取深度学习方法(如YOLO、SSD、Faster R-CNN等)数据集与标注常用…...
心理学硕士
心理学硕士的主要研究方向包括基础心理学、发展心理学和应用心理学。 基础心理学研究一般的心理现象与规律,如心理的实质及神经机制、感觉与知觉、意识与注意、学习与记忆、思维与语言、情绪与意识、人格等。发展心理学研究人类个体心理发生发展的特点和规律&a…...
python量化分析学习与实践1:API接口篇
业内比较流行的几款API数据接口,有聚宽、TuShare,yfinance,以及pandas的pandas_datareader等。国内的一般都需要用户认证,才能下载数据。国外的yfinance与pandas_datareader等则不需要,但需要科学上网。 聚宽 测试下…...
【GO基础学习】gin的使用
文章目录 模版使用流程参数传递路由分组数据解析和绑定gin中间件 模版使用流程 package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {// 1.创建路由r : gin.Default()// 2.绑定路由规则,执行的函数// gin.Context&#x…...
网卡状态变更,virtio-net检测
实现方案: 现在在amp模式下linux端有个真实的物理网卡eth0,有一个虚拟网卡virtio-net0后端,此时需要一种机制,将真实物理网卡的状态发送rtos的virtio-net0前端。这里使用register_netdevice_notifier机制,每个virtio-n…...
中华人民共和国保守国家秘密法
中华人民共和国保守国家秘密法 (1988年9月5日第七届全国人民代表大会常务委员会第三次会议通过 2010年4月29日第十一届全国人民代表大会常务委员会第十四次会议第一次修订 2024年2月27日第十四届全国人民代表大会常务委员会第八次会议第二次修订) 目…...
ELK日志收集系统部署
1、 ElasticSearch部署 Elastic — 搜索 AI 公司 | Elastic 系统类型:Centos7.4 节点IP:172.16.246.234 软件版本:jdk-8u191-linux-x64.tar.gz、elasticsearch-6.5.4.tar.gz 示例节点:172.16.246.234 1、安装配置jdk8 ES运行依…...
3D线上艺术展:艺术与技术的完美融合
随着数字技术的飞速发展,未来的艺术展览正逐步迈向线上线下融合的新阶段。其中,3D线上展览以其独特的魅力,成为线下展览的延伸与拓展,为艺术爱好者们开辟了全新的观赏途径。 对于艺术家和策展人而言,3D线上展览不仅打…...
BLE 协议栈:HCI ISO 数据详解
BLE 协议栈:HCI ISO 数据详解前言一、定义1、HCI ISO 数据包(ISO Data Packet)二、ISO 数据包结构1、Host to Controller 格式2、Controller to Host 格式3、字节级格式表三、ISO Data Load 格式1、Host to Controller(主机到控制…...
自适应散热风扇市场洞察:2020-2025年CAGR为14.8%
一、产品定义与技术基础:主动式热管理的核心突破自适应散热风扇作为主动式热管理装置的核心载体,通过集成温度传感器、转速反馈模块与PWM控制接口,实现基于设备运行状态、环境温度及内部热负载的动态调节。相较于传统恒速风扇,其闭…...
D435i多传感器标定全流程:从驱动安装到生成标定板的完整Checklist
D435i多传感器标定全流程:从驱动安装到生成标定板的完整Checklist 第一次接触D435i多传感器标定时,我被各种驱动安装、参数配置和标定工具搞得晕头转向。作为一款集成了RGB摄像头、双目视觉和IMU的深度相机,D435i在机器人导航、三维重建等领域…...
Vue3 + marked + highlight.js 打造实时Markdown编辑器(附完整代码)
Vue3 marked highlight.js 打造企业级Markdown编辑器实战指南 在当今内容创作和技术文档编写的场景中,Markdown已经成为开发者首选的轻量级标记语言。本文将带你从零开始,在Vue3项目中构建一个功能完善、性能优异的实时Markdown编辑器,集成…...
从 RPA 到 IPA:AI Agent Harness Engineering 如何彻底取代传统自动化脚本
从 RPA 到 IPA:AI Agent Harness Engineering 如何彻底取代传统自动化脚本 摘要/引言 一、引言(超字数拆分前的整体架构先出,但后面核心章节正文每个会超1万) 想象一个场景:2022年的某一天,你是一家全球快消品牌亚太区电商平台的RPA项目经理。你带领8人团队,花了三个月…...
Topit:重新定义macOS窗口管理,开启效率革命
Topit:重新定义macOS窗口管理,开启效率革命 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 在数字化工作环境中,多任务处理已…...
不同行业的文章标题SEO优化技巧有哪些区别
SEO优化技巧的行业差异:不同领域文章标题的独特策略 在当今的互联网时代,搜索引擎优化(SEO)已经成为了各行各业提升在线可见度的重要手段。SEO优化技巧在不同行业之间却有着显著的差异。每个行业的用户行为、关键词习惯和搜索算法…...
别再只会用OpenAI库了!用Requests库手把手教你调用硅基流动大模型API(附完整错误处理)
深入解析Requests库调用大模型API的工程化实践 在当今AI技术快速发展的背景下,大语言模型(LLM)已成为开发者工具箱中不可或缺的一部分。虽然OpenAI库提供了便捷的封装,但直接使用Requests库进行API调用能带来更大的灵活性和控制力。本文将深入探讨如何通…...
从零到百:用Python代码解放剪映生产力,告别重复剪辑劳动
从零到百:用Python代码解放剪映生产力,告别重复剪辑劳动 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 想象一下这样的场景:你是一家电商公司的视…...
3个强力步骤:百度网盘插件让macOS用户突破下载限速
3个强力步骤:百度网盘插件让macOS用户突破下载限速 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 副标题:如何在不升级会员的情…...
