Java 从JMF中的视频捕获读取原始数据

Java 从JMF中的视频捕获读取原始数据,java,jmf,Java,Jmf,我正在尝试使用JMF(Java媒体框架)从视频捕获设备读取原始视频帧 我已经成功地编写了“捕获”部分-使用Manager创建的播放器对象,我可以从网络摄像头显示实时视频。但是,我不知道如何创建自定义组件来访问实际帧。这可能是因为到目前为止,Manager已经为我创建了所需的每个类实例 我想首先编写一个显示视频的GUI组件。(我不熟悉AWT/Swing,但基于对其他GUI框架的了解,我想说的是从JPanel派生出来的东西,比如说,当发出重新绘制请求或有新帧可用时,JPanel会绘制视频。)我希望能

我正在尝试使用JMF(Java媒体框架)从视频捕获设备读取原始视频帧

我已经成功地编写了“捕获”部分-使用Manager创建的播放器对象,我可以从网络摄像头显示实时视频。但是,我不知道如何创建自定义组件来访问实际帧。这可能是因为到目前为止,Manager已经为我创建了所需的每个类实例

我想首先编写一个显示视频的GUI组件。(我不熟悉AWT/Swing,但基于对其他GUI框架的了解,我想说的是从JPanel派生出来的东西,比如说,当发出重新绘制请求或有新帧可用时,JPanel会绘制视频。)我希望能够处理每一个新帧并在所有像素上循环x/y。我可以在我的设备上使用raw/RGB格式,但是从(比如)YUV自动转换不会有什么坏处

我不知道从哪里开始。JMF文档建议我从几个不同位置的Processor或DataSink派生类。使用处理器接口似乎有点过分——例如,我不需要播放和定时控制功能;我一开始就不知道如何实现它们。从DataSink派生似乎是一个更简单的选项,没有那么无用的抽象函数。然而,无论哪种情况,我都完全不知道如何:

a) 将组件连接到我的视频捕获数据源
b) 从类中访问实际帧缓冲区

我甚至可能走错了方向;我只是想记录我迄今为止所做的尝试。JMF文档似乎很少,而且主要面向[设计]媒体播放器和转换器

注意:处理库似乎有一个简单的解决方案。我已经看到了一个例子:
x=newimage(captureDevice.getFrame())
,这似乎表明可以通过Image(如果不是中间类型的话)进行像素级访问


但我真的想先看看JMF有多难。

很抱歉,但在这一点上,JMF基本上已经死了。你可能会使用FX,但FX也不是很好

您可以试用我发布的代码,它使用JMF和一个名为FrameGrabber的类。

试试我在这里发布的代码:@JRL:看起来不错,尽管我从来没有机会尝试过。我们不妨把这个问题从痛苦中解脱出来;把这句话变成一个答案,让我接受吧。我想是的。无论如何,我几乎不记得这是干什么用的。过早泄气:)