fix(1978): GPU lipsync 结果 URL 签 7 天 + 外部 TTS 音频转存自家 OSS #1993
Reference in New Issue
Block a user
Delete Branch "fix/1978-gpu-lipsync-sign-and-persist-audio"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
GPU 业务侧 E2E 发现两个上线阻断 bug。
Bug1:GPU 成功时 output_video_url 未签名,前端播不了
_submit_to_gpu用_sign_media_url()签结果 URL,但final_task.result_url是裸 OSS key(gpu-lipsync/results/{task_id}.mp4,无 host),_sign_media_url仅对 host 等于自家 bucket 的 URL 签名,裸 key 被原样返回。storage.get_download_url(result_key, expires_seconds=MEDIAKIT_URL_TTL_SECONDS)(7 天 = 604800s)签预签名 URL 再写回;签名异常回退原 key 不阻断。Bug2:预合成 TTS 音频是 dashscope 临时 URL,Worker 家庭网络拉不到
dashscope-result-bj.oss-cn-beijing.aliyuncs.com临时地址,RTX2060 家庭网络访问不通,快速失败 3 次回退 MediaKit。_persist_external_audio_for_gpu,创建 GPU 任务前用_is_own_oss_url(裸 key/自家 host 判定)识别外部音频,safe_download_bytes下载后转存lipsync-tts/{user_id}/{job_id}.mp3(参考_synthesize_and_persist_audio模式),用自家 URL 建任务;转存失败回退原 URL 不阻断业务;自家对象不重复转存。测试
get_download_url(key, expires_seconds=604800)。Bug1: _submit_to_gpu 用 _sign_media_url 签 GPU 结果,但 result_url 是裸 OSS key(gpu-lipsync/results/{task}.mp4,无 host),_sign_media_url 只对 自家 host 的 URL 签名,裸 key 原样返回导致前端无法播放。改为直接调 storage.get_download_url(key, expires_seconds=MEDIAKIT_URL_TTL_SECONDS=7天)。 Bug2: 预合成 TTS 音频 audio_url 是 dashscope-result 第三方临时 OSS 地址, RTX2060 家庭网络拉不到,3 次失败后回退 MediaKit。创建 GPU 任务前新增 _persist_external_audio_for_gpu:非自家 OSS 域名音频下载转存 lipsync-tts/{user_id}/{job_id}.mp3,用自家 URL 建任务;转存失败回退原 URL 不阻断;自家 key/URL 不重复转存。 测试:test_lipsync_gpu_integration 新增 3 用例(外部音频转存/自家不转存/ 转存失败兜底),成功路径断言 7 天签名。🚀 预览环境已部署
🗑️ 预览环境已清理
PR #1993 已关闭或合并,对应的预览环境已被清理。