SpringBoot2+Vue2实战(十六)vue集成视频播放组件

news2024/11/26 16:33:32

修改文件上传大小限制

  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB

Video.vue

<template>
  <div style="padding: 10px">
    <el-card>
      <div v-for="item in videos" :key="item.id"
           style="margin: 10px 0;padding: 10px 0;color: #666;border-bottom: 1px dashed #ccc">
        <span style="font-size: 18px;cursor: pointer" class="item" @click="detail(item.id)">{{ item.name }}</span>
        <span style="float: right;font-size: 14px;margin-top: 10px">文件大小: {{ item.size }}kb</span>
      </div>
    </el-card>
  </div>
</template>

<script>

export default {
  name: "Video",
  data() {
    return {
      videos: []
    }
  },
  created() {
    this.request("/echarts/file/front/all").then(res => {
      console.log(res.data)
      this.videos = res.data.filter(v => v.type === 'mp4')
    })
  },
  methods: {
    detail(id) {
      this.$router.push({path: "/front/videoDetail", query: {id: id}})
    }
  }
}
</script>

<style>

.item:hover {
  color: #3a8ee6;
  background: none;
}

</style>

router/index.js

{
                path: 'video',
                name: 'video',
                component: () => import('../views/front/Video.vue')
            },
            {
                path: 'videoDetail',
                name: 'VideoDetail',
                component: () => import('../views/front/VideoDetail.vue')
            },

FileController

@GetMapping("/detail/{id}")
    public Result getById(@PathVariable("id") Integer id){
        return Result.success(fileMapper.selectById(id));
    }

VideoDetail.vue

<template>

</template>

<script>
export default {
  name: "VideoDetail",
  data() {
    return {
      /*id:this.$route.query.id*/
      video:{}
    }
  },
  created() {
    let id = this.$route.query.id
    this.request("/file/detail/" + id).then(res => {
      console.log(res.data)
      this.videos = res.data
    })
  }
}
</script>

<style>

</style>

安装视屏播放器组件

npm install vue-video-player@5.0.2 --save

引入组件

VideoDetail

<div>
    <div class="demo">
      <video-player class="video-player-box"
                    rel="videoPlayer"
                    :playsinline="true"
                    :options="playerOptions">
      </video-player>
    </div>
  </div>


import {videoPlayer} from 'vue-video-player'
import 'video.js/dist/video-js.css'



components:{
    videoPlayer
  },



data() {
    return {
      /*id:this.$route.query.id*/
      video: {},
      playerOptions: {
        playbackRates: [0.5,1.0,1.5,2.0], // 可选的播放速度
        autoplay: false, // 如果为true,浏览器准备好时开始回放。
        muted: false, // 默认情况下将会消除任何音频。
        loop: false, // 是否视频一结束就重新开始。
        preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
        language: "zh-CN",
        aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
        fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
        sources: [
          {
            type: "video/mp4", // 类型
            src: "", // url地址
          },
        ],
        poster: "", // 封面地址
        notSupportedMessage: "此视频暂无法播放,请稍后再试", // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
        controlBar: {
          timeDivider: true, // 当前时间和持续时间的分隔符
          durationDisplay: true, // 显示持续时间
          remainingTimeDisplay: false, // 是否显示剩余时间功能
          fullscreenToggle: true, // 是否显示全屏按钮
        },
      },
    }
  },

created() {
    let id = this.$route.query.id
    this.request("/file/detail/" + id).then(res => {
      console.log(res.data)
      /*this.videos = res.data*/
      this.playerOptions.sources[0].src = res.data.url
    })
  }

引入video.js

npm install video.js -S

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/742730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

走进Linux世界【二、VM与Linux安装】

第二章 VM与Linux安装 1、安装VMware ​ 这里安装Vm主要是为了安装Linux系统&#xff0c;除了相对云服务器&#xff0c;比较大众化的操作&#xff0c;当然更多的是熟悉Linux操作 1、Windows安装 ​ (1) 下载链接&#xff0c;目前版本上下载VM15的版本即可https://www.vmwar…

JavaScript ES6实现继承

1 对象的方法补充 2 原型继承关系图 3 class方式定义类 4 extends实现继承 5 extends实现继承 6 多态概念的理 function 创建的名称如果开头是大写的&#xff0c;那这个创建的不是函数&#xff0c;是创建了类。 ES6-class类中的内容 <!DOCTYPE html> <html lang&…

ChatGPT助力校招----面试问题分享(十一)

1 ChatGPT每日一题&#xff1a;PCB布线&#xff0c;高速信号线走直角的后果 问题&#xff1a;PCB布线&#xff0c;高速信号线走直角的后果 ChatGPT&#xff1a;对于高速信号线来说&#xff0c;最好避免使用直角布线。直角布线会引入反射和信号损耗&#xff0c;从而导致信号完…

IP网络基础

文章目录 数据通信基础数据流方向&#xff08;工作模式&#xff09;网络和Internet简介网络&#xff1a;互联网&#xff1a;总结&#xff1a; 协议和标准标准化组织标准化组织——IETF标准的种类 IP网络基本架构 lP网络在现代社会中有着越来越重要的地位。本课程将介绍数据通信…

详解c++---c++11(上)

目录标题 {}初始化decltype和autonullptr范围forfinal什么是左值和右值左值引用和右值引用右值引用的意义右值引用的使用const右值引用万能引用默认移动构造和移动赋值 {}初始化 在c98中允许使用{}对数组或者结构体元素进行统一的列表初始值设定&#xff0c;比如说下面有个结构…

使用USB转TTL线连接树莓派4B

一般我们刷完树莓派系统后&#xff0c;都是通过连接鼠标键盘及显示器来进行操作&#xff0c;当我们开启SSH功能后我们才可以通过ssh客户端进行远程访问&#xff0c;那么是否有更方便的方式进行连接&#xff0c;并且不需连接外部设备进行操作呢&#xff1f; 串口通信 当然可以…

python3+requests+unittest实战系列【一】

1.环境准备 python3 pycharm编辑器 2.框架目录展示 &#xff08;该套代码只是简单入门&#xff0c;有兴趣的可以不断后期完善&#xff09; &#xff08;1&#xff09;run.py主运行文件&#xff0c;运行之后可以生成相应的测试报告&#xff0c;并以邮件形式发送&#xff1b;…

探索现代设备管理系统的功能和优势

在现代工业环境中&#xff0c;设备管理对于企业的生产效率和可靠性至关重要。随着科技的不断发展&#xff0c;现代设备管理系统为企业提供了更多的优势和功能&#xff0c;以帮助企业实现设备全生命周期管理和优化运营。本文将探索现代设备管理系统的优势和功能&#xff0c;以帮…

PicGo搭建Gitee图床

文章目录 1、创建Gitee仓库2. 填写仓库信息3、生成私人令牌3.1、点击个人设置3.2、点击私人令牌3.3、生成新令牌3.4、密码验证3.5、记录个人令牌 4、PicGo配置4.1、插件设置&#xff0c;安装gitee插件4.2、PicGo图床配置为gitee并设置详细信息 5、特殊问题5.1、上传失败原因15.…

Vue3 +Echarts5 可视化大屏——屏幕适配

项目基于Vue3 Echarts5 开发&#xff0c;屏幕适配是使用 scale 方案 Echarts组件按需引入&#xff0c;减少打包体积 地图组件封装&#xff08;全国&省份地图按需加载&#xff09; 效果图&#xff1a; 屏幕适配 大屏适配常用的方案有 rem vw/vh 和 scale 。 rem vw/vh …

C++之虚函数和纯虚函数多态调用区别(一百五十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

中值滤波的运用

需求&#xff1a; c#、WPF开发&#xff0c;在界面上画不规则的图形区域&#xff0c;并提取区域内的point 实现方式&#xff1a; 1. 用 InkCanvas控件作为画布&#xff0c;用path画不规则图形 2. 将InkCanvas控件内的内容保存为jpg图片 3. 通过判断区域的颜色&#xff0c;从而得…

离散化模板(附 区间和 解决方法)

目录 用于解决的问题类型&#xff1a; 作用&#xff1a; 使用到的函数&#xff1a; 常用模板&#xff1a; 例题引入&#xff1a; 题目&#xff1a; 解题思路&#xff1a; 代码详解&#xff1a; 用于解决的问题类型&#xff1a; 对于值域比较大&#xff0c;但个数比较少…

python爬虫之playWright解密传参

参考文章&#xff1a; Python和js实现逆向之加密参数破解_js btoa python_biyezuopinvip的博客-CSDN博客 JS逆向——借助playwright实现逆向_lishuangbo0123的博客-CSDN博客 简单方便的 JavaScript 逆向辅助模拟方法_token 自己整理的代码 from playwright.sync_api impor…

数组、指针练习题及解析(含笔试题目讲解)(二)

接上文&#xff0c;我们继续笔试题目讲解。 目录 笔试题3 笔试题4 笔试题5 笔试题6 笔试题7 面试题8 总结 笔试题3 int main() {int a[4] { 1, 2, 3, 4 };int *ptr1 (int *)(&a 1);int *ptr2 (int *)((int)a 1);printf( "%x,%x", ptr1[-1], *ptr2);…

postman 携带时间戳及md5加密预处理

// 获取全局变量 uid postman.getGlobalVariable(“uid”) sid postman.getGlobalVariable(“sid”) //设置当前时间戳 postman.setGlobalVariable(“time”,Math.round(new Date().getTime())); time postman.getGlobalVariable(‘time’) //设置KEY_WORD为全局变量 post…

C# SolidWorks 二次开发 -从零开始创建一个插件(1)

学习内容:从零开始定制一个SolidWorks插件 作为了一个职业的二次开发人员&#xff0c;我曾经创建插件"无数"。但从未像今天这篇文章这样&#xff0c;从空项目开始&#xff0c;之前的文章中我有介绍&#xff0c;要么使用SolidWorks API模板&#xff0c;要么使用了第三…

小马哥JAVA实战营-JDBC

小马哥是一个非常牛逼的技术大牛&#xff0c;最近在看他的课&#xff0c;感兴趣也可以关注一波小马哥&#xff08;不是引流&#xff0c;是真的很推荐&#xff09;&#xff1a; 小马哥B站 JDBC规范文档 jdbc规范文档下载链接 JDBC的主要特征 面向数据表行列编程驱动程序需要…

《3.linux应用编程和网络编程-第8部分-3.8.网络基础》 3.8.1.网络通信概述 3.8.3.网络通信基础知识2

进程间通信&#xff1a; 管道 、 信号量、 共享内存&#xff0c; 技术多&#xff0c;操作麻烦 线程就是解决 进程间 通信 麻烦的事情&#xff0c;这是线程的 优势 3.8.1.网络通信概述 3.8.1.1、从进程间通信说起&#xff1a;网络域套接字socket&#xff0c;网络通信其实就是位…

2023.7月最新版idea安装Jrebel实现热部署,可解决后端启动等待时间过长问题

2023.7最新版idea热部署配置 一 下载jrebel插件二 激活我使用的方法 三 配置方式1 设置自动编译2 设置 compiler.automake.allow.when.app.running3 勾选项目&#xff0c;然后以Rebel方式启动 4 Settings查看Activation情况四 报错解决1 启动失败 2 端口被占用 五 总结 一 下载…