from __future__ import annotations from enum import Enum VIDEO_UPSCALE_CONFIG_KEY = "video_upscale_config" VIDEO_UPSCALE_CONFIG_DESCRIPTION = "视频生成超分全局配置" VIDEO_UPSCALE_CONFIG_VERSION = 1 VIDEO_UPSCALE_SOURCE_RETAINED_MARKER = "retained_by_snapshot_config" class VideoUpscaleProcessorKey(str, Enum): LOCAL_FFMPEG_CROP_V1 = "local_ffmpeg_crop_v1" VOLC_LARGE_MODEL_V1 = "volc_large_model_v1" VOLC_STANDARD_V1 = "volc_standard_v1" VOLC_PROFESSIONAL_V1 = "volc_professional_v1" class VideoUpscaleTaskStatus(str, Enum): PENDING = "pending" PROCESSING = "processing" RETRY_WAITING = "retry_waiting" COMPLETED = "completed" FAILED = "failed" class VideoUpscaleStage(str, Enum): QUEUED = "upscale_queued" SOURCE_READY = "upscale_source_ready" LOCAL_PROCESSING = "upscale_local_processing" REMOTE_SUBMITTING = "upscale_remote_submitting" REMOTE_POLLING = "upscale_remote_polling" RESULT_READY = "upscale_result_ready" RESULT_DOWNLOADING = "upscale_result_downloading" VALIDATING = "upscale_validating" GENERATING_COVER = "upscale_generating_cover" FINALIZING = "upscale_finalizing" RETRY_WAITING = "upscale_retry_waiting" COMPLETED = "upscale_completed" FAILED = "upscale_failed" class VideoUpscaleInputSourceType(str, Enum): PROVIDER_REMOTE = "provider_remote" LOCAL_SIGNED = "local_signed" class VideoUpscaleProbeStatus(str, Enum): NOT_CHECKED = "not_checked" SUCCESS = "success" FAILED = "failed" EXPIRED = "expired" UNPARSABLE = "unparsable" VIDEO_UPSCALE_RESOLUTIONS = ("480p", "720p", "1080p", "2K", "4K") VIDEO_UPSCALE_RESOLUTION_SHORT_EDGE = { "480p": 480, "720p": 720, "1080p": 1080, "2K": 1440, "4K": 2160, } VIDEO_UPSCALE_RESOLUTION_RANK = { resolution: index for index, resolution in enumerate(VIDEO_UPSCALE_RESOLUTIONS, start=1) } def normalize_video_upscale_resolution(value: str | None) -> str: text = str(value or "").strip() normalized = text.lower() aliases = { "480p": "480p", "720p": "720p", "1080p": "1080p", "2k": "2K", "4k": "4K", } return aliases.get(normalized, text) def video_upscale_short_edge_pixels(value: str | None) -> int: normalized = normalize_video_upscale_resolution(value) try: return VIDEO_UPSCALE_RESOLUTION_SHORT_EDGE[normalized] except KeyError as exc: supported = "、".join(VIDEO_UPSCALE_RESOLUTIONS) raise ValueError(f"不支持的视频超分分辨率: {value},仅支持 {supported}") from exc LOCAL_PROCESSOR_KEYS = {VideoUpscaleProcessorKey.LOCAL_FFMPEG_CROP_V1.value} REMOTE_PROCESSOR_KEYS = { VideoUpscaleProcessorKey.VOLC_LARGE_MODEL_V1.value, VideoUpscaleProcessorKey.VOLC_STANDARD_V1.value, VideoUpscaleProcessorKey.VOLC_PROFESSIONAL_V1.value, } ALL_PROCESSOR_KEYS = LOCAL_PROCESSOR_KEYS | REMOTE_PROCESSOR_KEYS