c# - SteamVR在统一使用FFMPEG录制时创建加载屏幕闪烁
问题描述
我的 Unity VR 游戏(使用 SteamVR)中集成了一个热图插件。当用户注视游戏中的不同元素时,该插件使用眼动追踪信息生成实时热图。随着热图的生成,整个相机视图(用户的)被热图信息覆盖,并使用 FFMPEG 写入 MP4 文件。
整个过程运行良好。但是我有一个烦人的问题,在录制过程中,用户的相机视图不稳定,并且只有在录制停止时才会闪烁并停止。它打断了他的游戏流畅现在,我已经缩小了导致问题的代码,
public void Write(byte[] data)
{
if (_subprocess == null) return;
_stdin.Write(data);
_stdin.Flush();
}
据我了解,正是在这部分代码中调用了 stdinput 来写入文件系统。因此,我推测问题一定出在访问文件系统上,而在更新方法中写入每一帧时,这又必然会导致一些时间延迟。如果我在这里错了,请纠正我。
在每帧写入期间出现的加载屏幕看起来像上面的样子。它打断了游戏的流畅流程,也使记录变得毫无用处,因为用户一直专注于闪烁而不是实际感兴趣的对象。如果有人在这里对这个问题有所了解,我将不胜感激?
解决方案
访问文件系统总是需要大量时间。尝试将该工作卸载到另一个线程或Coroutine。
推荐阅读
- birt - 如何从Birt中的特定数字开始页码循环?
- ios - Button changing after image moves over it?
- sql - 我需要从现有的 TABLE 创建一个 VIEW 并将一个额外的 COLUMN 映射到该 VIEW
- r - 从 RMarkdown 将多个输出渲染为 PDF
- django - ModuleNotFoundError...没有名为 Google 的模块
- amazon-web-services - 您应该如何在 AWS 中部署无服务器和非无服务器资源的组合?
- typescript - 如何使用 Typescript 在 mongoose findOneAndDelete 中间件上获取文档?
- python - 如何在 Tensorflow 上使用保存的模型保存模型、加载和预测?
- reactjs - 创建以特定前缀开头且不可擦除的输入文本
- sql-server - SSIS - 无法从 ODBC 源永久更改外部列