1 Star 0 Fork 0

liusunyou / vod-media

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

vod-media

写在前言

闲着无聊,撸个项目,项目并不打算开源,如果感兴趣,想要部署在线视频或是线上教程的可以联系出售,二次开发接个私单,谢谢!

技术选型

jwt minio rabbitmq mybatis-plus redis spring-boot ffmpeg hls m3u8 vue3 typescript

项目结构

vod-media-parent
|-vod-media-api             接口模块
|-vod-media-autogen        mybatis-plus generator
|-vod-media-common       公共模块
|-vod-media-mobile         vue3+Typescript 前端页面
|-vod-media-server          后端管理模块(未实现)
|-vod-media-worker         视频切片模块(也会作为任务工程)

项目完成度(80%)

前端页面可能略显粗糙,没有UI/UE,这是一个开发差不多能做的了,已实现功能

  1. 用户注册、用户登录、忘记密码
  2. 邮件发送验证码、重置密码链接
  3. 视频分组、视频列表、视频上传、视频播放(不直接播放视频源文件,播放m3u8文件,视频加载播放速度提升不止一点点) 输入图片说明
  4. minio存储图片、视频源文件、视频流文件
  5. rabbitmq处理业务耦合,在源视频上传后,通知对视频文件进行切片,生成m3u8和ts文件
  6. jwt实现权限认证及access_token创建获取、refresh_token刷新等等,有效的实现对api请求接口控制
  7. 其它...

GIF动图演示
输入图片说明 输入图片说明

验证邮件
输入图片说明 输入图片说明 邮件内容用的是定义好的html模板

问题

虽然说是很简单的项目,看起来没几个页面,但还是遇到了很多意想不到的问题

  • druid-version 1.2.22, select alway true condition not allow 问题原因出现在mapper.xml文件中写sql语句,习惯性写where 1=1语句;网络上有建议直接拿掉wall filter,这种遇到问题不解决问题,选择绕道的思路真是清奇;还有博文说是druid 1.2.22版本中的逻辑实现bug,需要调换配置;但如果新版本更新解决了bug,不是莫名其妙的埋了一个雷吗?我没有去查看源码实现,费时间;换个思路,是否有办法在写sql语句时拿掉1=1的优雅做法,果然mybatis是有提供的,可以使用<where></where>标签代替where,这解决了我的问题;

  • 图片等资源上传到minio上,但是要浏览文件通过getPresignedObjectUrl方法拿到的是time bound url,是会过期的url;我只是修改了对应bucket的Access Policy为public即可在浏览器中直接访问文件; 输入图片说明 比如你的minio是在http://localhost:9000端口上,你的bucket名称是images,访问文件的url地址为:http://localhost:9000/images/[objectName]

  • 配置Google Gmail SMTP Server向用户免费发送验证码短信,及重置密码链接,出现的一些错误,这个可能相对简单些,可以网络上查找下

  • 415 Unsupported MediaType in Spring Application
    在Typescript中上传文件,只是这个form表单中还有其他信息一起提交,有意思的是网络上很多的推荐做法是在spring-boot服务端分开接收这两部分信息,用@RequestPart来接收文件及其它信息,类似upload(@RequestPart("file") MultipartFile,@RequestPart("fileInfo") String fileInfo),这里更有意思的是fileInfo是json串,需要再parse一番,那是否有更优雅的解决方案?在一个对象中同时接收文件信息及文件?答案是肯定的,使用@ModelAttribute注解;比如:upload(@Valid @ModelAttribute UploadRequest req)

  • 选择本地视频文件并回显,即在未上传前进行加载预览问题(how to preload video before uploading)

  • 截取视频第一帧作为视频封面问题(how to use first frame of the video as the video cover)

联系方式(请注明来源、来意)

输入图片说明

空文件

简介

在线视频点播、视频直播;jwt minio rabbitmq mybatis-plus redis spring-boot ffmpeg hls m3u8 vue3 typescript 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/liusunyou/vod-media.git
git@gitee.com:liusunyou/vod-media.git
liusunyou
vod-media
vod-media
master

搜索帮助