auto-save 2026-05-14 10:31 (~4)
This commit is contained in:
@@ -1,26 +1,5 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "f2d817d",
|
||||
"message": "auto-save 2026-05-13 01:07 (~1)",
|
||||
"ts": "2026-05-13T01:07:25+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "e42ae5b",
|
||||
"message": "auto-save 2026-05-13 01:13 (~1)",
|
||||
"ts": "2026-05-13T01:13:20+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "5086534",
|
||||
"message": "auto-save 2026-05-13 01:19 (~1)",
|
||||
"ts": "2026-05-13T01:19:16+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "7a31e86",
|
||||
@@ -3315,6 +3294,25 @@
|
||||
"message": "auto-save 2026-05-14 10:20 (~7)",
|
||||
"hash": "be1ae80",
|
||||
"files_changed": 7
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-14T10:25:50+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-14 10:25 (~13)",
|
||||
"hash": "7bfbb38",
|
||||
"files_changed": 13
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-14T02:26:09Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 3 项未提交变更 · 最近提交:auto-save 2026-05-14 10:25 (~13)",
|
||||
"files_changed": 3
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-14T02:28:38Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 4 项未提交变更 · 最近提交:auto-save 2026-05-14 10:25 (~13)",
|
||||
"files_changed": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -31,6 +31,10 @@ POE_API_KEY=
|
||||
# VIDEO_CREATE_PATHS=/contents/generations/tasks
|
||||
# VIDEO_STATUS_PATH=/contents/generations/tasks/{id}
|
||||
#
|
||||
# SKG 豆包/Seedance 视频网关也使用同一套 content JSON 提交格式:
|
||||
# VIDEO_API_BASE_URL=https://ai.skg.com/doubao
|
||||
# VIDEO_API_KEY=
|
||||
#
|
||||
# 自定义视频网关覆盖;留空时如配置 POE_API_KEY,则走 Poe。
|
||||
VIDEO_API_BASE_URL=
|
||||
VIDEO_API_KEY=
|
||||
@@ -39,6 +43,7 @@ VIDEO_CREATE_PATHS=/videos
|
||||
VIDEO_STATUS_PATH=/videos/{id}
|
||||
VIDEO_CONTENT_PATH=/videos/{id}/content
|
||||
VIDEO_DURATION_FIELD=seconds
|
||||
VIDEO_POLL_TIMEOUT_SECONDS=900
|
||||
|
||||
# 工作目录
|
||||
KEYFRAME_COUNT=12
|
||||
|
||||
@@ -83,6 +83,7 @@ VIDEO_CREATE_PATHS = [
|
||||
VIDEO_STATUS_PATH = os.getenv("VIDEO_STATUS_PATH", "/videos/{id}").strip() or "/videos/{id}"
|
||||
VIDEO_CONTENT_PATH = os.getenv("VIDEO_CONTENT_PATH", "/videos/{id}/content").strip() or "/videos/{id}/content"
|
||||
VIDEO_DURATION_FIELD = os.getenv("VIDEO_DURATION_FIELD", "seconds").strip() or "seconds"
|
||||
VIDEO_POLL_TIMEOUT_SECONDS = max(60, int(os.getenv("VIDEO_POLL_TIMEOUT_SECONDS", "900")))
|
||||
|
||||
# OpenAI 客户端(OpenAI 兼容网关,含 SKG ezlink)
|
||||
from openai import OpenAI
|
||||
@@ -415,7 +416,8 @@ def video_uses_poe() -> bool:
|
||||
|
||||
|
||||
def video_uses_ark() -> bool:
|
||||
return "ark.cn-beijing.volces.com" in video_api_base()
|
||||
base = video_api_base()
|
||||
return "ark.cn-beijing.volces.com" in base or "ai.skg.com/doubao" in base
|
||||
|
||||
|
||||
def video_api_base() -> str:
|
||||
@@ -3198,7 +3200,7 @@ def render_storyboard_video(
|
||||
direct_url = video_url_from_response(data)
|
||||
update_generated_video(job_id, local_id, provider_id=video_api_id, status=status, progress=progress)
|
||||
|
||||
deadline = time.time() + 420
|
||||
deadline = time.time() + VIDEO_POLL_TIMEOUT_SECONDS
|
||||
while status in {"queued", "in_progress"} and time.time() < deadline:
|
||||
time.sleep(8)
|
||||
poll = client.get(f"{base}{video_path(VIDEO_STATUS_PATH, id=video_api_id)}", headers=headers)
|
||||
|
||||
@@ -874,7 +874,7 @@ SubjectAsset {
|
||||
<li>ASR:仍依赖当前 OpenAI-compatible 音频转写入口;如果该网关 audio endpoint 不通,文案提取仍会失败。</li>
|
||||
<li>MiniMax:当前接入的是官方 T2A 配音能力,不是 ASR;API Key 只能放本地环境变量,不能写入仓库。</li>
|
||||
<li>Audio Product Brief:默认是通用 SKG 放松产品卖点,后续可改成跟已选产品库条目联动。</li>
|
||||
<li>Video Gen:模型层按业务保留 Seedance / Kling / Veo/Voe 选择;后端已支持 Poe 视频通道,别名默认映射到 <code>seedance-2-fast</code>、<code>kling-omni</code>、<code>veo-3.1-fast</code>,提交后写入 Video Gen 节点。</li>
|
||||
<li>Video Gen:模型层按业务保留 Seedance / Kling / Veo/Voe 选择;后端已支持 Poe、火山方舟和 SKG 豆包视频网关。Seedance 可通过 <code>VIDEO_API_BASE_URL=https://ai.skg.com/doubao</code> 走 content JSON 异步任务,提交后写入 Video Gen 节点并轮询到完成。</li>
|
||||
<li>Compose:还没做本地 ffmpeg 字幕/TTS 合成。</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -914,6 +914,18 @@ SubjectAsset {
|
||||
<h2>变更记录</h2>
|
||||
<p>这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。</p>
|
||||
<div class="changelog">
|
||||
<article class="change">
|
||||
<header>
|
||||
<h3>2026-05-14 · 生视频接入 SKG 豆包网关</h3>
|
||||
<span class="tag orange">Video Gen</span>
|
||||
<span class="tag blue">Seedance</span>
|
||||
</header>
|
||||
<div class="body">
|
||||
<p><strong>问题:</strong>用户提供 <code>https://ai.skg.com/doubao</code> 作为视频模型网关;该网关应按 Seedance / 方舟内容生成任务格式提交,而不能误走普通 multipart 上传。</p>
|
||||
<p><strong>改动:</strong><code>video_uses_ark()</code> 现在同时识别火山方舟域名和 <code>ai.skg.com/doubao</code>,统一使用 <code>content</code> JSON:文本 prompt、首帧、尾帧和产品参考图作为不同 role 传入,再按 <code>/contents/generations/tasks/{id}</code> 轮询。<code>api/.env.example</code> 增加 SKG 豆包视频网关配置示例;生视频轮询上限改为 <code>VIDEO_POLL_TIMEOUT_SECONDS</code>,默认 900 秒,避免慢任务过早失败。</p>
|
||||
<p><strong>影响:</strong><code>api/main.py</code>、<code>api/.env.example</code>、<code>docs/source-analysis.html</code>。本机 <code>api/.env</code> 已配置 <code>VIDEO_API_BASE_URL=https://ai.skg.com/doubao</code> 和视频专用 key。</p>
|
||||
</div>
|
||||
</article>
|
||||
<article class="change">
|
||||
<header>
|
||||
<h3>2026-05-14 · 音频处理接入 SKG 口播改写与 MiniMax 配音</h3>
|
||||
|
||||
Reference in New Issue
Block a user