后端git地址:
前端git地址:
用户手册新建文件夹
在文件管理页面,可以选择文件移动到其他文件夹下。


上传文件
文件可以在线上传,上传使用分片上传方式,如果上传重复文件,可以直接秒传,秒传是根据文件md5进行判断。















在转码进度页面可以实时查看转码进度,也可以对文件进行重新转码。


数据库:mysql
缓存:redis
文件服务器:nginx
部署前需修改文件中的mysql和redis信息,需要部署nginx服务作为文件服务器,nginx配置可查看“本地存储”章节内容
开发框架后端+mybatis+mybatis-plus
前端vue3+element-plus+vite
系统配置文件大小限制默认支持2G文件上传,如果需要调整,修改中的以下2个参数:
spring:servlet:multipart:总上传文件总大小max-request-size:2048MB
水印文件固定路径:/resources/static/
可以开启、关闭水印,可以设置水印位置,具体可以看以下水印的配置信息。
config:video:开启/关闭水印,true开启,false关闭enable:truex、y为对应4个角的距离,不能为负数,负数可能会报错offset-x:100offset-y:100文档水印
文档水印只有在转成pdf后才可以添加水印,文档只能添加文字水印,可以配置当前时间。
可以开启、关闭水印,可以设置水印位置,具体可以看以下水印的配置信息。
config:document:watermark:开启水印加上当前时间time-enable:true水印内容,如果开启时间,会在内容后面加上时间content:凌夕文件管理系统行距row-space:100透明度alpha:0.1文件存储
文件存储支持本地文件存储和minio存储(还未完善,如果有需要,可以继续完善该功能),在中可以设置存储类型
config:file-server:本地文件上传路径file-dir:/Users/zcx/develop/lfs/uploadFile密钥secret:e9eaa184ac1b4068829edb4f3ea978f4#防盗链st有效时长(秒)st-effective-time:86400minio存储(未完善)
需要配置minio服务相关信息,如下:
config:file-server:minio:access-key:HgiCBQslp8LDfNyWuTOjsecret-key:65Quqe4SR881xrs9je9A4vjRNtoWmkYvtT78mL9burl:文件上传
目前未限制文件上传格式,如果有需要,可以增加限制。
每个上传ID只能上传一个文件,如果上传多个文件用同一个上传ID,会导致上传失败。
本地文件存储原文件:{}/files/{uuid+后缀}
如:/Users/zcx/develop/lfs/uploadFile/files/0
如:/Users/zcx/develop/lfs/uploadFile/trans/video/8
文档转码文件:{}/trans/document/{uuid+后缀}
如:/Users/zcx/develop/lfs/uploadFile/trans/document/8
{}/trans/hls/uuid/
{}/trans/hls/uuid/video_{分片编号}.ts
如:/Users/zcx/develop/lfs/uploadFile/trans/hls/65498aa0-5b0e-4959-9127-fc1f57cc98d4/
/Users/zcx/develop/lfs/uploadFile/trans/hls/65498aa0-5b0e-4959-9127-fc1f57cc98d4/video_0.ts
如:/Users/zcx/develop/lfs/uploadFile/thum/db94fba515e9c0dc7cb20dbf06bc410c/1.jpg
文件分片上传流程正常流程

地址:/getToken
请求方式:POST
请求参数:
appId:YbcKSAlou6UREvkwJmTx
appSecret:95NmdotNX939f4gk7vTd3cHkMd8LhBcSzPn50G8c
响应数据:
{"code":0,"msg":"操作成功","data":"_8"}上传初始化(秒传)地址:/file/uploadInit
请求方式:POST
header参数:token
请求参数:
dirId:文件夹id
fileName:文件名
md5:文件md5
响应数据:
正常上传:
{"code":0,"data":{"upload":{//上传id,秒传时,不返回上传id"uploadId":"a0dacab1-7a04-4c5c-b751-46cea30ee974",//是否跳过上传,如果为true,说明秒传,不需要再调用上传文件接口,并且会返回文件id(fileId),如果为false,走正常上传流程"skip":false,//文件id"fileId":0},//服务当前使用的上传服务,local本地文件服务,miniominio服务"fileServerType":"local"}}秒传:
{"code":0,"data":{"upload":{//上传id,秒传时,不返回上传id"uploadId":"",//是否跳过上传,如果为true,说明秒传,不需要再调用上传文件接口,并且会返回文件id(fileId),如果为false,走正常上传流程"skip":true,//文件id"fileId":64275458},"fileServerType":"local"}}上传文件/分片地址:/file/upload
请求方式:POST
header参数:token
请求参数:
file:文件
chunkNumber:当前分片编号
chunkTotal:总分片数
fileName:文件名
uploadId:上传id,初始化接口获取到的上传id
dirId:文件夹id
响应数据:
上传分片
{"code":0,"msg":"分片上传完成","data":0}合并完成
{"code":0,"msg":"合并完成","data":"84700930"}创建文件夹地址:/file/dirAdd
请求方式:POST
header参数:token
请求参数:
dirId:上级文件夹id
name:文件夹名称
响应数据:
{"code":0,"msg":"操作成功"}文件/文件夹重命名地址:/file/rename
请求方式:POST
header参数:token
请求参数:
id:文件id
name:文件/文件夹新名字
响应数据:
{"code":0,"msg":"操作成功"}获取文件列表(分页)地址:/file/list
请求方式:GET
header参数:token
请求参数:
dirId:所在文件夹id
pageNo:当前第几页,默认1
pageSize:每页数量,默认10
响应数据:
{"code":0,"msg":"操作成功","data":{"records":[{"id":"15533058","name":"新建文件夹","isDir":1,"dirId":"0","fileSize":"0","duration":"0","transStatus":0,"createTime":"2024-01-2606:09:54","thumUrl":"","fileType":0},{"id":"39296769","name":"6","isDir":0,"dirId":"0","fileSize":"60221473","suffix":".m4v","md5":"a67c7577e464acf66a802a2dddf2ee39","duration":"31","transStatus":1,"createTime":"2024-01-1807:50:29","fileUrl":"","fileTransUrls":[""],"thumUrl":""}],"total":"32","size":"10","current":"1","pages":"4"}}参数说明:
id:文件ID
name:文件名
isDir:是否文件名,0是文件,1是文件夹
dirId:所在文件夹id
fileSize:文件大小(B)
suffix:文件后缀
md5:文件md5
transStatus:转码状态,0正在转码,1转码成功,2部分转码成功,3转码失败,4不需要转码,5不支持转码,6取消转码
createTime:上传时间,格式:yyyy-MM-ddHHss
fileUrl:原文件地址
fileTransUrls:转码后的文件列表(根据开启的转码模板数量而定)
thumUrl:文件封面地址
获取文件详情地址:/file/detail/
请求方式:GET
header参数:token
响应数据:
{"code":0,"msg":"操作成功","data":{"id":"21124353","name":"文件管理系统.pptx","isDir":0,"dirId":"0","fileSize":"2659028","suffix":".pptx","md5":"269059d792de04d14ce3354d76b9d617","duration":"25","transStatus":1,"createTime":"2024-02-2003:04:38","previewUrl":";e=1709703848","progressList":[{"id":"39891458","fileTransId":"41978625","progress":100.0,"format":"pdf","transStatus":1,"startTime":"57","Time":"06","previewUrl":";e=1709703848","fileSize":"34518359"}],"thumUrl":";e=1709703848","fileType":3,"pdfWatermark":"凌夕文件管理系统2024-03-0613:39:08"}}参数说明:
id:文件ID
name:文件名
isDir:是否文件夹,0不是,1是文件夹
dirId:文件所在文件夹id,最上层目录,为0
fileSize:文件大小(B)
suffix:文件后缀
md5:文件md5
transStatus:转码状态,0正在转码,1转码成功,2部分转码成功,3转码失败,4不需要转码,5不支持转码,6取消转码
createTime:上传时间,格式:yyyy-MM-ddHHss
thumUrl:文件封面地址
previewUrl:文件预览地址
pdfWatermark:pdf文件预览的水印内容,用element-plus实现页面水印
删除文件/文件夹地址:/file/delete
请求方式:GET
header参数:token
请求参数:
id:文件/文件夹id
响应数据:
{"code":0,"msg":"操作成功"}获取转码模板列表地址:/transTemplate/list
请求方式:GET
header参数:token
请求参数:无
响应数据:
{"code":0,"msg":"操作成功","data":[{"id":70301697,"name":"普清","status":0,"width":0,"height":1080,"format":"m3u8","frameRate":20,"bitRate":2000,"codec":"h264","audioCodec":"aac","audioChannel":2,"audioBitRate":112,"audioSampleRate":8000,"createTime":"2024-01-1506:15:08"}]}参数说明:
id:模板ID
name:模板名称
status:状态,是否开启转码,0关闭,1开启
width:分辨率(宽)
height:分辨率(高)
format:转码输出格式
audioBitRate:音频比特率(码率)
audioSampleRate:音频采样率
audioChannel:音频声道
audioCodec:音频编解码器
新增/更新转码模板地址:/transTemplate/save
请求方式:POST
header参数:token
请求参数:
id:模板ID,新增时不要传该参数,是否有id参数是区分新增、更新操作
name:模板名称
width:分辨率(宽),如:1920
height:分辨率(高),如:1080
format:转码输出格式,可选:mp4、m3u8
audioBitRate:音频比特率(码率),可选:16、32、48、64、80、96、112、128、160、192、224、256、320、384、448、512
audioSampleRate:音频采样率,可选:8000、11025、12000、16000、22050、24000、32000、44100、48000、64000、88200、96000
audioChannel:音频声道,可选:1、2
audioCodec:音频编解码器,可选:aac
waterMarkId:水印模板id
响应数据:
{"code":0,"msg":"操作成功"}关闭/开启转码模板地址:/transTemplate/updateStatus
请求方式:POST
header参数:token
请求参数:
id:模板ID,新增时不要传该参数,是否有id参数是区分新增、更新操作
status:状态,是否开启转码,0关闭,1开启
响应数据:
成功
{"code":0,"msg":"操作成功"}失败
删除转码模板地址:/transTemplate/delete
请求方式:POST
header参数:token
请求参数:
id:模板ID
响应数据:
成功
{"code":0,"msg":"操作成功"}文件上传成功后缩略图列表文件上传后,如果马上调用该接口,可能返回的列表是空的,因为生成缩略图需要时间,可能需要几秒钟,所以在显示缩略图列表选择页面,如果获取到的数据是空的,最好重试几次,直到获取到数据、或者超时给用户提示。
地址:/file/thumList
请求方式:GET
header参数:token
请求参数:
md5:文件md5
响应数据:
成功
{"code":0,"msg":"操作成功","data":[{"id":13021186,"fileUrl":"","duration":1}]}更新文件缩略图地址:/file/updateFileThum
请求方式:POST
header参数:token
请求参数:
fileId:文件id
thumId:缩略图id
响应数据:
{"code":0,"msg":"操作成功"}手动转码地址:/file/manualTranscode
请求方式:POST
header参数:token
请求参数:
fileId:文件id
响应数据:
成功
{"code":0,"msg":"操作成功"}失败
{"code":1012,"msg":"该文件不支持转码"}转码列表地址:/transProgress/list
请求方式:GET
header参数:token
请求参数:
pageNo:当前第几页,默认1
pageSize:每页数量,默认10
响应数据:
{"code":0,"msg":"操作成功","data":{"records":[{"id":"84216065","fileId":"49998339","fileTransId":"23779586","progress":100.0,"format":"pdf","transStatus":1,"startTime":"69","Time":"36","fileName":"常用软件.xlsx","createTime":"2024-01-2209:18:03"}],"total":"26","size":"10","current":"1","pages":"3"}}参数说明:
id:转码ID
fileId:文件id
fileName:文件名
fileTransId:转码后的文件id
progress:转码进度,0-100
format:转码输出格式
transStatus:转码状态,0正在转码,1转码成功,3转码失败
startTime:开始转码时间(时间戳)
Time:完成转码时间(时间戳),进行中为0,如要计算进行中转码时长,使用当前时间进行计算
createTime:创建转码时间,创建转码时,不一定马上开始转码了,开始转码时间要看startTime
转码配置模板名称设置模板名称name
视频分辨率PAR图像纵横比:PAR=(每行像素数)/(每列像素数)=分辨率
SAR样点纵横比:SAR=(像素的宽)/(像素的高)。像素不一定都是正方形的。
DAR显示纵横比:一般说的16:9和4:3指的是DAR。DAR=(每行像素数像素的宽)/(每列像素数像素的高),即DAR=PAR*SAR
480p=标清=640x480
720p=高清=1280×720p
1080p=蓝光=1920x1080p
2K=1440P=2560x1440
4K=2160P=3840x2160
8K=4320P=7680×4320
高度默认:1080
宽度默认:0(自动计算)
转码格式选项:mp4、m3u8
默认:mp4
选项:15、20、25、30、40、50、60
默认:30
通常也叫码率是指单位时间内传送的比特(bit)数,单位为bps(bitpersecond)
选项:500、800、1200、2000、3000、5000、8000
默认:1200
编解码器选项:h264
默认:h264
封面截图截图格式为jpg图片。
音频编解码器目前音频基本都用AAC编码,因为这个编码目前来说压缩率高,而且音质损失极底。
选项:aac
默认:aac
声道单声道:是指一个声音的通道,把来自不同方位的音频信号混合后统一由录音器材把它记录下来,再由一个扬声器进行重放(没有左右声道之分)。早期的收音机都是单声道的,耳机就一个耳朵。
双声道:是指有两个声音的通道,双声道是在空间放置两个互成一定角度的扬声器,每个扬声器单独由一个声道提供信号。双声道是二路输入,二路输出,但不一定是立体声。(左右声道都只有一路的信号输入),也称为双声道混和声。
选项:1、2
默认:2
音频码率(音频比特率)一般普通音质码率大致在80164kbps左右,HQ高音质192320kbps左右,SQ无损800~1500kbps左右,CD及其它无压缩音质数值过万甚至更高。
普通音质转成无损音质,并不是成了无损音乐,反而体积增大了,这就是所谓假无损。
选项:16、32、48、64、80、96、112、128、160、192、224、256、320、384、448、512
默认:128
音频采样率音频采样率是指录音设备在一秒钟内对声音信号的采样次数,它决定了数字音频信号的分辨率。采样率的单位通常是赫兹(Hz)。采样率越高,理论上能够捕捉到的声音细节越多,从而产生的声音质量也更高。
选项:8000、11025、12000、16000、22050、24000、32000、44100、48000、64000、88200、96000
默认:48000
部分说明:
8000Hz:电话所用采样率,对于人的说话已经足够
11025Hz:电话所用采样率
22050Hz:无线电广播所用采样率
44100Hz:音频CD,也常用于MPEG-1音频(VCD,SVCD,MP3)所用采样率
48000Hz:miniDV、数字电视、DVD、DAT、电影和专业音频所用的数字声音所用采样率
96000Hz:DVD-Audio、一些LPCMDVD音轨、BD-ROM(蓝光盘)音轨、和HD-DVD(高清晰度DVD)音轨所用所用采样率
转码转码流程





