调试超时
以下错误:
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 场景
- 数据的昂贵预处理
- 需要等待视频下载完成
您可以增加默认超时时间:
- 在 Remotion Studio 渲染对话框中的 "高级" 选项下
- 使用
--timeout
CLI 标志 - 在
renderStill()
、renderFrames()
、getCompositions()
、renderMedia()
、renderMediaOnLambda()
、renderStillOnLambda()
、renderStillOnCloudRun()
和renderMediaOnCloudRun()
中使用timeoutInMilliseconds
选项 - 在配置文件中使用
Config.setDelayRenderTimeoutInMilliseconds()
选项,如果您在 CLI 上渲染 - 对于使用
timeoutInMilliseconds
选项的单独的delayRender()
调用v4.0.140 <Img>
、<Audio>
、<Video>
和<IFrame>
标签支持delayRenderTimeoutInMilliseconds
属性,以控制这些组件进行的delayRender()
调用的timeoutInMilliseconds
值v4.0.140
添加标签以帮助调试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