Compare commits
2 Commits
aa1a70121a
...
e500c2d6a0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e500c2d6a0 | ||
|
|
08b5e66fbc |
@ -3022,6 +3022,7 @@ def admin_assets_user_videos(request, user_id):
|
||||
'task_id': str(r.task_id),
|
||||
'prompt': r.prompt,
|
||||
'result_url': r.result_url or '',
|
||||
'thumbnail_url': r.thumbnail_url or '',
|
||||
'duration': r.duration,
|
||||
'seconds_consumed': r.seconds_consumed,
|
||||
'aspect_ratio': r.aspect_ratio,
|
||||
@ -3104,6 +3105,7 @@ def team_assets_member_videos(request, member_id):
|
||||
'task_id': str(r.task_id),
|
||||
'prompt': r.prompt,
|
||||
'result_url': r.result_url or '',
|
||||
'thumbnail_url': r.thumbnail_url or '',
|
||||
'duration': r.duration,
|
||||
'seconds_consumed': r.seconds_consumed,
|
||||
'aspect_ratio': r.aspect_ratio,
|
||||
|
||||
@ -391,9 +391,11 @@
|
||||
--color-info-shadow-soft: rgba(0, 153, 204, 0.20);
|
||||
--color-info-shadow-strong: rgba(0, 153, 204, 0.35);
|
||||
|
||||
/* White alpha on dark media — 保留白色徽章语义 */
|
||||
--color-bg-on-media: rgba(255, 255, 255, 0.90);
|
||||
--color-bg-on-media-hover: rgba(255, 255, 255, 1.0);
|
||||
/* Video 上的悬浮按钮(下载/收藏)— 必须任意视频帧背景下都可读 ⇒
|
||||
沿用行业惯例:深半透底 + 白图标(参考 YouTube/抖音/小红书的视频控件)。
|
||||
v0.20.0 改成 rgba(255,255,255,0.90) 是错的 — 白底 + --color-on-overlay 白 icon = 看不见。 */
|
||||
--color-bg-on-media: rgba(0, 0, 0, 0.55);
|
||||
--color-bg-on-media-hover: rgba(0, 0, 0, 0.72);
|
||||
|
||||
/* Scrollbar */
|
||||
--color-scrollbar-thumb: rgba(0, 0, 0, 0.15);
|
||||
|
||||
@ -21,7 +21,7 @@ function VideoThumbnail({ video, onClick }: { video: AssetVideo; onClick: () =>
|
||||
onClick={onClick}
|
||||
>
|
||||
{video.result_url ? (
|
||||
<video ref={videoRef} src={rewriteTosUrl(video.result_url)} className={styles.thumbVideo} muted loop preload="metadata" />
|
||||
<video ref={videoRef} src={rewriteTosUrl(video.result_url)} poster={video.thumbnail_url ? rewriteTosUrl(video.thumbnail_url) : undefined} className={styles.thumbVideo} muted loop preload="metadata" />
|
||||
) : (
|
||||
<div className={styles.thumbPlaceholder} />
|
||||
)}
|
||||
|
||||
@ -72,6 +72,7 @@ function VideoThumbnail({
|
||||
<video
|
||||
ref={videoRef}
|
||||
src={rewriteTosUrl(task.resultUrl)}
|
||||
poster={task.thumbnailUrl ? rewriteTosUrl(task.thumbnailUrl) : undefined}
|
||||
className={styles.thumbVideo}
|
||||
muted
|
||||
loop
|
||||
|
||||
@ -21,7 +21,7 @@ function VideoThumbnail({ video, onClick }: { video: AssetVideo; onClick: () =>
|
||||
onClick={onClick}
|
||||
>
|
||||
{video.result_url ? (
|
||||
<video ref={videoRef} src={rewriteTosUrl(video.result_url)} className={styles.thumbVideo} muted loop preload="metadata" />
|
||||
<video ref={videoRef} src={rewriteTosUrl(video.result_url)} poster={video.thumbnail_url ? rewriteTosUrl(video.thumbnail_url) : undefined} className={styles.thumbVideo} muted loop preload="metadata" />
|
||||
) : (
|
||||
<div className={styles.thumbPlaceholder} />
|
||||
)}
|
||||
|
||||
@ -414,6 +414,7 @@ export interface AssetVideo {
|
||||
task_id: string;
|
||||
prompt: string;
|
||||
result_url: string;
|
||||
thumbnail_url?: string;
|
||||
duration: number;
|
||||
seconds_consumed: number;
|
||||
cost_amount?: number;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user