在局域网内通过搭建服务集群,让你的设备轻轻松松访问电脑中的视频,无需流量,不受网速干扰。本篇主要讲述如何自行搭建该服务。
项目地址:https://github.com/CasterWx/videoCloud
最近在补生活大爆炸,从网盘上下载了全季的视频,每天晚上都会在电脑上看几集再去睡觉。
因为视频资源太过庞大,所以我想在手机上看,就需要每次把视频传到手机,看完之后删掉再传新的,如果是看网上的资源,网速的问题可能会长时间需要加载。
所以我准备给我的电脑搭建一个服务,可以在同一局域网下让我的手机平板等都可以访问我电脑的资源,这样就不用担心网速问题了,差不多类似于一个局域网的在线影院。
我可以把最后的应用包安装到一台根本不需要任何性能的服务器,只需要它有大量的硬盘空间,类似于淘宝上的玩客云(硬盘还得自己提供,这就能卖200多?)。
最简单的服务器你可以直接用你报废的手机,不要再拿废手机去换不锈钢盆了,稍微改装一下就可以变成一个Linux服务器,为你局域网下其他设备来提供服务(怎么做之后出教程)。
虽然说只是一个简单的云影院,但是它可以与局域网内其他影院进行联动,你也部署多次,我还是准备用上一些高大上的框架,一边学习一边完善,杀鸡就要用屠龙宝刀。
大概说一下技术选型。
Spring Boot (应用主体)
Spring Cloud Alibaba (服务发现,负载均衡,容错等) MyBatis (数据)
Elasticsearch (搜索,正在学这个)
构建项目
项目环境分为Dev和Proc,分别是开发环境和线上环境,线上环境会限制连接数。
1 spring: 2 profiles: dev 3 --- 4 spring: 5 profiles: proc 6 server: 7 tomcat: 8 max-connections: 1000 9 max-threads: 200 10 max-http-post-size: 2MB
服务发现组件使用Nacos,局域网内每一个服务启动时会注册在Nacos中,Nacos是SpringCloudAlibaba提供的微服务组件,本项目中配置在yum配置中。
无需任何配置,startup.cmd -m standalone即可启动。
访问localhost:8848/nacos,用户名密码均为nacos,即可在服务列表中查看已启动的本项目组件。
数据库使用本地数据库。
spring: datasource: url: jdbc:mysql://localhost:3306/user_center?serverTimezone=GMT hikari: username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver
资源访问路径
静态样式资源以及视频等路径配置在WebMvcConfig中,addResourceLocations根据自己磁盘中文件路径配置。
1 @Configuration 2 public class WebMvcConfig implements WebMvcConfigurer { 3 public void addResourceHandlers(ResourceHandlerRegistry registry){ 4 registry.addResourceHandler("/**").addResourceLocations("file:G:/bilibili/"); 5 WebMvcConfigurer.super.addResourceHandlers(registry); 6 } 7 }
数据库
数据实例,localUrl是相对你在上一步Config中指定路径下的。
type字段决定了视频类型,在前端会有相应的分组。
在Test中有针对相应文件夹的批量导入方法,可以自行修改来导入本地视频。
前端界面
前端的视频播放插件选用DPlayer。
<link rel="stylesheet" href="DPlayer.min.css" /> <div id="dplayer"></div> <script src="DPlayer.min.js"></script> <script> const dp = new DPlayer({ container: document.getElementById('dplayer'), video: { url: 'demo.mp4', }, }); </script>
上述是mp4的通用播放方法,对于flv,需要指定video-type对flv,并导入flv.js进行解析。
健康检查
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
使用actuator进行健康检查。
使用
针对自己的情况完成了上述配置,就可以在局域网内正式使用该服务了。
启动项目,发现一台服务。
然后访问服务的地址,在yum中我们选择了8081端口。
因为该服务主要面向移动端,所以这里演示为手机效果。
继续下拉,就可以到视频列表了。
mv_db中的mv_type决定了分类,也就是上图中视频的分类,便于查看。
选择视频后即可跳转到相应播放界面,在局域网内体验高速服务,不用担心流量以及限速问题。
可以配合bilibili-spider批量将B站收藏夹视频文件下载到本地,在Test中导入。
局域网内的其他设备访问时,需要使用服务的局域网ip,可以在cmd中使用ipconfig命令查看。
此时我在移动端只需要访问192.168.43.145:8081即可。