Java视频处理库
我想从视频中提取帧并对其应用一些过滤器,如gabor/hough等。哪个Java库最适合处理各种视频编码?我一直在看GStreamer、JMF、Xuggler等,但无法决定哪一个是最好的。我还希望编辑帧,并使用新帧制作视频。如果您希望执行低级别操作,例如提取帧并对其进行操作,那么Xugler将是最佳选择,因为API是围绕这一低级别而设计的。它在ffmpeg上工作,因此可以处理所有类型的视频编码Java视频处理库,java,video-processing,gstreamer,jmf,xuggle,Java,Video Processing,Gstreamer,Jmf,Xuggle,我想从视频中提取帧并对其应用一些过滤器,如gabor/hough等。哪个Java库最适合处理各种视频编码?我一直在看GStreamer、JMF、Xuggler等,但无法决定哪一个是最好的。我还希望编辑帧,并使用新帧制作视频。如果您希望执行低级别操作,例如提取帧并对其进行操作,那么Xugler将是最佳选择,因为API是围绕这一低级别而设计的。它在ffmpeg上工作,因此可以处理所有类型的视频编码 不要在任何事情上使用JMF,它是旧的、过时的和有缺陷的——GStreamer很好,但API更适合于播放
不要在任何事情上使用JMF,它是旧的、过时的和有缺陷的——GStreamer很好,但API更适合于播放视频而不是操纵帧。JMF是一个不错的选择。但是,如果处理时间在代码中很重要,那么最好使用Xugler。显然,JMF比Xuggler更通用。Xuggler,是的。但是如果你要做大量的图像处理工作,你应该去做。这个库使用Xugler作为它的依赖项,但这并不是它的全部功能。考虑一下,在不缺乏Java速度的情况下拥有Opencv的功能。此外,它所需要的只是添加一个maven依赖项,您就可以开始了。代码量也减少了 注意:我仍在审查图书馆,并将不断更新我的答案 介绍视频:你可以试试。它使用JavaCV进行视频编码和设备访问,但所有图像处理算法都是纯Java的 加载视频并实时处理帧非常容易,如下面的边缘检测示例所示 源代码:
import static marvin.MarvinPluginCollection.*;
public class SimpleVideoProcessing extends JFrame implements Runnable{
private MarvinVideoInterface videoAdapter = new MarvinJavaCVAdapter();
private MarvinImagePanel videoPanel = new MarvinImagePanel();
private MarvinImage videoFrame, videoOut = new MarvinImage(640,480);
public SimpleVideoProcessing() throws MarvinVideoInterfaceException{
super("Simple Video Processing using Marvin");
add(videoPanel);
// Load video file and start the processing thread
videoAdapter.loadResource("./res/snooker.wmv");
new Thread(this).start();
setSize(640,500);
setVisible(true);
}
public void run() {
try {
while(true){
// Request, process and show the video frame.
videoOut.clear();
videoFrame = videoAdapter.getFrame();
prewitt(videoFrame.clone(), videoOut);
videoPanel.setImage(videoOut);
}
} catch (MarvinVideoInterfaceException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws MarvinVideoInterfaceException {
new SimpleVideoProcessing().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
谢谢我猜是Xuggler吧。它看起来还可以手动配置OpenCV for Java-这是否更好?我还没有使用OpenCV,因此无法发表评论,但可能还是会倾向于Xugler,因为它是一个纯Java API,应该会使任务更简单。