gpt4 book ai didi

java - 无需任何外部 API 即可处理视频

转载 作者:行者123 更新时间:2023-12-01 13:41:01 27 4
gpt4 key购买 nike

如何在没有任何外部API的情况下用Java处理视频?

我有一个 mpeg4 或 mpeg2 视频,我想在 JPanel 中查看,逐帧读取每一帧,然后使用 paintComponent() 显示帧。在 Graphics g 中将每个文件显示为 BufferedImage

我的问题是如何从视频文件中获取 BufferedImage 类的数组?

最佳答案

您当然可以使用 Java 处理视频,而无需依赖外部库。您需要付出大量的编码工作,因此请预先警告。

如果您正在解码 MPEG-2 文件,它可能是一个程序流,因此您需要编写代码来将其分开。 MPEG-4 第 2 部分视频可能会到达 MP4 容器中,这将需要大量代码来分解(不是太难,只是很多细节)。所以这只是容器;里面将是压缩的视频和音频 block 。

现在您需要解码 MPEG-2 或 MPEG-4 视频。这将需要从比特流中解析可变长度代码并恢复语法元素。对于帧内,这将为您提供应用于宏 block 流的重建数据。您将结合 DCT 系数、差分编码、反量化因子、之字形扫描模式、离散余弦变换以及可能的后处理滤波器等内容来恢复原始图像。这仅适用于帧内;然后是帧间,它们也应用运动 vector 并从先前解码的帧复制数据。

获取一帧后,你会发现它处于YUV色彩空间中。您可能需要手动将其转换为 RGB 色彩空间,以便将其绘制到 BufferedImage 上。

完全有可能可以自己实现所有这些。 或者您可以找到一个合适的 Java 友好多媒体库,并配有自己的 API,为您完成繁重的工作。

关于java - 无需任何外部 API 即可处理视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20776505/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com