如何在 java 中将视频字节调整为更小的分辨率?

How can i resize the video bytes to smaller resolution in java?

我目前正在使用 REST API。我一直在尝试通过 java 将接收到的视频字节调整为更小的分辨率。我可以在 java 中使用 BufferedImage 和 ImageIO 调整图像大小,但无法对视频字节执行相同的操作。

这是调整图像大小的代码。请建议我们如何调整视频字节大小

private ByteArrayOutputStream resizeImage(byte[] x) throws IOException {
          BufferedImage originalImage = ImageIO.read(new ByteArrayInputStream(x));
          ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
          if (x.length / 1024 > 500) {
                 int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
                 BufferedImage resizedImage = new BufferedImage(1280, 720, type);
                 Graphics2D g = resizedImage.createGraphics();
                 g.drawImage(originalImage, 0, 0, 1280, 720, null);
                 g.dispose();
                 ImageIO.write(resizedImage, "jpeg", outputStream);
          } else {
                 ImageIO.write(originalImage, "jpeg", outputStream);
          }
          return outputStream;
   }

我也需要一些类似的视频逻辑,以便我可以将压缩或更小分辨率的视频字节流作为响应发回

我以某种方式找到了解决问题的方法。我使用了一些工具并构建了一个自定义项目来处理此类问题。

此神器可用于调整图像和视频的大小以降低分辨率且质量非常好

URL 用于项目依赖(可用于 Maven、Gradle、Scala 等):Click Here

或者您可以将以下依赖项添加到 pom.xml

<dependency>
<groupId>io.github.techgnious</groupId>
<artifactId>IVCompressor</artifactId>
<version>1.0.1</version>
</dependency>

用法::

    IVCompressor compress=new IVCompressor();
    byte[] Imageoutput=compress.resizeImage(data, fileFormat, resolution); //for image compression
    byte[] VideoOutput=compress.reduceVideoSize(videoData, fileFormat, resolution);//for video compression

它可以在默认设置下将 25MB 的视频转换为 300-400kb。它有许多其他带有自定义设置的方法。请查看此页面 IVCompressor 了解更多信息。谢谢