# 本地录制修复 - 快速参考 ## 🔍 问题 本地录制总是失败,blob 为空 ## 🎯 根本原因 录制启动太晚(1200ms),在对方挂断后才启动,此时 SDK 已销毁视频轨道 ## ✅ 解决方案 ### 1. 缩短启动延迟 ``` 1200ms → 500ms ``` ### 2. 快速重试 ``` 300ms 间隔,最多 10 次 ``` ### 3. 立即停止录制 ``` 监听 USER_LEAVE 事件,立即调用 beginStopNow() ``` ### 4. 缩短停止延迟 ``` 300ms → 100ms ``` ## 📊 测试检查清单 ### 启动阶段(接通后 1 秒内) - [ ] 看到 "尝试启动本地录制" - [ ] 看到 "视频元素已就绪" - [ ] 看到 "✅ 本地录制已成功启动" ### 录制阶段(每 250ms) - [ ] 看到 "收到数据块,大小: XXX" - [ ] 数据块数持续增加 ### 停止阶段(挂断时) - [ ] 看到 "检测到通话结束事件" - [ ] 看到 "已收集数据块: X"(X > 0) - [ ] 看到 "生成 Blob: XXX bytes"(不是 null) - [ ] 看到 "本地录制已上传并关联到通话记录" ## 🚨 常见问题 ### 问题:数据块数为 0 **原因**:录制启动太晚或视频流无效 **检查**: ```javascript // 控制台执行 document.querySelectorAll('video').forEach((v, i) => { console.log(`Video ${i}:`, v.readyState, v.srcObject) }) ``` ### 问题:Blob 为 null **原因**:通话时间太短(< 2 秒) **解决**:保持通话至少 5 秒 ### 问题:录制启动失败 **原因**:找不到视频元素 **检查**:是否看到 "未找到视频元素" 日志 ## 📝 修改的文件 1. `admin/src/components/chat-dialog/index.vue` 2. `admin/src/utils/call-local-recorder.ts` ## 🔗 详细文档 - `LOCAL_RECORDING_DEBUG_GUIDE.md` - 完整调试指南 - `RECORDING_FIX_SUMMARY.md` - 修复总结 - `admin/test-local-recording.html` - 测试工具 ## 💡 测试建议 1. 清除浏览器缓存 2. 打开控制台(F12) 3. 发起视频通话 4. 保持通话 5 秒以上 5. 正常挂断 6. 检查日志和录制结果