java - 使用 matlab 或 java 的 144Hz 监视器的高帧率问题

标签 java matlab video processing frame-rate

我正在尝试为 EEG 研究制作视觉刺激。视频只是黑帧和白帧之间的闪烁,并且交替发生的频率范围为:12Hz、24Hz、48Hz、72Hz。

我们的显示器有 144Hz 的刷新率,电脑也很花哨,我正在用示波器测量视频的成功与否以确保准确性。因此,硬件应该不是问题;从理论上讲,最多可以达到显示器刷新率的一半。然而,我在 Java 和 MatLab 上都失败了。

我试过使用 MatLab:

1) 使用 imwrite() 制作 gif

2) 使用VideoWriter

3) 使用 getframe() 和 movie2avi()。

在所有这些方法中,都声明了超高帧率,我可以在我的命令窗口中看到所有帧都是在运行期间插入的。但是,最终输出文件不会超过 48Hz。

除此之外,48Hz 以及 24Hz 甚至 12Hz 文件也存在严重的帧时序问题。

我还尝试使用 Processing 的 MovieMaker 制作文件:我将帧速率设置为 72Hz——输入 72 个 .png 文件的列表作为帧——它应该输出一个以 72Hz 闪烁的 1 秒文件。

但是,结果仅在 48Hz 时出现,而且帧的时序也不可靠。

如果我没有穷尽搜索,我就不会在这里发帖;我真的没主意了。 MatLab 和 Processing 都是实现这种高 fps 文件的推荐方法,即使闪烁频率较低,它们也有很大的时序问题。如果有人对提高高频闪烁的时间保真度(图形设置?编解码器?)或如何使其一直达到 72Hz 有任何建议,我们将不胜感激!

正如我所说,我只用过Processing/Java和MatLab,所以请大家推荐其他平台。

最佳答案

这不是答案。不过,它需要的不仅仅是评论框,所以请多多包涵。

涉及到一些基本问题:

  • 简单地绘制到您的 OS/Graphics 组合公开的任何设施,根本不能保证绘制的元素从下一帧开始出现(在我所知道的所有系统中)。
  • 这仅仅源于这样一个事实,即所有这些组合显然不是为了脑电图刺激,而是为了通过视觉理解消费
  • 许多组合提供较低级别的设施(例如 OpenGL),它们确实具有这样的 promise ,但会带来其他问题,其中之一是不太舒适的编程环境
  • 对于大多数操作系统/硬件组合,维持这种刺激可能并非微不足道 - 144 赫兹转换为不到 7 毫秒 - 一个时隙,可能会被操作系统的单个错误调度决策或需要即使在快速旋转的磁盘上也会出现双重读取。您需要瞄准一些面向实时的操作系统方言。

编辑

重新阅读您的问题后,我发现您使用的是 Java。忘了它。一次 GC 中断很容易超过 7 毫秒。

关于java - 使用 matlab 或 java 的 144Hz 监视器的高帧率问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19554129/

相关文章:

MATLAB 轴具有恒定值

java - 在哪里可以从适用于 Android 的相机示例应用程序获取流式(实时)视频和音频?

html - 如何在网页中加载JWPlayer

java - 静态嵌套类生命周期

java - 如何让一个对象从Java中的LinkedList中删除自己?

java - 基于 SWIG 的 Java 接口(interface),适用于 OpenGL ES 2.0 和 EGL(适用于 SWT)

java - Vaadin框架播放视频

java - 在 jersey 2.x 中添加标题

matlab - 检测到分段违规 - matlab

matlab - 如果已经执行了 MIL(循环中的模型)仿真,为什么在 HIL(循环中的硬件)之前使用 SIL(循环中的软件)?