工控智汇

工控智汇

凌夕文件管理系统发布 - 音视频、文档在线转码服务

admin 66 133
软件简介

后端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:86400
minio存储(未完善)

需要配置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

文件分片上传流程正常流程


秒传


接口获取token

地址:/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)音轨所用所用采样率

转码转码流程