Skip to content

Commit b0d8cf9

Browse files
authored
Merge pull request #89 from hocgin/v1.0.29
V1.0.29
2 parents c99c5fb + 52fdfce commit b0d8cf9

File tree

14 files changed

+366
-87
lines changed

14 files changed

+366
-87
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<version>${revision}</version>
1717

1818
<properties>
19-
<revision>1.0.28</revision>
19+
<revision>1.0.29</revision>
2020

2121
<java.version>1.8</java.version>
2222
<java.source.version>1.8</java.source.version>

spring-boot-ffmpeg/ffmpeg-spring-boot-autoconfigure/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919
<artifactId>spring-boot-starter-log4j2</artifactId>
2020
<optional>true</optional>
2121
</dependency>
22+
<dependency>
23+
<groupId>org.bytedeco</groupId>
24+
<artifactId>javacv-platform</artifactId>
25+
<version>1.5.6</version>
26+
</dependency>
2227
<!-- Basic -->
2328
<dependency>
2429
<groupId>${project.groupId}</groupId>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package in.hocg.boot.ffmpeg.autoconfiguration.core;
2+
3+
import cn.hutool.core.io.FileUtil;
4+
import in.hocg.boot.ffmpeg.autoconfiguration.utils.ImageUtils;
5+
import lombok.SneakyThrows;
6+
import lombok.experimental.UtilityClass;
7+
import org.bytedeco.ffmpeg.global.avcodec;
8+
import org.bytedeco.javacv.FFmpegFrameRecorder;
9+
import org.bytedeco.javacv.Java2DFrameConverter;
10+
11+
import java.awt.image.BufferedImage;
12+
import java.io.File;
13+
14+
/**
15+
* Created by hocgin on 2022/1/9
16+
17+
* 直播
18+
*
19+
* @author hocgin
20+
*/
21+
@UtilityClass
22+
public class Lives {
23+
24+
@SneakyThrows
25+
public FFmpegFrameRecorder recorder(String rtmp, Boolean audioRecord) {
26+
int frameWidth = 480;
27+
int frameHeight = 270;
28+
29+
FFmpegFrameRecorder recorder = FFmpegFrameRecorder.createDefault(rtmp, frameWidth, frameHeight);
30+
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
31+
recorder.setFormat("flv");
32+
return recorder;
33+
}
34+
35+
@SneakyThrows
36+
public static void main(String[] args) {
37+
File file = FileUtil.file("/Users/hocgin/Desktop/天气v1/PARTLY_CLOUDY_NIGHT.png");
38+
byte[] data = FileUtil.readBytes(file);
39+
40+
FFmpegFrameRecorder recorder = recorder("rtmp://160107.livepush.myqcloud.com/live/sss?txSecret=c57c77436f7379d112680b6423a4e063&txTime=61DC304A", true);
41+
BufferedImage image = ImageUtils.bytesToBufferedImage(data);
42+
Java2DFrameConverter converter = new Java2DFrameConverter();
43+
recorder.start();
44+
while (true) {
45+
recorder.record(converter.getFrame(image));
46+
Thread.sleep(500);
47+
}
48+
// recorder.stop();
49+
}
50+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package in.hocg.boot.ffmpeg.autoconfiguration.core;
2+
3+
/**
4+
* Created by hocgin on 2022/1/9
5+
6+
*
7+
* @author hocgin
8+
*/
9+
public class Main {
10+
public static void main(String[] args) {
11+
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package in.hocg.boot.ffmpeg.autoconfiguration.utils;
2+
3+
import lombok.experimental.UtilityClass;
4+
import org.bytedeco.javacv.Frame;
5+
import org.bytedeco.javacv.Java2DFrameConverter;
6+
import org.bytedeco.javacv.OpenCVFrameConverter;
7+
import org.bytedeco.opencv.opencv_core.IplImage;
8+
9+
import javax.imageio.ImageIO;
10+
import java.awt.image.BufferedImage;
11+
import java.io.ByteArrayInputStream;
12+
import java.io.ByteArrayOutputStream;
13+
import java.io.IOException;
14+
15+
/**
16+
* Created by hocgin on 2022/1/9
17+
18+
*
19+
* @author hocgin
20+
*/
21+
@UtilityClass
22+
public class ImageUtils {
23+
24+
/**
25+
* 图片转数组
26+
*
27+
* @param image
28+
* @param format
29+
* @return
30+
*/
31+
public byte[] bufferedImageToBytes(BufferedImage image, String format) {
32+
ByteArrayOutputStream out = new ByteArrayOutputStream();
33+
try {
34+
ImageIO.write(image, format, out);
35+
} catch (IOException e) {
36+
e.printStackTrace();
37+
}
38+
return out.toByteArray();
39+
}
40+
41+
42+
/**
43+
* 数组转图片
44+
*
45+
* @param bytes
46+
* @return
47+
*/
48+
public BufferedImage bytesToBufferedImage(byte[] bytes) {
49+
try {
50+
return ImageIO.read(new ByteArrayInputStream(bytes));
51+
} catch (IOException e) {
52+
return null;
53+
}
54+
}
55+
56+
public static BufferedImage iplImageToBufferedImage(IplImage src) {
57+
OpenCVFrameConverter.ToIplImage grabberConverter = new OpenCVFrameConverter.ToIplImage();
58+
Java2DFrameConverter converter = new Java2DFrameConverter();
59+
Frame frame = grabberConverter.convert(src);
60+
return converter.getBufferedImage(frame, 1);
61+
}
62+
63+
public static IplImage bufferedImageToIplImage(BufferedImage src) {
64+
OpenCVFrameConverter.ToIplImage grabberConverter = new OpenCVFrameConverter.ToIplImage();
65+
Java2DFrameConverter jconverter = new Java2DFrameConverter();
66+
return grabberConverter.convert(jconverter.convert(src));
67+
}
68+
69+
public static Frame bufferedImageToFrame(BufferedImage src) {
70+
return new Java2DFrameConverter().convert(src);
71+
}
72+
73+
}

spring-boot-logging/logging-spring-boot-autoconfigure/src/main/java/in/hocg/boot/logging/autoconfiguration/core/LoggerAspect.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package in.hocg.boot.logging.autoconfiguration.core;
22

33
import cn.hutool.core.collection.CollectionUtil;
4+
import cn.hutool.core.util.StrUtil;
45
import com.google.common.base.Stopwatch;
56
import in.hocg.boot.logging.autoconfiguration.utils.LoggingUtils;
67
import in.hocg.boot.utils.StringPoolUtils;
@@ -113,6 +114,7 @@ protected void handleLog(Optional<HttpServletRequest> requestOpt, ProceedingJoin
113114
ApiOperation apiOperation = method.getAnnotation(ApiOperation.class);
114115
enterRemark = apiOperation.value();
115116
}
117+
enterRemark = StrUtil.emptyToDefault(enterRemark, "未填写");
116118

117119
LoggerEvent logger = new LoggerEvent().setMapping(mapping)
118120
.setCurrentUser(this.getCurrentUser().orElse(username))

spring-boot-logging/logging-spring-boot-autoconfigure/src/main/java/in/hocg/boot/logging/autoconfiguration/core/UseLogger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@
2020
*
2121
* @return
2222
*/
23-
String value() default "未填写";
23+
String value() default "";
2424
}

spring-boot-mybatis-plus/mybatis-plus-spring-boot-autoconfigure/src/main/java/in/hocg/boot/mybatis/plus/autoconfiguration/core/struct/basic/AbstractService.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,16 @@ boolean has(SFunction<T, ?> field, Object fieldVal,
6666
*/
6767
<R> R as(T entity, Class<R> clazz);
6868

69+
/**
70+
* 实体转换
71+
*
72+
* @param entity 实体
73+
* @param convert 转换函数
74+
* @param <R> 实体
75+
* @return 转换目标实体
76+
*/
77+
<R> R as(T entity, SFunction<T, R> convert);
78+
6979
/**
7080
* 实体转换
7181
*

spring-boot-mybatis-plus/mybatis-plus-spring-boot-autoconfigure/src/main/java/in/hocg/boot/mybatis/plus/autoconfiguration/core/struct/basic/AbstractServiceImpl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ public <R> R as(T entity, Class<R> clazz) {
7171
return as(entity, clazz, useConvert.value());
7272
}
7373

74+
@Override
75+
public <R> R as(T entity, SFunction<T, R> convert) {
76+
return convert.apply(entity);
77+
}
78+
7479
@Override
7580
public <R> R as(T entity, Class<R> clazz, Class<?> beanClass) {
7681
if (clazz.isInstance(entity)) {
@@ -83,6 +88,6 @@ public <R> R as(T entity, Class<R> clazz, Class<?> beanClass) {
8388
}
8489
Method method = methods.get(0);
8590
Object bean = SpringUtil.getBean(beanClass);
86-
return ReflectUtil.invoke(bean, method, entity);
91+
return as(entity, (T t) -> ReflectUtil.invoke(bean, method, t));
8792
}
8893
}

spring-boot-samples/ffmpeg-spring-boot-sample/src/test/java/in/hocg/boot/ffmpeg/FfmpegTests.java

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)