React中MediaRecorder无法捕获Konva Canvas更新内容的问题求助
React中MediaRecorder无法捕获Konva Canvas更新内容的问题求助
我正在用react-konva构建一个简易视频制作工具,通过操作Konva画布并使用MediaRecorder来录制内容。我想实现一个简单的字幕功能——按顺序显示一组字符串,每个字幕之间间隔1.5秒(流程是:开始录制 → 切换所有字幕 → 停止录制)。
我已经完成了功能开发,但遇到了一个奇怪的问题:
- 录制的视频只有静态背景和第一个字幕,时长也很短(约1秒)。
- 但如果我在录制过程中手动用鼠标拖动文本,录制就完全正常了!
问题复现步骤
我做了一个可复现的示例:
- 点击开始录制,等待字幕切换完成后下载视频。
- 再试一次,但这次录制时用鼠标拖动文本——视频就能正常录制所有内容!
我已尝试的解决方案
为了让画布更新能同步到MediaStream,我试过这些方法:
- 调用
clearCache()、draw()、batchDraw()方法 - 触发
dragstart、dragmove、dragend事件 - 每次字幕更新后强制让元素位置微调(
node.x(node.x() + 1)) - 每次字幕更新后用
toDataURL()把画布保存为图片(保存的图片里能看到正确的字幕,但录制的视频还是没有更新后的内容)
这些方法都没用。我搞不懂为什么手动拖动文本就能正常录制,但程序化更新却不行。
有没有人能帮我分析下原因,或者告诉我怎么确保所有字幕变化都能被正确录制?
备注:内容来源于stack exchange,提问作者Matija Špeletić
相关产品推荐
相关产品推荐

