从实时视频设备捕获图像以供基于Java的应用程序使用的最佳方法是什么?
时间:2020-03-06 14:32:55 来源:igfitidea点击:
我正在研究用于某些情况的半实时检测的图像处理问题。我的目标是使实时视频以某种方式以我的Java代码中的Motion JPEG帧到达。
我熟悉Java Media Framework,可悲的是,我认为我们可以认为这是一个有效的失效API。我也熟悉Axis Box,虽然我真的很喜欢他们的解决方案,但是希望对我的特定兴趣点提供任何关键的反馈。
这是我为讨论目的定义"最佳"的方式:
- 延迟-如果要使用此视频流控制摄像机,则希望将往返延迟保持在100毫秒以内。这是从我的控件输入到看到可见变化之间的时间来衡量的。稍后再编辑:要记住的另一件事是,摄像机控制可能是手动和自动(事件触发器)的组合。即使高质量提要是单独存档的,我们也需要立即查看这些图片。
- 成本-免费/开源总比不免费要好。
- 可调编解码器参数-我需要能够在某些情况下调整编解码器。有时,高速低分辨率流实际上更易于处理。
- 与Java的"集成"-将此解决方案连接到我的代码有多少麻烦?我是否通过套接字发送数据包?到达网址?安装Direct3D / JNI组合?
- Windows / Linux /两者? -我更喜欢与操作系统无关的解决方案,因为我必须交付多种操作系统,但是可能有一种解决方案最适合其中一种,但不适用于另一种。
注意:我知道其他图像/视频捕获编解码器,这不是此问题的重点。由于丢失帧精度,我对流API(例如MPEG4)特别不感兴趣。但是,如果我的问题有一个解决方案可以提供另一个精确到帧的数据流,请发出提示。
回答这个问题:在这一点上,我非常倾向于购买Axis视频编码器之类的设备,而不是试图直接在软件或者PC上捕获视频。但是,如果有人有其他选择,我很想听听他们的意见。
解决方案
我们是否看过Processing.org?它基本上是用于开发"艺术"应用程序和物理计算平台的简化应用程序框架,但是它基于Java,我们可以深入了解其下的"真实" Java。
我想到的原因是,有多个用于处理的视频库,它们基本上是Java组件(至少我认为它们是该站点具有我们可能需要的所有技术信息)。有一个有关在Eclipse IDE中使用处理库和工具的教程。关于视频捕获和处理的例子也很多。
即使我们不能直接使用这些库,"处理"也是计算算法的绝佳语言/环境。那里有许多很棒的图像和视频捕获以及实时处理的例子。
关于JMF的死刑,我们是否知道FMJ的实施?我不知道它是否有资格成为"最佳"解决方案,但是可能值得增加讨论。
FMJ绝对可以捕获视频并将其转换为MJPEG帧。