Java / Scala 中的简单视频解码

发布于 2024-10-20 15:17:30 字数 142 浏览 2 评论 0原文

有没有一种简单的方法可以在 java/scala 中解码视频?

我只需要框架,并且必须用它们进行一些计算。无需快速或实时。

我尝试了处理,但效果不佳,并且无法将其嵌入到我的项目中。我还看到了 jmf,但它自 2004 年以来似乎不再维护。

Is there an easy way to decode video in java/scala?

I need just the frames and have to do some computations with them. No need to be fast or real time.

I tried processing which worked but not nice and i wasn't able to embedded it in my project. I saw also jmf but it seams to be no longer maintained since 2004.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一紙繁鸢 2024-10-27 15:17:30

看看 XugglerFMJ(它试图从 JMF 中断的地方继续,但看起来半死不活)。

Take a look at Xuggler or FMJ (which tried to pick up where JMF left off, but looks semi-dead).

奶茶白久 2024-10-27 15:17:30

您可以使用 JCodec (http://jcodec.org) 中的“FrameGrab”类。
目前它支持 MP4(ISO BMF、QuickTime)文件格式,内含 AVC(H.264)视频。
对于只有一帧的

int frameNumber = 150;
BufferedImage frame = FrameGrab.getFrame(new File("filename.mp4"), frameNumber);
ImageIO.write(frame, "png", new File("frame_150.png"));

JCodec,可在 Maven 中使用:

<dependency>
    <groupId>org.jcodec</groupId>
    <artifactId>jcodec</artifactId>
    <version>0.1.3</version>
</dependency>

或在其网站上下载。

You can use 'FrameGrab' class from JCodec (http://jcodec.org).
Right now it supports MP4 ( ISO BMF, QuickTime ) file format with AVC ( H.264 ) video inside.
For just one frame

int frameNumber = 150;
BufferedImage frame = FrameGrab.getFrame(new File("filename.mp4"), frameNumber);
ImageIO.write(frame, "png", new File("frame_150.png"));

JCodec is available in maven:

<dependency>
    <groupId>org.jcodec</groupId>
    <artifactId>jcodec</artifactId>
    <version>0.1.3</version>
</dependency>

or as a download on it's web site.

找回味觉 2024-10-27 15:17:30

使用 velvet-video 可以轻松从压缩为 FFMpeg 支持的任何格式的视频文件中获取帧:

IVideoLib lib = new FFMpegVideoLib();
IDemuxer demuxer = lib.demuxer(new File("path-to-video-file"));
while(demuxer.nextPacket(frame -> {
    BufferedImage image = frame.image();
    // You get frames as BufferedImages here
}, null));

免责声明:我是velvet-video的作者。

It's easy to get frames from a video file compressed to any format supported by FFMpeg using velvet-video:

IVideoLib lib = new FFMpegVideoLib();
IDemuxer demuxer = lib.demuxer(new File("path-to-video-file"));
while(demuxer.nextPacket(frame -> {
    BufferedImage image = frame.image();
    // You get frames as BufferedImages here
}, null));

Disclaimer: I am the author of velvet-video.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文