Skip to main content

调试超时

以下错误:

bash
A delayRender() was called but not cleared after 28000ms. See https://remotion.dev/docs/timeout for help. The delayRender was called
bash
A delayRender() was called but not cleared after 28000ms. See https://remotion.dev/docs/timeout for help. The delayRender was called

通常发生在创建了 delayRender() 句柄后未清除的情况下。Remotion 将等待进行截图,但默认情况下在 30 秒后会中止以避免永远挂起。

可能的原因

未调用 continueRender()

您的代码可能存在问题,即调用了 delayRender() 但从未清除它。这将导致 Remotion 在开始渲染之前永远等待,并导致超时消息。

解决方法:检查您的代码,并确保调用了 continueRender()

没有网络连接或防火墙问题

如果您依赖网络资产(如字体、图像、视频或音频),但没有网络连接或请求被防火墙阻止。特别要注意在云中进行渲染时,例如 Amazon VPC 可能会阻止出站网络请求并导致超时。

解决方法:确保您需要的所有网络资源都可以访问。

内存压力

当并发设置过高时,Chrome 可能决定不加载某些 <Video />,这可能导致超时错误。

我们认为这是 Remotion 中的一个 bug,并计划在未来修复它。

解决方法:将 concurrency 降低到一个 Chrome 可以加载所有视频的水平。

旧版本的 Remotion

旧版本的 Remotion 存在可能导致超时的 bug。 特别是 1.x 版本可能在导入大型资产时超时

解决方法:使用 npm run upgrade 升级到最新的 Remotion 版本。

需要下载视频

如果使用 <OffthreadVideo> 渲染视频,则需要在视频可以被读取之前下载视频。如果视频很大且下载时间超过超时时间,则会触发超时。在这种情况下,您应该增加超时时间

不够有帮助?

提交问题 并尝试以一种我们可以重现的方式描述您的问题。我们会尽力帮助您。

"使用 src http://localhost:3000/proxy 加载 <Img>"

请查看这里以获取有关此特定 超时 消息的信息。

增加超时时间v2.6.3

有时,您无法避免一个帧渲染时间超过 30 秒。例如:

  • 昂贵的 WebGL 场景
  • 数据的昂贵预处理
  • 需要等待视频下载完成

您可以增加默认超时时间:

添加标签以帮助调试v2.6.13

如果遇到超时问题而不知道其来源,您可以将标签作为参数添加:

tsx
delayRender("Fetching data from API...");
tsx
delayRender("Fetching data from API...");

如果调用超时,错误消息中将引用该标签:

Uncaught Error: A delayRender() "Fetching data from API..." was called but not cleared after 28000ms. See https://remotion.dev/docs/timeout for help. The delayRender was called
Uncaught Error: A delayRender() "Fetching data from API..." was called but not cleared after 28000ms. See https://remotion.dev/docs/timeout for help. The delayRender was called

另请参阅