在java中将视频分割为图像帧

时间:2011-12-30 07:03:28

标签: java image video

我想使用Java代码阅读视频(MPEG,AVI或任何流行格式)并将其拆分为无帧(Jpeg),例如将2秒视频分成48个图像(2X24帧/秒)。这在java中是否可行。事后我还想知道是否可以使用图像阵列创建视频(在编辑单个图像后重建视频)。 任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:1)

您可以使用FFMPEG,这是一个开源的C程序构建,以及最快的视频/音频处理库,甚至是大多数热门视频网站使用的。

使用exec方法调用ffmpeg。

答案 1 :(得分:0)

您可以使用JMF(http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html)。

答案 2 :(得分:0)

轻松使用velvet-video

从视频文件获取帧作为图像:

IVelvetVideoLib lib = VelvetVideoLib().getInstance();
try (IDemuxer demuxer = lib.demuxer(new File("/some/path/example.mp4"))) {
    IDecoderVideoStream videoStream = demuxer.videoStream(0);
    IFrame videoFrame;
    while ((videoFrame = videoStream.nextFrame()) != null) {
        BufferedImage image = videoFrame.image();
        // Use image as needed...
    }
}  

根据图像阵列组成视频

BufferedImage[] images = ...
IVelvetVideoLib lib = VelvetVideoLib().getInstance();
try (IMuxer muxer = lib.muxer("matroska")                    // specify you format
    .video(lib.videoEncoder("libaom-av1").bitrate(800000))   // specify you codec
    .build(new File("/some/path/output.mkv"))) {
         IEncoderVideoStream videoStream = muxer.videoStream(0);
         for (BufferedImage image : images) {
             videoStream.encode(image);
         }
}    

免责声明:我是velvet-video

的作者