如何在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
相关产品推荐
相关产品推荐

