feat: add flexible character uploads and video asset library

This commit is contained in:
xuejianwu
2026-08-05 16:27:16 +08:00
parent 77dc339f87
commit 93b12bf739
6 changed files with 331 additions and 71 deletions

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>营响力AI 短剧数字人 Demo</title>
<link rel="stylesheet" href="./styles.css?v=24" />
<link rel="stylesheet" href="./styles.css?v=25" />
</head>
<body data-active-module="library">
<header class="topbar">
@@ -21,7 +21,10 @@
<main>
<nav class="module-tabs" aria-label="功能模块">
<button class="module-tab active" type="button" data-module="library">
<b>人物素材库</b><span>上传、审核、查看历史素材并组合人物</span>
<b>人物素材库</b><span>上传 13 张人物图片,审核后组合人物</span>
</button>
<button class="module-tab" type="button" data-module="video-library">
<b>视频素材库</b><span>上传、审核并复用历史视频素材</span>
</button>
<button class="module-tab" type="button" data-module="production">
<b>短剧生产</b><span>选择本场角色,输入图片和视频后生成</span>
@@ -42,6 +45,7 @@
<div class="workspace">
<aside class="sidebar">
<div class="person-library-sidebar">
<div class="sidebar-title production-only">
<span>本场角色</span>
<button class="link-button" id="addRoleButton"> 添加角色</button>
@@ -83,12 +87,29 @@
<div class="rule-box library-only">
<strong>入库前检查</strong>
<ul>
<li>正面、侧面、背面分别提供公网 URL</li>
<li>正面、侧面、背面任选 13 张上传</li>
<li>格式JPG / PNG / WebP 等</li>
<li>宽或高 3006000 px单张小于 30MB</li>
<li>三张全部通过后组成一个角色素材组</li>
<li>已上传图片全部通过后组成一个人物素材组</li>
</ul>
</div>
</div>
<div class="video-library-only video-library-summary">
<div class="sidebar-title">
<span>视频素材</span>
<button class="link-button" type="button" id="refreshVideoAssets">刷新</button>
</div>
<div class="video-library-count"><strong id="videoAssetHistoryCount">0</strong><span>条已就绪视频素材</span></div>
<div class="rule-box">
<strong>视频入库要求</strong>
<ul>
<li>提供公网可访问的视频 URL</li>
<li>格式MP4 / MOV</li>
<li>入库审核通过后获得 asset:// 引用</li>
<li>可直接用于短剧片段的参考视频</li>
</ul>
</div>
</div>
</aside>
<section class="panel">
@@ -104,17 +125,17 @@
<div class="view-grid wide">
<label class="view-field">
<span><b>01</b> 正面图</span>
<input id="assetFrontUrl" type="url" required placeholder="https://example.com/front.png" />
<input id="assetFrontUrl" type="url" placeholder="https://example.com/front.png" />
<small>五官与服装正面细节</small>
</label>
<label class="view-field">
<span><b>02</b> 侧面图</span>
<input id="assetSideUrl" type="url" required placeholder="https://example.com/side.png" />
<input id="assetSideUrl" type="url" placeholder="https://example.com/side.png" />
<small>轮廓、发型和体态</small>
</label>
<label class="view-field">
<span><b>03</b> 背面图</span>
<input id="assetBackUrl" type="url" required placeholder="https://example.com/back.png" />
<input id="assetBackUrl" type="url" placeholder="https://example.com/back.png" />
<small>背部服装与发型细节</small>
</label>
</div>
@@ -125,7 +146,7 @@
</label>
<div class="field action-field">
<span>&nbsp;</span>
<button class="primary" type="submit" id="reviewButton">提交三视图审核</button>
<button class="primary" type="submit" id="reviewButton">提交人物素材审核</button>
</div>
</form>
@@ -133,11 +154,48 @@
<div class="result-icon"></div>
<div>
<strong>人物素材已入库并完成组合</strong>
<p>审核通过的图片会绑定为一个可复用人物,也可在人物库中重新组合</p>
<p>已上传的 13 张图片全部通过后,会绑定为一个可复用人物</p>
<div class="reference-list" id="assetReferences"></div>
</div>
</div>
<div class="panel-header video-library-only">
<div>
<span class="section-kicker">视频素材</span>
<h2>上传视频素材</h2>
</div>
<span class="status-badge neutral" id="videoAssetStatus">未提交</span>
</div>
<form id="videoAssetForm" class="form-grid video-library-only">
<label class="field wide">
<span>视频公网 URL</span>
<input id="videoAssetUrl" type="url" required placeholder="https://example.com/reference.mp4" />
<small>支持 MP4 / MOV必须可通过公网直接访问。</small>
</label>
<label class="field">
<span>素材名称</span>
<input id="videoAssetPurpose" required placeholder="例如:电梯口上一片段 / 角色走路参考" />
</label>
<div class="field action-field">
<span>&nbsp;</span>
<button class="primary" type="submit" id="videoAssetSubmit">提交视频素材审核</button>
</div>
</form>
<div class="result-card hidden video-library-only" id="videoAssetResult">
<div class="result-icon"></div>
<div><strong>视频素材已通过审核</strong><p id="videoAssetResultText">可在下方历史素材中查看并用于短剧生产。</p></div>
</div>
<section class="video-asset-history video-library-only">
<div class="video-asset-history-head">
<div><span class="section-kicker">历史素材</span><h3>已就绪视频</h3></div>
<span>点击“用于当前片段”可直接带入短剧生产</span>
</div>
<div class="video-asset-grid" id="videoAssetList"><div class="empty-small">暂无已就绪视频素材</div></div>
</section>
<div class="storyboard production-only">
<label class="field continuity-choice">
<span>与上一片段的衔接</span>
@@ -178,7 +236,7 @@
<button class="media-add-button" type="button" id="addReferenceVideoButton"> 添加视频</button>
</div>
<div class="media-url-list" id="referenceVideoInputs"></div>
<small>手动补充 reference_video;选择“引用上一片段”后系统会自动加入,无需重复填写</small>
<small>可填写公网 MP4/MOV或从视频素材库选择 asset:// 引用;选择“引用上一片段”后系统会自动加入。</small>
</div>
</div>
<div class="input-quota wide" id="inputQuota">人物图片 0 张 · 其他图片 0 张 · 图片合计 0/9 · 视频 0 条</div>
@@ -289,6 +347,6 @@
</div>
<div class="toast hidden" id="toast"></div>
<script src="./app.js?v=30"></script>
<script src="./app.js?v=31"></script>
</body>
</html>