imeepos
|
d58499b564
|
fix: 修复火山云 API 响应格式解析问题
问题修复:
- 修复响应结构不匹配导致的解析失败
- 更新数据结构以匹配火山云 API 的实际响应格式
- 添加调试日志以便排查 API 响应问题
技术改进:
- 重构响应数据结构,支持火山云嵌套格式 (ResponseMetadata + Result)
- 更新前端类型定义和数据访问路径
- 添加详细的响应解析错误信息
- 保持向后兼容性
响应格式变更:
- 原格式: { code, message, data, ... }
- 新格式: { ResponseMetadata: {...}, Result: { code, message, data, ... } }
现在 OmniHuman 主体识别功能应该可以正确解析火山云 API 响应了!
|
2025-08-05 18:36:46 +08:00 |
imeepos
|
c196659869
|
feat: 添加 OmniHuman 主体识别功能
新增功能:
- ✅ 在 VolcanoVideoService 中添加 RealmanAvatarPictureCreateRoleOmniSubmitTask API
- 支持识别图片中是否包含人、类人、拟人等主体
- 完整的前后端集成,包括 Rust 后端服务和 TypeScript 前端接口
- 新增 OmniHumanDetectionTool 工具页面,提供直观的用户界面
- 支持图片上传、预览、识别结果展示等完整流程
技术实现:
- 后端: 在 VolcanoVideoService 中实现火山云 API 调用
- 前端: 新增专用工具页面,集成到工具列表和路由系统
- 类型定义: 完整的 TypeScript 类型支持
- 错误处理: 完善的错误处理和用户反馈机制
API 规格:
- Action: RealmanAvatarPictureCreateRoleOmniSubmitTask
- Version: 2024-06-06
- 请求参数: req_key, image_url
- 响应数据: 包含识别结果、处理后图片、算法返回数据等
|
2025-08-05 18:20:00 +08:00 |
imeepos
|
6c43e6f08b
|
feat: 实现视频生成完成后自动下载并上传到云端服务
新增功能:
1. 视频生成完成后自动下载到本地临时文件
2. 自动上传到云端S3服务
3. 将S3 URL转换为CDN HTTPS地址
4. 支持防盗链绕过的视频下载
5. 完善的错误处理和fallback机制
技术实现:
- download_and_upload_video(): 主要流程控制
- download_video_to_file(): 下载视频到本地临时文件
- 使用CloudUploadService上传到S3
- convert_s3_to_cdn_url(): S3到CDN URL转换
- 临时文件自动清理机制
用户体验:
- 视频生成完成后自动获得可访问的CDN链接
- 无需手动下载和上传操作
- 支持原始URL作为fallback保证可用性
- 详细的日志记录便于问题排查
安全特性:
- 防盗链绕过HTTP头设置
- 临时文件安全清理
- 错误情况下的资源释放
- 超时控制防止长时间阻塞
|
2025-07-31 14:03:51 +08:00 |
imeepos
|
1a504fa4b0
|
fix: 修复任务状态同步问题 - 连续失败时标记任务为失败
问题修复:
- API查询失败时只打印警告,没有更新数据库状态
- 前端显示运行中,但后端日志显示连续失败
- 任务会一直轮询直到超时,用户体验差
技术实现:
- 添加连续失败计数器 (consecutive_failures)
- 连续失败3次后自动标记任务为失败状态
- 立即更新数据库记录,前端能及时看到失败状态
- 避免无意义的长时间轮询
修复逻辑:
- 成功时重置失败计数器
- 失败时增加计数器
- 达到上限时标记为失败并退出轮询
- 错误类型: API_CONSECUTIVE_FAILURES
用户体验改进:
- 快速反馈任务失败状态(30秒内)
- 避免长时间显示运行中的假象
- 明确的失败原因和错误代码
|
2025-07-31 13:17:55 +08:00 |
imeepos
|
65412e80b7
|
fix: 修复S3 URL转换问题 - 添加CDN URL转换功能
问题修复:
- 火山云API不支持S3协议URL (s3://...),需要HTTPS URL
- 云上传服务返回S3 URI格式,需要转换为可访问的CDN URL
技术实现:
- 添加convert_s3_to_cdn_url方法,将S3 URL转换为CDN URL
- 支持s3://ap-northeast-2/modal-media-cache/格式转换为https://cdn.roasmax.cn/
- 支持通用s3://格式和amazonaws.com格式的URL转换
- 在文件上传后立即转换URL格式,确保API调用使用正确的HTTPS URL
修复的错误:
- 400 Bad Request: unsupported protocol scheme 's3'
- 错误原因: 使用了S3协议URL而非HTTPS URL
- 解决方案: 自动转换S3 URL为可访问的CDN HTTPS URL
URL转换示例:
- s3://ap-northeast-2/modal-media-cache/upload/... -> https://cdn.roasmax.cn/upload/...
- 确保火山云API能够正确访问图片和视频文件
|
2025-07-31 13:11:08 +08:00 |
imeepos
|
2d9e6f067d
|
fix: 修复火山云API调用问题 - 添加文件上传到云端功能
问题修复:
- 火山云API需要HTTPS URL,不能使用本地文件路径
- 添加CloudUploadService集成,在调用API前先上传文件到云端
- 修复image_url和driving_video_url使用本地路径的问题
技术实现:
- 集成现有的CloudUploadService到VolcanoVideoService
- 在call_volcano_api方法中添加文件上传逻辑
- 先上传图片和驱动视频到云端,获取HTTPS URL
- 使用云端URL调用火山云API,确保API调用成功
- 添加详细的上传进度日志和错误处理
修复的错误:
- 400 Bad Request: image format unsupported: invalid image url
- 错误原因: 使用了本地文件路径 'c:\\Users\\...' 而非HTTPS URL
- 解决方案: 自动上传文件到云端并获取可访问的URL
|
2025-07-31 13:06:08 +08:00 |
imeepos
|
09b79d55df
|
feat: 完善火山云API签名算法实现
- 添加完整的HMAC-SHA256签名算法
- 实现规范请求(CanonicalRequest)构建
- 实现待签名字符串(StringToSign)创建
- 实现签名密钥派生(kSigning)算法
- 实现最终签名计算和Authorization头构建
- 添加必要的依赖: hmac, sha2, hex, chrono, url
- 严格按照火山云API文档规范实现签名流程
技术细节:
- 支持POST请求的JSON body哈希计算
- 规范化查询字符串和请求头处理
- 多层HMAC密钥派生: kDate -> kRegion -> kService -> kSigning
- 使用cn-north-1地区和cv服务标识符
- 生成标准格式的Authorization请求头
|
2025-07-31 12:49:40 +08:00 |
imeepos
|
73149f4101
|
feat: 实现火山云视频生成功能
- 添加火山云视频生成服务,支持单图+驱动视频生成
- 实现VideoGenerationRecord数据模型和仓储层
- 创建数据库迁移文件支持视频生成记录
- 添加Tauri命令用于前后端通信
- 实现VideoGenerationTool前端界面
- 根据火山云API文档移除不支持的参数
- 支持图片和驱动视频文件上传
- 实现任务状态跟踪和进度显示
- 集成到工具页面路由和配置中
技术要点:
- 使用火山云realman_avatar_imitator_v2v_gen_video服务
- 支持API参数: req_key, image_url, driving_video_info
- 实现异步任务处理和状态轮询
- 遵循项目前端标准(lucide-react, TailwindCSS)
- 数据库索引优化查询性能
|
2025-07-31 12:43:30 +08:00 |