视频剪辑和处理
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
-- scene_split_task 场景检测+视频分割异步任务表
|
||||
CREATE TABLE IF NOT EXISTS scene_split_task (
|
||||
id BIGSERIAL NOT NULL,
|
||||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||||
task_id VARCHAR(64) NOT NULL,
|
||||
video_url TEXT NOT NULL DEFAULT '',
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||||
segment_urls TEXT NOT NULL DEFAULT '',
|
||||
audio_url TEXT NOT NULL DEFAULT '',
|
||||
scene_count INT NOT NULL DEFAULT 0,
|
||||
audio_duration DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||
video_duration DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||
error_message TEXT,
|
||||
callback_url VARCHAR(500) NOT NULL DEFAULT '',
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE scene_split_task IS '场景检测+视频分割异步任务表';
|
||||
COMMENT ON COLUMN scene_split_task.task_id IS '任务唯一标识';
|
||||
COMMENT ON COLUMN scene_split_task.video_url IS '原始视频URL';
|
||||
COMMENT ON COLUMN scene_split_task.status IS '任务状态:pending/running/success/failed';
|
||||
COMMENT ON COLUMN scene_split_task.segment_urls IS '分割后的视频分片URL列表(JSON数组)';
|
||||
COMMENT ON COLUMN scene_split_task.audio_url IS '提取的音频URL';
|
||||
COMMENT ON COLUMN scene_split_task.scene_count IS '检测到的场景数/分片数';
|
||||
COMMENT ON COLUMN scene_split_task.audio_duration IS '音频时长(秒)';
|
||||
COMMENT ON COLUMN scene_split_task.error_message IS '错误信息';
|
||||
COMMENT ON COLUMN scene_split_task.callback_url IS '回调地址';
|
||||
COMMENT ON COLUMN scene_split_task.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN scene_split_task.updated_at IS '更新时间';
|
||||
COMMENT ON COLUMN scene_split_task.deleted_at IS '删除时间(软删除)';
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_scene_split_task_id ON scene_split_task(task_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_scene_split_status ON scene_split_task(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_scene_split_created_at ON scene_split_task(created_at);
|
||||
@@ -0,0 +1,4 @@
|
||||
-- scene_split_task 增加 video_duration 字段
|
||||
ALTER TABLE scene_split_task ADD COLUMN IF NOT EXISTS video_duration DOUBLE PRECISION NOT NULL DEFAULT 0;
|
||||
|
||||
COMMENT ON COLUMN scene_split_task.video_duration IS '视频总时长(秒)';
|
||||
@@ -0,0 +1,42 @@
|
||||
-- video_audio_merge_task 视频拼接+混音异步任务表
|
||||
CREATE TABLE IF NOT EXISTS video_audio_merge_task (
|
||||
id BIGSERIAL NOT NULL,
|
||||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||||
task_id VARCHAR(64) NOT NULL,
|
||||
video_urls TEXT NOT NULL DEFAULT '',
|
||||
audio_urls TEXT NOT NULL DEFAULT '',
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||||
file_url TEXT NOT NULL DEFAULT '',
|
||||
file_size BIGINT NOT NULL DEFAULT 0,
|
||||
file_name VARCHAR(255) NOT NULL DEFAULT '',
|
||||
file_format VARCHAR(32) NOT NULL DEFAULT '',
|
||||
file_address_prefix TEXT NOT NULL DEFAULT '',
|
||||
duration_str VARCHAR(32) NOT NULL DEFAULT '',
|
||||
error_message TEXT,
|
||||
callback_url VARCHAR(500) NOT NULL DEFAULT '',
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE video_audio_merge_task IS '视频拼接+混音异步任务表';
|
||||
COMMENT ON COLUMN video_audio_merge_task.task_id IS '任务唯一标识';
|
||||
COMMENT ON COLUMN video_audio_merge_task.video_urls IS '视频URL列表(JSON数组)';
|
||||
COMMENT ON COLUMN video_audio_merge_task.audio_urls IS '音频URL列表(JSON数组)';
|
||||
COMMENT ON COLUMN video_audio_merge_task.status IS '任务状态:pending/running/success/failed';
|
||||
COMMENT ON COLUMN video_audio_merge_task.file_url IS 'MinIO文件访问路径';
|
||||
COMMENT ON COLUMN video_audio_merge_task.file_size IS '文件大小(字节)';
|
||||
COMMENT ON COLUMN video_audio_merge_task.file_name IS '文件名';
|
||||
COMMENT ON COLUMN video_audio_merge_task.file_format IS '文件格式';
|
||||
COMMENT ON COLUMN video_audio_merge_task.file_address_prefix IS 'MinIO地址前缀';
|
||||
COMMENT ON COLUMN video_audio_merge_task.duration_str IS '合并后视频时长';
|
||||
COMMENT ON COLUMN video_audio_merge_task.error_message IS '错误信息';
|
||||
COMMENT ON COLUMN video_audio_merge_task.callback_url IS '回调地址';
|
||||
COMMENT ON COLUMN video_audio_merge_task.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN video_audio_merge_task.updated_at IS '更新时间';
|
||||
COMMENT ON COLUMN video_audio_merge_task.deleted_at IS '删除时间(软删除)';
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_merge_task_task_id ON video_audio_merge_task(task_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_merge_task_status ON video_audio_merge_task(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_merge_task_created_at ON video_audio_merge_task(created_at);
|
||||
@@ -0,0 +1,38 @@
|
||||
-- video_caption_task 字幕叠加任务表
|
||||
-- 使用 HyperFrames (HTML+CSS+Chrome Headless) 渲染带字幕的营销视频
|
||||
CREATE TABLE IF NOT EXISTS video_caption_task (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
tenant_id INT8 NOT NULL DEFAULT 0,
|
||||
task_id VARCHAR(64) NOT NULL UNIQUE, -- 任务唯一标识,前缀 cap_
|
||||
video_urls TEXT NOT NULL, -- 视频URL列表,JSON数组
|
||||
audio_url VARCHAR(1024) DEFAULT '', -- 背景音乐URL(可选)
|
||||
elements TEXT NOT NULL, -- 字幕元素列表,JSON数组
|
||||
width INT NOT NULL DEFAULT 1080, -- 视频宽度
|
||||
height INT NOT NULL DEFAULT 1920, -- 视频高度
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending/running/success/failed
|
||||
file_url VARCHAR(1024) DEFAULT '', -- 输出文件URL
|
||||
file_size INT8 DEFAULT 0, -- 输出文件大小(字节)
|
||||
file_name VARCHAR(255) DEFAULT '', -- 输出文件名
|
||||
duration_str VARCHAR(20) DEFAULT '', -- 视频时长
|
||||
error_message TEXT, -- 错误信息
|
||||
callback_url VARCHAR(1024) DEFAULT '', -- 回调地址
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
deleted_at TIMESTAMP WITH TIME ZONE DEFAULT NULL
|
||||
);
|
||||
|
||||
COMMENT ON TABLE video_caption_task IS '字幕叠加任务';
|
||||
COMMENT ON COLUMN video_caption_task.task_id IS '任务唯一标识';
|
||||
COMMENT ON COLUMN video_caption_task.video_urls IS '背景视频URL列表';
|
||||
COMMENT ON COLUMN video_caption_task.audio_url IS '背景音乐URL';
|
||||
COMMENT ON COLUMN video_caption_task.elements IS '字幕/图片元素列表JSON';
|
||||
COMMENT ON COLUMN video_caption_task.status IS '任务状态:pending/running/success/failed';
|
||||
COMMENT ON COLUMN video_caption_task.file_url IS '输出文件URL';
|
||||
COMMENT ON COLUMN video_caption_task.file_size IS '输出文件大小';
|
||||
COMMENT ON COLUMN video_caption_task.file_name IS '输出文件名';
|
||||
COMMENT ON COLUMN video_caption_task.duration_str IS '视频时长';
|
||||
COMMENT ON COLUMN video_caption_task.error_message IS '错误信息';
|
||||
COMMENT ON COLUMN video_caption_task.callback_url IS '任务完成后回调地址';
|
||||
|
||||
CREATE INDEX idx_caption_task_id ON video_caption_task(task_id);
|
||||
CREATE INDEX idx_caption_status ON video_caption_task(status);
|
||||
Reference in New Issue
Block a user