Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
47dbe6cd
提交
47dbe6cd
authored
2月 14, 2023
作者:
方治民
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 采用本地环境 ffmpeg + wrap 方式处理音视频,减少依赖包大小
上级
075e438f
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
24 行增加
和
12 行删除
+24
-12
build.gradle
app/build.gradle
+0
-4
UploadProcessServiceImpl.java
...m/yiring/app/service/upload/UploadProcessServiceImpl.java
+0
-0
Minio.java
...mon/minio/src/main/java/com/yiring/common/core/Minio.java
+4
-1
UploadProcessService.java
.../java/com/yiring/common/service/UploadProcessService.java
+3
-3
FileManageServiceImpl.java
...com/yiring/common/service/impl/FileManageServiceImpl.java
+17
-4
没有找到文件。
app/build.gradle
浏览文件 @
47dbe6cd
...
@@ -54,10 +54,6 @@ dependencies {
...
@@ -54,10 +54,6 @@ dependencies {
implementation
"io.minio:minio:${minioVersion}"
implementation
"io.minio:minio:${minioVersion}"
implementation
"com.squareup.okhttp3:okhttp:${okhttpVersion}"
implementation
"com.squareup.okhttp3:okhttp:${okhttpVersion}"
// Optional: 扩展实现在文件上传时对文件进行预处理,依赖 Minio 模块
// Optional: 扩展实现在文件上传时对文件进行预处理,依赖 Minio 模块
// https://mvnrepository.com/artifact/org.bytedeco/javacv
implementation
'org.bytedeco:javacv:1.5.7'
// https://mvnrepository.com/artifact/org.bytedeco/ffmpeg-platform
implementation
'org.bytedeco:ffmpeg-platform:5.0-1.5.7'
// https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox
// https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox
implementation
"org.apache.pdfbox:pdfbox:${pdfboxVersion}"
implementation
"org.apache.pdfbox:pdfbox:${pdfboxVersion}"
// https://mvnrepository.com/artifact/net.bramp.ffmpeg/ffmpeg
// https://mvnrepository.com/artifact/net.bramp.ffmpeg/ffmpeg
...
...
app/src/main/java/com/yiring/app/service/upload/UploadProcessServiceImpl.java
浏览文件 @
47dbe6cd
差异被折叠。
点击展开。
basic-common/minio/src/main/java/com/yiring/common/core/Minio.java
浏览文件 @
47dbe6cd
...
@@ -12,6 +12,7 @@ import java.nio.file.Path;
...
@@ -12,6 +12,7 @@ import java.nio.file.Path;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Objects
;
import
java.util.Objects
;
import
lombok.Cleanup
;
import
lombok.NonNull
;
import
lombok.NonNull
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
...
@@ -106,7 +107,9 @@ public record Minio(MinioConfig config, MinioClient client) {
...
@@ -106,7 +107,9 @@ public record Minio(MinioConfig config, MinioClient client) {
}
}
Path
path
=
file
.
toPath
();
Path
path
=
file
.
toPath
();
return
putObject
(
Files
.
newInputStream
(
path
),
Files
.
probeContentType
(
path
),
object
);
@Cleanup
InputStream
inputStream
=
Files
.
newInputStream
(
path
);
return
putObject
(
inputStream
,
Files
.
probeContentType
(
path
),
object
);
}
}
/**
/**
...
...
basic-common/minio/src/main/java/com/yiring/common/service/UploadProcessService.java
浏览文件 @
47dbe6cd
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
common
.
service
;
package
com
.
yiring
.
common
.
service
;
import
java.
io.InputStream
;
import
java.
nio.file.Path
;
/**
/**
* 文件上传媒体文件预处理服务
* 文件上传媒体文件预处理服务
...
@@ -19,10 +19,10 @@ public interface UploadProcessService {
...
@@ -19,10 +19,10 @@ public interface UploadProcessService {
* 视频封面:haha.mp4 -> haha.mp4.jpg 截取视频封面
* 视频封面:haha.mp4 -> haha.mp4.jpg 截取视频封面
*
*
* @param object 上传文件存储地址
* @param object 上传文件存储地址
* @param
is 文件流
* @param
path 文件地址
* @return 预处理后的文件地址(可能对文件名追加了时长、页数、分辨率等标识)
* @return 预处理后的文件地址(可能对文件名追加了时长、页数、分辨率等标识)
*/
*/
default
String
handle
(
String
object
,
InputStream
is
)
{
default
String
handle
(
String
object
,
Path
path
)
{
return
object
;
return
object
;
}
}
}
}
basic-common/minio/src/main/java/com/yiring/common/service/impl/FileManageServiceImpl.java
浏览文件 @
47dbe6cd
/* (C) 2023 YiRing, Inc. */
/* (C) 2023 YiRing, Inc. */
package
com
.
yiring
.
common
.
service
.
impl
;
package
com
.
yiring
.
common
.
service
.
impl
;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.yiring.common.core.Minio
;
import
com.yiring.common.core.Minio
;
import
com.yiring.common.service.FileManageService
;
import
com.yiring.common.service.FileManageService
;
import
com.yiring.common.service.UploadProcessService
;
import
com.yiring.common.service.UploadProcessService
;
import
com.yiring.common.util.Commons
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -39,11 +43,20 @@ public class FileManageServiceImpl implements FileManageService {
...
@@ -39,11 +43,20 @@ public class FileManageServiceImpl implements FileManageService {
String
uuid
=
IdUtil
.
fastSimpleUUID
();
String
uuid
=
IdUtil
.
fastSimpleUUID
();
String
object
=
minio
.
buildUploadPath
(
filename
,
""
,
uuid
);
String
object
=
minio
.
buildUploadPath
(
filename
,
""
,
uuid
);
// 将上传的文件转存一份到本地临时目录
Path
tempFile
=
Paths
.
get
(
FileUtil
.
getTmpDirPath
(),
Commons
.
uuid
(),
filename
);
FileUtil
.
mkParentDirs
(
tempFile
);
file
.
transferTo
(
tempFile
);
// 预处理(默认不做任何处理,具体逻辑需自行在外部实现)
// 预处理(默认不做任何处理,具体逻辑需自行在外部实现)
object
=
service
.
handle
(
object
,
file
.
getInputStream
());
object
=
service
.
handle
(
object
,
tempFile
);
// 删除为本次上传进行本地处理所创建的整个临时文件夹目录
// 上传原文件
FileUtil
.
del
(
tempFile
.
getParent
());
minio
.
putObject
(
file
.
getInputStream
(),
file
.
getContentType
(),
object
);
// 上传原文件(如果是转换成了 m3u8 hls 文件则不保存原文件)
String
suffix
=
".m3u8"
;
if
(
filename
.
endsWith
(
suffix
)
||
!
object
.
endsWith
(
suffix
))
{
minio
.
putObject
(
file
.
getInputStream
(),
file
.
getContentType
(),
object
);
}
return
minio
.
getDefaultURI
(
object
);
return
minio
.
getDefaultURI
(
object
);
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论