fix(P0): 素材库视频上传时生成缩略图
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 17s
AI Code Review / AI Code Review (pull_request) Failing after 33s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 26s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 46s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 2m29s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 6m11s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 1416h47m37s
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Failing after 1416h47m50s
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Failing after 1416h47m51s
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Failing after 1416h47m52s
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Failing after 1416h47m53s
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Failing after 1416h47m53s
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Failing after 1416h47m55s
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Failing after 1416h47m55s
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Failing after 1416h47m55s
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Failing after 1417h19m58s
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Failing after 1417h20m0s
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1417h20m0s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 17s
AI Code Review / AI Code Review (pull_request) Failing after 33s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 26s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 46s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 2m29s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 6m11s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 1416h47m37s
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Failing after 1416h47m50s
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Failing after 1416h47m51s
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Failing after 1416h47m52s
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Failing after 1416h47m53s
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Failing after 1416h47m53s
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Failing after 1416h47m55s
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Failing after 1416h47m55s
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Failing after 1416h47m55s
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Failing after 1417h19m58s
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Failing after 1417h20m0s
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1417h20m0s
- ingest流程中添加视频缩略图生成(使用15%处抽帧) - 缩略图生成失败不影响主流程,仅打warning日志 - 修复素材库视频全部显示渐变占位图的问题 Issue: #577
This commit is contained in:
@@ -280,6 +280,7 @@ def ingest_asset(job_id: str) -> dict:
|
||||
# 先从 OSS 下载文件到本地临时目录,再提取元数据
|
||||
# (storage_key 是 OSS 内部路径,不能直接传给 ffprobe/Pillow)
|
||||
local_file = None
|
||||
thumbnail_url = None
|
||||
try:
|
||||
suffix = Path(job.storage_key).suffix or ".bin"
|
||||
with tempfile.NamedTemporaryFile(suffix=suffix, delete=False) as tmp:
|
||||
@@ -291,6 +292,29 @@ def ingest_asset(job_id: str) -> dict:
|
||||
metadata, extract_success = {}, False
|
||||
else:
|
||||
metadata, extract_success = extract_media_metadata(str(local_file), media_type)
|
||||
|
||||
# 视频类型:生成缩略图(文件还在的时候生成)
|
||||
thumbnail_url = None
|
||||
if media_type == "video" and extract_success:
|
||||
try:
|
||||
from video_processing.thumbnail_generator import generate_and_upload_thumbnail
|
||||
|
||||
thumb_storage_key = f"assets/{job.project_id}/thumbnails/{job_id}.jpg"
|
||||
thumbnail_url = generate_and_upload_thumbnail(
|
||||
str(local_file), thumb_storage_key
|
||||
)
|
||||
if thumbnail_url:
|
||||
logger.info(
|
||||
"素材缩略图生成成功: job_id=%s url=%s",
|
||||
job_id,
|
||||
thumbnail_url[:80],
|
||||
)
|
||||
except Exception as thumb_err:
|
||||
logger.warning(
|
||||
"素材缩略图生成失败(不影响主流程): job_id=%s error=%s",
|
||||
job_id,
|
||||
thumb_err,
|
||||
)
|
||||
finally:
|
||||
if local_file and local_file.exists():
|
||||
try:
|
||||
@@ -359,6 +383,7 @@ def ingest_asset(job_id: str) -> dict:
|
||||
codec=metadata.get("codec") or None,
|
||||
status=AssetStatus.READY,
|
||||
file_hash=job.file_hash,
|
||||
thumbnail_url=thumbnail_url,
|
||||
)
|
||||
asset_repo.create(asset)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user