【问题标题】:How to extract a frame from video using Java如何使用Java从视频中提取帧
【发布时间】:2017-07-07 18:41:19
【问题描述】:

有没有解决“使用核心库从Java中的视频文件中提取帧而不导入外部库”的解决方案?

说我在 Java AWT 库中看到了ImageBufferedStrategyBufferCapabilities

【问题讨论】:

    标签: java video-processing


    【解决方案1】:

    Java Media Framework API (JMF) 支持音频、视频和其他基于时间的媒体操作,无需使用任何第三方库。

    Seeking frames inside a movie with JMF.

    xuggler 是一个很好的第三方库,被广泛使用。

    【讨论】:

    • 仅供参考,JMF 早就死了。 Xuggler 的工作量很大。
    【解决方案2】:

    我认为你应该使用 Xuggler from here 或者你可以找到它 in maven

    在 github 仓库中是 a sample 下的 demos 文件: DecodeAndCaptureFrames.java

    【讨论】:

    • OP 要求without importing external libraries "
    【解决方案3】:

    根据this answer 的另一个问题,您可以通过利用JavaFX 的功能在没有外部库的情况下做到这一点。

    引用下面的原始答案:

    您可以使用 MediaView 的 snapshot()。首先连接一个媒体播放器 到 MediaView 组件,然后使用 mediaPlayer.seek() 来寻找 视频位置。然后你可以使用下面的代码来提取 图片框:

    int width = mediaPlayer.getMedia().getWidth();
    int height = mediaPlayer.getMedia().getHeight();
    WritableImage wim = new WritableImage(width, height);
    MediaView mv = new MediaView();
    mv.setFitWidth(width);
    mv.setFitHeight(height);
    mv.setMediaPlayer(mediaPlayer);
    mv.snapshot(null, wim);
    try {
        ImageIO.write(SwingFXUtils.fromFXImage(wim, null), "png", new File("/test.png"));
    } catch (Exception s) {
        System.out.println(s);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 2017-11-01
      • 1970-01-01
      • 2014-02-27
      • 2023-03-30
      相关资源
      最近更新 更多