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

4
我想使用Java代码读取视频文件(MPEG,AVI或任何流行格式)并将其拆分为多个帧(Jpeg),例如将2秒视频拆分为48张图像(每秒2x24帧)。这在Java中是否可行?另外,我也想知道是否可以使用一组图像创建视频(编辑单独的图像后重新构建视频)。任何帮助都将不胜感激。提前致谢。

1
你可以在Java中使用ffmpeg.exe。 - sushil bharwani
为什么这不能被认为是一个答案??? - sushil bharwani
3个回答

1

你可以使用FFMPEG,它是一个开源的C程序构建的、最快的视频/音频处理库,甚至被大多数流行的视频网站所使用。

使用exec方法调用ffmpeg。


0
你可以使用JMF(http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html)来实现它。

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的作者。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接