闲着无聊,撸个项目,项目并不打算开源,如果感兴趣,想要部署在线视频或是线上教程的可以联系出售,二次开发接个私单,谢谢!
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 视频切片模块(也会作为任务工程)
前端页面可能略显粗糙,没有UI/UE,这是一个开发差不多能做的了,已实现功能
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)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。