Java从0-1开发视频点播项目 附加完整的部署流程

2023-11-04 08:40

本文主要是介绍Java从0-1开发视频点播项目 附加完整的部署流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 产品效果 

  1.      

  • 视频点播技术痛点

  1. 以传统视频格式MP4为例, 要想达到秒播级别基本不可能, 因为不能确定浏览器缓冲视频到多少后才能进行播放  10M? 20M?  ,  这个等待视频缓冲过程对使用者来说是无法忍受的!!!
  2. 为了解决上述的问题, 博主研究了M3U8这种视频编码格式, 据我观察如今大型的视频播放网站均是用的此视频格式
    1.  
  3.  m3u8流媒体能将源视频分片成许多个视频片段  xx.ts 格式, 每个ts视频段大小可能只有100KB或1M-5M 这样浏览器只要缓冲小部分视频段达到秒播的效果, 然后就是对外暴露一个index.m3u8的主文件, 主文件内部是 ts 视频段的地址

  • 技术栈

  • 架构图

  • 后端

  1. SpringBoot
  2. SpringSecurity-权限认证框架
  3. Mybatisplus
  4. ffmpeg     视频转码工具(m3u8)
  5. 腾讯COS云存储对象
  • 前端

  1. Vue2.0 
  2. Vant组件库
  • 服务器

  1. 腾讯云配置: 2核4G内存3M带宽;
  2. Docker容器加载中间件镜像;
  3. Jenkins实现前后端项目自动化部署;
  4. 视频资源存放在腾讯COS对象云
  • Python爬虫

  • 爬虫的定义: 只要能自动化去抓取到你想要的数据, 我就把它当做爬虫;

  • python爬虫组件库

  1. requests               发起请求得到响应的内容
  2. pyppeteer             模拟浏览器操作;
  3. beautifulSoup       对象化HTML元素;
  4. fake_useragent    每次发起请求时改变请求头里的 User-Agent 属性, 绕过防爬机制  当然防爬机制远远不止这种;
  5. asyncio                 python自带的 异步IO 组件
    1. 交给async io 执行的任务是协程 协程存在于单条线程中, 一条线程能有N条协程 由于是在同一线程中执行, 因此就不存在抢占资源一说, 因此协程是线程安全的;
    2. 在方法前加 async 关键字定义协程
      1.  
    3. 配合 await 关键字 实现非阻塞式编程
      1. 加了await的代码说明要等待响应结果才会执行下一个await代码, 他们之间互相有依赖关系, 但对于没有此关键字的代码就无需等待 能继续往下走, 等阻塞的代码都执行完后 整个协程也就结束了  最大化的利用CPU资源;
  • 后端实现

  • 环境的安装请自行处理

  1. JDK1.8
  2. Maven
  3. IDEA
  • 搭建SpringBoot项目

  1. 进入Spring官网
  2. 按照官网的实例指南创建项目
  3. 使用IDEA编辑器打开项目
    1. 结构说明
    2.  
  4. 创建控制层且启动项目
    1. 配置主文件
    2. 控制层
    3. 启动主函数-启动项目
  5. 访问API
  • 线上Cloud项目

  1. 田翔/cloud
  2. 代码说明
    1. pom.xml文件   maven管理的依赖---------也没啥可说的, 在这能引入所需jar包
      1. 版本号
    2. 控制层
      1. AdminController
      2. LoginController
      3. PayControlle
        1. 制作卡密以及卡密激活权限
    3. SpringSecurity  权限认证
    4. 定时调度器
    5. 过滤器-初始化变量
      1. 按系统设置  视频文件在服务器上的地址
  • 线上Consumer1/2项目

  • 田翔/consumer1
  • 田翔/consumer2
  1. 代码说明
    1. 用注解形式的AOP作为切面, 增强RabbitMQ消费方的方法(日志打印)
      1. 效果

  • 前端实现

  • 搭建Vue2.0项目

  1. 前端源码
  2. 使用Vue建议的快速搭建Vue项目的 vue-cli 脚手架
  3. 脚手架创建Vue项目
  4. 用前端编辑器 VS Code 打开Vue项目
    1. 打开项目后用终端运行 
  • 操作vue项目

  1. 新建vue页面

    1. 内容展示
      <template><div id="app">呼啦啦2</div>
      </template><script></script><!-- Add "scoped" attribute to limit CSS to this component only -->
      <style scoped></style>

  2. 访问T.vue页面

    1. 替换App.vue文件的内容    

      1. <!-- 这个单文件组件为主入口 -->
        <template><div id="app"><!-- 展示路由的内容 --><router-view /></div>
        </template><script>export default {name: 'App'}
        </script><style></style>
        

    2. 增加路由配置

      1. import Vue from 'vue'
        import Router from 'vue-router'
        import HelloWorld from '@/components/HelloWorld'
        import T from '@/components/T'
        Vue.use(Router)export default new Router({mode : 'hash',routes: [{path: '/',component: HelloWorld},{path: '/T',component: T}]
        })
        

    3. 在主文件内加入路由组件

      1. npm 安装router组件依赖包

        npm install --save vue-router

      2. 重启服务

      3. 访问页面

  3. 打包项目进行发布

    1. 新增 vue.config.js 配置文件

      1.  
        const target = require('./src/URL')module.exports = {// 项目部署的基本路径publicPath: "./",// 构建输出路径 ,vue-cli-service build 时生成。outputDir: "dist",//放置生成的静态资源 (js、css、img、fonts) 和 outputDir 同级。assetsDir: "static",// 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码lintOnSave: true,//是否使用包含运行时编译器的 Vue 构建版本runtimeCompiler: false,//是否需要 mapproductionSourceMap: true,// 偏向apppwa: {},devServer: {host: 'localhost',// 使用花生壳之类的 需改为 0.0.0.0port: '8080', // 端口号https: false, // 是否支持httpsopen: false, // 配置自动启动浏览器disableHostCheck: true, // 使用花生壳之类的 需设为false/* 使用代理 */proxy: {'/api': {/* 目标代理服务器地址 */target: target.target,/* 允许跨域 */changeOrigin: true,pathRewrite: {'^/api': '' // 调用接口时带 / 使用'' 不带使用 '/',例如 /sys/login 则使用 '' , sys/login 则使用 '/'}}},}
        }

    2. 增加URL.js文件
      1. 内容

        'use strict'
        // 跨域请求的地址
        var domain = "/api";
        // 服务端地址
        var target  = "http://localhost:809";module.exports =  {domain:domain,target:target,
        }
    3. 打包

      1. npm run build

      2. 进入dist目录, 里面的文件能直接访问

    4. 然后就将打包的前端文件都放在服务器上, 我这里用nginx作为前端服务器

  • 服务搭建---采用Docker容器安装中间件

  • Docker集成Nginx

  • Docker集成Redis

  • Docker集成ElasticSearch

  • Docker集成RabbitMQ

  • Docker集成Mysql

  • Docker集成Jenkins

  • Docker继承Tomcat   tips: tomcat不推荐使用docker集成

  • Docker打包服务镜像后迁移到其它机器上运行

这篇关于Java从0-1开发视频点播项目 附加完整的部署流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/344563

相关文章

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma