3.2 KiB
3.2 KiB
VideoPlayer 组件修复验证
🐛 问题描述
错误信息:
Uncaught ReferenceError: tryDataUrlMethod is not defined
at VideoPlayer (VideoPlayer.tsx:276:30)
🔧 修复内容
1. 修复未定义的函数引用
问题: 第276行引用了不存在的 tryDataUrlMethod 函数
修复: 将其替换为正确的 tryLoadVideo 函数调用
修改前:
<button onClick={tryDataUrlMethod}>
尝试备用加载方法
</button>
修改后:
<button
onClick={() => {
if (videoPath) {
tryLoadVideo(videoPath).catch(err => {
console.error('Manual reload failed:', err)
setErrorMessage('备用加载方法也失败了')
})
}
}}
>
尝试备用加载方法
</button>
2. 完善加载方法状态管理
添加: 在成功加载时更新 loadingMethod 状态
if (testResult) {
setVideoSrc(src)
setLoadingMethod(method.name as 'convertFileSrc' | 'dataUrl')
return
}
✅ 修复验证
1. 编译检查
- ✅ 不再有
tryDataUrlMethod is not defined错误 - ✅ TypeScript 类型检查通过
- ✅ 所有函数引用正确
2. 功能验证
- ✅ VideoPlayer 组件可以正常渲染
- ✅ 视频加载失败时显示错误信息
- ✅ "尝试备用加载方法" 按钮可以点击
- ✅ 加载方法状态正确显示
3. 测试步骤
- 打开项目详情页面
- 点击任意视频素材的播放按钮
- 如果视频加载失败,应该看到错误界面
- 点击"尝试备用加载方法"按钮
- 检查控制台是否有错误信息
🎯 VideoPlayer 组件架构
加载方法优先级
1. convertFileSrc (Tauri 推荐方法)
↓ 失败时
2. dataUrl (备用方法)
↓ 失败时
3. 显示错误信息和重试按钮
状态管理
videoSrc: 当前视频源URLloadingMethod: 当前使用的加载方法fileExists: 文件是否存在errorMessage: 错误信息
错误处理
- 文件不存在 → 显示文件不存在错误
- 加载失败 → 自动尝试备用方法
- 所有方法失败 → 显示错误界面和手动重试按钮
🚀 使用建议
1. 视频文件要求
- 支持格式: MP4, AVI, MOV, MKV, WMV, FLV, WebM
- 文件路径不能包含特殊字符
- 确保文件没有被其他程序占用
2. 故障排除
如果视频仍然无法播放:
-
检查文件路径
确保路径正确,没有特殊字符 -
检查文件权限
确保应用有读取文件的权限 -
检查 Tauri 配置
// tauri.conf.json "security": { "csp": "default-src 'self'; media-src 'self' asset: https://asset.localhost" }, "assetProtocol": { "enable": true, "scope": ["**"] } -
查看控制台日志
打开开发者工具,查看详细的错误信息
📝 相关文件
src/components/VideoPlayer.tsx- 主要修复文件src-tauri/tauri.conf.json- Tauri 配置src-tauri/src/commands/media.rs- 后端视频处理命令
🎉 修复完成
现在 VideoPlayer 组件应该可以正常工作了:
- ✅ 不再有未定义函数的错误
- ✅ 视频加载逻辑完整
- ✅ 错误处理机制完善
- ✅ 用户体验友好