You've already forked FrameTour-RenderWorker
- 定义硬件加速类型常量(none、qsv、cuda) - 配置QSV和CUDA编码参数及预设 - 在WorkerConfig中添加硬件加速配置选项 - 实现基于硬件加速类型的编码参数动态获取 - 添加FFmpeg硬件加速解码和滤镜参数 - 检测并报告系统硬件加速支持信息 - 在API客户端中上报硬件加速配置和支持状态
100 lines
2.8 KiB
Python
100 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
常量定义
|
|
|
|
v2 版本常量,用于 Render Worker v2 API。
|
|
"""
|
|
|
|
# 软件版本
|
|
SOFTWARE_VERSION = '2.0.0'
|
|
|
|
# 支持的任务类型
|
|
TASK_TYPES = (
|
|
'RENDER_SEGMENT_VIDEO',
|
|
'COMPOSE_TRANSITION',
|
|
'PREPARE_JOB_AUDIO',
|
|
'PACKAGE_SEGMENT_TS',
|
|
'FINALIZE_MP4',
|
|
)
|
|
|
|
# 默认能力
|
|
DEFAULT_CAPABILITIES = list(TASK_TYPES)
|
|
|
|
# 支持的转场类型(对应 FFmpeg xfade 参数)
|
|
TRANSITION_TYPES = (
|
|
'fade', # 淡入淡出(默认)
|
|
'dissolve', # 溶解过渡
|
|
'wipeleft', # 向左擦除
|
|
'wiperight', # 向右擦除
|
|
'wipeup', # 向上擦除
|
|
'wipedown', # 向下擦除
|
|
'slideleft', # 向左滑动
|
|
'slideright', # 向右滑动
|
|
'slideup', # 向上滑动
|
|
'slidedown', # 向下滑动
|
|
)
|
|
|
|
# 支持的特效类型
|
|
EFFECT_TYPES = (
|
|
'cameraShot', # 相机定格效果:在指定时间点冻结画面
|
|
'zoom', # 缩放效果(预留)
|
|
'blur', # 模糊效果(预留)
|
|
)
|
|
|
|
# 硬件加速类型
|
|
HW_ACCEL_NONE = 'none' # 纯软件编解码
|
|
HW_ACCEL_QSV = 'qsv' # Intel Quick Sync Video (核显/独显)
|
|
HW_ACCEL_CUDA = 'cuda' # NVIDIA NVENC/NVDEC
|
|
|
|
HW_ACCEL_TYPES = (HW_ACCEL_NONE, HW_ACCEL_QSV, HW_ACCEL_CUDA)
|
|
|
|
# 统一视频编码参数(软件编码,来自集成文档)
|
|
VIDEO_ENCODE_PARAMS = {
|
|
'codec': 'libx264',
|
|
'preset': 'medium',
|
|
'profile': 'main',
|
|
'level': '4.0',
|
|
'crf': '23',
|
|
'pix_fmt': 'yuv420p',
|
|
}
|
|
|
|
# QSV 硬件加速视频编码参数(Intel Quick Sync)
|
|
VIDEO_ENCODE_PARAMS_QSV = {
|
|
'codec': 'h264_qsv',
|
|
'preset': 'medium', # QSV 支持: veryfast, faster, fast, medium, slow, slower, veryslow
|
|
'profile': 'main',
|
|
'level': '4.0',
|
|
'global_quality': '23', # QSV 使用 global_quality 代替 crf(1-51,值越低质量越高)
|
|
'look_ahead': '1', # 启用前瞻分析提升质量
|
|
'pix_fmt': 'nv12', # QSV 硬件表面格式
|
|
}
|
|
|
|
# CUDA 硬件加速视频编码参数(NVIDIA NVENC)
|
|
VIDEO_ENCODE_PARAMS_CUDA = {
|
|
'codec': 'h264_nvenc',
|
|
'preset': 'p4', # NVENC 预设 p1-p7(p1 最快,p7 最慢/质量最高),p4 ≈ medium
|
|
'profile': 'main',
|
|
'level': '4.0',
|
|
'rc': 'vbr', # 码率控制模式:vbr 可变码率
|
|
'cq': '23', # 恒定质量模式的质量值(0-51)
|
|
'pix_fmt': 'yuv420p', # NVENC 输入格式(会自动转换)
|
|
}
|
|
|
|
# 统一音频编码参数
|
|
AUDIO_ENCODE_PARAMS = {
|
|
'codec': 'aac',
|
|
'bitrate': '128k',
|
|
'sample_rate': '48000',
|
|
'channels': '2',
|
|
}
|
|
|
|
# 错误码
|
|
ERROR_CODES = {
|
|
'E_INPUT_UNAVAILABLE': '素材不可访问',
|
|
'E_FFMPEG_FAILED': 'FFmpeg 执行失败',
|
|
'E_UPLOAD_FAILED': '上传失败',
|
|
'E_SPEC_INVALID': '渲染规格非法',
|
|
'E_TIMEOUT': '执行超时',
|
|
'E_UNKNOWN': '未知错误',
|
|
}
|