当前位置: 首页 > news >正文

java视频播放网站

文章目录

      • Java_Vedio
        • 环境安装
        • 系统启动
          • 项目地址

Java_Vedio

这是一个简单的视频播放网站,由springboot+redis+mysql+rocketmq来构建服务(项目的名称vedio拼写打错,正确的应该是video)。

环境安装

redis是作为记录分片上传的索引,以实现断点续传的功能;记录上传任务的开始,设置过期时间,时间到会通知系统删除过期分片

mysql是作为成功上传的记录,当再次上传时,如果在数据库检索出相同的哈希,则直接提示上传成功(秒传)。

rocketmq是作为服务解耦的消息队列,把项目拆成两个服务,一个uplaod,负责上传分片的保存、过期的清理、全部视频的获取和返回播放,一个process,负责分片的合并、视频封面的生成、.m3u8格式的转换、合并完成的分片处理;

ffmpeg是安装在springboot项目运行的环境中,在windows运行项目就在windows装ffmpeg,在linux运行就在linux安装ffmpeg。

redis、mysql、rocketmq都是采用docker容器,利用docker-compose来管理

安装docker和docker-compose后要进行换源,在/etc/docker/daemon.json中写入:

{"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://docker.1ms.run","https://func.ink","https://lispy.org","https://docker.xiaogenban1993.com"]
}

或者在网上找其他的镜像源

在启动镜像前,要先做一点mysql和redis的配置

mkdir /root/docker/mysql_data/vedio
mkdir /root/docker/redis/conf
mkdir /root/docker/redis/data
cd /root/docker/redis/conf
touch redis.conf
echo "protected-mode no" >redis.conf
echo "appendonly yes" >>redis.conf
echo "requirepass 123456" >> redis.conf
cd /root/

docker-compose.yaml:

version: '3.8'services:namesrv:image: apache/rocketmq:4.9.6container_name: rmqnamesrvports:- 9876:9876networks:- rocketmqcommand: sh mqnamesrvbroker:image: apache/rocketmq:4.9.6container_name: rmqbrokerports:- 10909:10909- 10911:10911- 10912:10912environment:- NAMESRV_ADDR=rmqnamesrv:9876volumes:- ./broker.conf:/home/rocketmq/rocketmq-4.9.6/conf/broker.confdepends_on:- namesrvnetworks:- rocketmqcommand: sh mqbroker -c /home/rocketmq/rocketmq-4.9.6/conf/broker.confvedio_mysql:container_name: vedio_mysqlimage: mysql:8.0.43environment:MYSQL_ROOT_PASSWORD: 123456TZ: Asia/ShanghaiMYSQL_DATABASE: vedio_mysql # 自动创建数据库MYSQL_CHARSET: utf8mb4volumes:- /root/docker/mysql_data/vedio:/var/lib/mysql  # 数据持久化- /etc/localtime:/etc/localtime- /root/docker/init.sql:/docker-entrypoint-initdb.d/init.sql  # 挂载初始化脚本ports:- "3306:3306"networks:- defaulthealthcheck: # 健康检查test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]interval: 5stimeout: 3sretries: 5vedio_redis:container_name: vedio_redisimage: redis:latestvolumes:- /root/docker/redis/data:/data  # 数据持久化- /root/docker/redis/conf/redis.conf:/etc/redis/redis.confports:- "6379:6379"restart: alwaysnetworks:- defaultcommand: ["redis-server","/etc/redis/redis.conf"]networks:rocketmq:driver: bridge

通过docker-compose -f docker-compose.yaml up -d会自动去仓库拉取对应的镜像

上述命令可能不一定正确,只需要镜像可以启动即可,镜像版本不一定要绝对正确,mysql是8.0以上就好

mybatis-plus使得查询和插入mysql变得很简单,很多都不需要写代码。

系统启动

vscode打开项目,打开java_upload的App.java文件,点击run就可以启动java_upload,java_process同理。

效果:

在这里插入图片描述

在这里插入图片描述

前端的计算哈希如果视频文件太大(可能是100MB),就会导致缓冲区溢出。

项目可能还会更新用户登录、视频搜索、日志收集、弹幕等功能;

项目地址

https://github.com/MoonShinesSeas/java_vedio
https://gitee.com/diskcache/java_vedio

http://www.dtcms.com/a/344237.html

相关文章:

  • 正点原子【第四期】Linux之驱动开发学习笔记-2.1LED灯驱动实验(直接操作寄存器)
  • 分布式与微服务
  • 20250822在Ubuntu24.04.2下指定以太网卡的IP地址
  • 深度学习入门详解:从神经网络到实践应用
  • 【English】复合句中的先行词在从句中是否充当成分
  • 吉利汽车与芯鼎微成立联合创新实验室共谱车规级LCoS显示新篇章
  • 面向RF设计人员的微带贴片天线计算器
  • Gamma校正硬件设计实现
  • Elasticsearch搜索原理
  • 加密狗如何抵御各类破解与攻击?深度解析加密狗多层保护机制
  • 关于数据产业规模测算的认识与思考
  • Paddle3D-PETRv1 精度测试与推理实践指南
  • JavaSSM框架从入门到精通!第三天(MyBatis(二))!
  • C++ OpenGL中几个常见库及其区别
  • 轮廓检测技术不仅能精确计算图像中的轮廓数量,还能完整记录每个轮廓包含的所有像素点坐标
  • Linux服务测试
  • Jenkins用户授权管理 企业级jenkins授权策略 jenkins用户权限分配
  • Flutter InheritedWidget 详解
  • 学习嵌入式的第二十四天——数据结构——队列和树
  • Flutter 从入门到精通 - 完整课程总结
  • 打印机怎么连接电脑?打印机驱动?【图文详解】USB连接打印机?wifi连接打印机?
  • ZKmall模块商城的跨境电商支付安全方案:加密与权限的双重防护
  • STL关联式容器解析:map与set详解
  • 电脑芯片大的32位与64位指的是什么
  • 94. 城市间货物运输 I, Bellman_ford 算法
  • 解读商业智能BI,数据仓库中的元数据
  • Python训练营打卡Day40-简单CNN
  • memcmp 函数的使用及其模拟实现
  • io.github.lucksiege:pictureselector状态栏没沉浸问题
  • 十大麦克风品牌排行榜,顶级麦克风品牌排行榜,麦克风品牌排行榜