You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Colab中使用Promise实现每5秒停止摄像头录制

实现方案

你只需将原有绑定点击事件的停止Promise替换为setTimeout实现的定时Promise即可,修改后的代码如下:

// 等待点击触发开始录制
await new Promise((resolve) => {
  capture.onclick = resolve;
});
recorder.start();
capture.replaceWith(stopCapture);
// 等待5秒后自动触发停止逻辑,无需手动点击
await new Promise((resolve) => setTimeout(resolve, 5000));

recorder.stop();

如果你需要同时保留手动点击停止的能力,也可以用Promise.race实现两个触发条件的竞态,先触发的条件会优先结束等待:

// 等待点击触发开始录制
await new Promise((resolve) => {
  capture.onclick = resolve;
});
recorder.start();
capture.replaceWith(stopCapture);
// 手动点击停止和5秒自动停止二选一,先触发的生效
await Promise.race([
  new Promise((resolve) => stopCapture.onclick = resolve),
  new Promise((resolve) => setTimeout(resolve, 5000))
]);

recorder.stop();

逻辑说明

  • setTimeout(resolve, 5000)会在5000毫秒(即5秒)后自动执行resolve函数,结束Promise的等待状态,直接执行后续的停止录制逻辑
  • 如果你需要循环录制多段每5秒的视频,把上述录制逻辑套入循环结构,每次停止录制后重新初始化录制实例即可

内容的提问来源于stack exchange,提问作者Mak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 14:45:03