diff --git a/README.md b/README.md index 676afd2..e997d2c 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ rtsp、rtmp流地址转换成flv浏览器播放 io.github.javpower rtsp-converter-flv-spring-boot-starter - 1.5.9 + 1.5.9.1 ``` ### 第二步:实现interface diff --git a/pom.xml b/pom.xml index 8752ec4..a9b9a48 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 io.github.javpower rtsp-converter-flv-spring-boot-starter - 1.5.9 + 1.5.9.1 rtsp-converter-flv-spring-boot-starter a tool about easy rtsp-converter-flv https://github.com/javpower/easy-flv diff --git a/src/main/java/com/gc/easy/flv/util/FlvUtil.java b/src/main/java/com/gc/easy/flv/util/FlvUtil.java new file mode 100644 index 0000000..59a64d6 --- /dev/null +++ b/src/main/java/com/gc/easy/flv/util/FlvUtil.java @@ -0,0 +1,73 @@ +package com.gc.easy.flv.util; + +import com.alibaba.fastjson.JSONObject; +import org.bytedeco.javacv.FFmpegFrameGrabber; +import org.bytedeco.javacv.Frame; +import org.bytedeco.javacv.FrameGrabber; +import org.bytedeco.javacv.Java2DFrameConverter; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +public class FlvUtil { + + private static BufferedImage getBufferedImageByFrame(String filePath) throws IOException { + FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(filePath); + return getBufferedImageByFrame(grabber); + } + + private static BufferedImage getBufferedImageByFrame(FFmpegFrameGrabber grabber) + throws FrameGrabber.Exception { + grabber.start(); + Frame frame; + frame = grabber.grabImage(); + Java2DFrameConverter converter = new Java2DFrameConverter(); + BufferedImage buffer = converter.getBufferedImage(frame); + grabber.stop(); + return buffer; + } + + public static byte[] getFlvImg(String path) throws Exception { + return bufferedImageToByteArray(getBufferedImageByFrame(path)); + } + + + /** + * 将BufferedImage转换为byte[] + * + * @param image + * @return + */ + public static byte[] bufferedImageToByteArray(BufferedImage image) throws IOException { + ByteArrayOutputStream os = new ByteArrayOutputStream(); + ImageIO.write(image, "jpg", os); + return os.toByteArray(); + } + + /** + * 上传文件 + * + * @param data 文件数据 + * @param url 上传地址 + * @param fileName 文件名称 + * @return + */ + public static JSONObject postFile(byte[] data, String url, String fileName) { + RestTemplate restTemplate = new RestTemplate(); + MultiValueMap paramMap = new LinkedMultiValueMap<>(); + ByteArrayResource contentsAsResource = new ByteArrayResource(data) { + @Override + public String getFilename() { + return fileName; + } + }; + paramMap.add("file", contentsAsResource); + return restTemplate.postForObject(url, paramMap, JSONObject.class); + } +}