最佳实践:基于AI Function的游戏广告视频生成

更新时间:
复制为 MD 格式

本文以三国塔防游戏《箭塔守汉中》为例,演示如何基于 Hologres AI Function,从游戏原始素材出发,通过 SQL 自动生成主题角色图、广告分镜脚本,并最终生成10秒广告视频。

背景介绍

在游戏行业中,广告素材生产是拉新投放和版本宣发中的核心环节。尤其在买量场景下,团队通常需要在短时间内批量生成不同风格、不同主题、不同卖点的视频/图片广告素材,用于测试点击率、转化率和用户偏好。

传统广告制作方式主要依赖人工完成素材整理、创意策划、海报设计、分镜编写和视频剪辑,存在以下痛点:

  • 原始素材分散:角色图、场景图、道具图、游戏介绍、卖点文案通常分散在多个系统中,难以统一管理。

  • 创意生产效率低:每做一条广告,都需要从头构思主题、筛选素材、撰写脚本并进行视频制作,周期较长。

  • 多版本测试成本高:买量广告需要进行大量 A/B Test,人工方式难以支撑高频迭代。

  • 投放与素材脱节:广告素材、脚本版本和投放效果数据之间缺少统一沉淀,难以形成优化闭环。

基于 Hologres AI Function,可以将游戏原始素材管理、素材生成、广告营销内容生成、广告投放效果分析串联起来,形成一套完整的 AI 广告视频生产流程。

方案优势

本方案的核心价值在于:以 Hologres 为 AI 素材生产中台,整合多模型能力,实现广告智能素材的自动化生成。

  • 全 SQL 链路:无需复杂编程,数据工程师仅通过 SQL 即可在 Hologres 中完成 AI 模型调用、素材整合和智能营销内容生成,门槛极低。

  • 统一管理游戏素材:通过 Hologres 表结构统一管理游戏的多种素材,涵盖图片、视频、音频等多模态数据,可以有效与广告投放数据混合分析。

  • 端到端自动化:覆盖从角色变体、分镜脚本到视频合成的全流程,实现分钟级产出。

  • 高效扩展性:支持多场景的广告营销内容批量生成,大幅提升内容生产效率和投放效率。

方案完整流程

通过 AI Function 生成游戏广告视频的完整流程如下:

  1. 在 Hologres 中存储游戏信息的原始物料。

  2. 利用 qwen-image 模型从元素物料生成各个主题的图片库。

  3. 按照提示词,召回主题图片,利用 qwen-max 生成分镜脚本。

  4. 主题图片 + 分镜脚本 + wan 模型生成游戏广告视频。

  5. 选择合适的广告视频进行投放。

image

前提条件

  • 已创建 Hologres 实例,且实例版本为 V3.2 及以上。

  • 已在 Hologres 中部署所需的 AI 模型,包括图片生成模型(如 qwen-image 系列)、文本生成模型(如 qwen 系列)和视频生成模型(如 wan 系列)。部署方式详见AI模型与部署

  • 已准备 OSS Bucket 用于存储生成的图片和视频素材,并配置了相应的 RAM 角色授权。

步骤一:准备游戏信息物料表

在 Hologres 中创建一张游戏信息的物料表,用于存储游戏的基本信息和原始素材路径。

-- 创建游戏信息表
CREATE TABLE game_info(
    name TEXT,
    intro TEXT,
    motivation TEXT,
    art_style TEXT,
    material_list TEXT[]
);

-- 插入游戏信息
INSERT INTO game_info (name, intro, motivation, art_style, material_list)
VALUES (
    '箭塔守汉中',
    '《箭塔守汉中》是一款轻松休闲的三国塔防游戏。风云激荡的三国时代,你将化身为一军之帅,肩负守土之责!
    玩法介绍:
    1. 通过拖拽将各种防御塔放置在预设的路径旁。
    2. 点击升级已有的防御塔,提升其威力。
    3. 在关键时刻,点击释放武将技能,瞬间扭转战局。',
    '策略塔防',
    '扁平、中国风、简约小人',
    ARRAY[
        'oss://<BucketName>/images/liubei.png',
        'oss://<BucketName>/images/lvbu.png'
    ]
);

其中 material_list 存储了游戏角色的原始素材图片在 OSS 中的路径。

素材示例:游戏里真实的角色、背景等图片。

oss://ai-demo-dataset/images/liubei.png

oss://ai-demo-dataset/images/lvbu.png

image.png

image.png

刘备

吕布

步骤二:创建主题图片生成提示词表

从游戏原始角色图片分化出各种主题风格,用于广告素材的生成。

-- 创建主题风格提示词表
CREATE TABLE video_style(
    name TEXT PRIMARY KEY,
    prompt TEXT
);

-- 插入不同主题的提示词
INSERT INTO video_style VALUES
('北境枭雄', '保持人物肖像不变,生成穿着身披厚重的黑色毛领金属铠甲,铠甲上凝结着冰霜与战火的痕迹。冷峻的蓝调光线,史诗级电影感,细节惊人的Q版人物。'),
('云海剑仙', '保持人物肖像不变,生成气质儒雅的三国谋士,化身仙风道骨的剑仙。他身着月白色宽袖道袍,袍上有水墨山水的暗纹的Q版人物。'),
('幽冥夜行', '保持人物肖像不变,生成化身为神秘的暗影刺客。他身着哑光黑色的贴身夜行衣,戴着遮住半脸的面具的Q版人物。'),
('黄金铠甲', '保持人物肖像不变,生成身穿一套极其华丽、装饰着龙纹与珠宝的黄金铠甲,披着猩红色的丝绸斗篷的Q版人物。');

步骤三:生成主题图片库

为每个角色生成不同主题下的图片。本例中为 2 个角色分别生成 4 个主题的图片,调用 qwen-image-2.0-pro 模型。

-- 创建生成图片的结果表
CREATE TABLE generated_images(
    game_name TEXT,
    style_name TEXT,
    style_desc TEXT,
    character1 TEXT,
    character2 TEXT
);

-- 批量生成主题图片并存储结果
WITH person_prompt AS (
    SELECT game_info.name AS game_name,
           video_style.name AS style_name,
           material_list[1] AS character1,
           material_list[2] AS character2,
           prompt
    FROM game_info, video_style
    WHERE game_info.name = '箭塔守汉中'
),
gen_image AS (
    SELECT game_name, style_name, prompt AS style_desc,
        ai_gen('qwen_image', json_build_object(
            'prompt', prompt,
            'reference_urls', array[character1],
            'parameters', json_build_object(
                'size', '1280*720',
                'n', 1,
                'watermark', false
            ),
            'output_dir', 'oss://<BucketName>/images/'
        )::text, to_file(character1, 'oss-cn-hangzhou-internal.aliyuncs.com',
            'acs:ram::<AccountId>:role/<RoleName>')) AS obj1,
        ai_gen('qwen_image', json_build_object(
            'prompt', prompt,
            'reference_urls', array[character2],
            'parameters', json_build_object(
                'size', '1280*720',
                'n', 1,
                'watermark', false
            ),
            'output_dir', 'oss://<BucketName>/images/'
        )::text, to_file(character2, 'oss-cn-hangzhou-internal.aliyuncs.com',
            'acs:ram::<AccountId>:role/<RoleName>')) AS obj2
    FROM person_prompt
),
image_urls AS (
    SELECT game_name, style_name, style_desc,
           obj1::json->'image_oss_paths' ->> 0 AS character1,
           obj2::json->'image_oss_paths' ->> 0 AS character2
    FROM gen_image
)
INSERT INTO generated_images SELECT * FROM image_urls;

执行完成后,generated_images 表中将存储每个角色在各个主题下的生成图片 OSS 路径。

image

刘备

吕布

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

步骤四:生成分镜脚本

将主题图片作为视频物料,调用大语言模型生成广告分镜脚本。

-- 创建提示词模板表
CREATE TABLE prompts (
    id BIGINT,
    prompt TEXT
);

-- 插入分镜脚本生成的提示词模板
INSERT INTO prompts VALUES (10,
'你的任务是为手游行业生成一份用于投放广告的10秒视频素材文案。

<游戏名称>{0}</游戏名称>
<游戏介绍>{1}</游戏介绍>
<玩家动机>{2}</玩家动机>
<游戏画面风格>{3}</游戏画面风格>
<图片物料>{4} {5}</图片物料>

视频素材结构:
1. 开场2秒:选取一张图片,显示游戏名称,展示夸张特效。
2. 中段6秒:展示1个核心玩法,选取2张图片,描述角色动作和效果。
3. 结尾2秒:所有角色登场,使用行动号召。

要求:围绕玩家动机展开,脚本不超过10秒,使用图片全路径。');

使用模板生成分镜脚本,调用 qwen3.5-plus 模型:

-- 生成分镜脚本
WITH game_material AS (
    SELECT * FROM game_info
    LEFT JOIN generated_images ON name = game_name
    WHERE game_name = '箭塔守汉中' AND style_name = '云海剑仙'
),
tmp_prompt AS (
    SELECT json_build_object(
        'prompt', prompt,
        'args', json_build_array(
            name, intro, motivation, art_style,
            to_file(character1, 'oss-cn-hangzhou-internal.aliyuncs.com',
                'acs:ram::<AccountId>:role/<RoleName>'),
            to_file(character2, 'oss-cn-hangzhou-internal.aliyuncs.com',
                'acs:ram::<AccountId>:role/<RoleName>')
        )
    ) AS prompt, character1, character2
    FROM game_material, prompts WHERE id = 10
),
story_script AS (
    SELECT ai_gen('qwen3_5_plus', prompt::text,
        to_file('oss://<BucketName>/images/placeholder.png',
            'oss-cn-hangzhou-internal.aliyuncs.com',
            'acs:ram::<AccountId>:role/<RoleName>')) AS script,
        character1, character2
    FROM tmp_prompt
)
SELECT script FROM story_script;

分镜脚本示例:

image

步骤五:生成视频

生成分镜脚本后,将脚本和主题图片传入视频生成模型,生成广告视频。使用 wan2.6-r2v-flash 模型。

-- 生成广告视频(一次完成脚本生成 + 视频生成)
WITH game_material AS (
    SELECT * FROM game_info
    LEFT JOIN generated_images ON name = game_name
    WHERE game_name = '箭塔守汉中' AND style_name = '云海剑仙'
),
tmp_prompt AS (
    SELECT json_build_object(
        'prompt', prompt,
        'args', json_build_array(
            name, intro, motivation, art_style,
            to_file(character1, 'oss-cn-hangzhou-internal.aliyuncs.com',
                'acs:ram::<AccountId>:role/<RoleName>'),
            to_file(character2, 'oss-cn-hangzhou-internal.aliyuncs.com',
                'acs:ram::<AccountId>:role/<RoleName>')
        )
    ) AS prompt, character1, character2
    FROM game_material, prompts WHERE id = 10
),
story_script AS (
    SELECT ai_gen('qwen3_5_plus', prompt::text,
        to_file('oss://<BucketName>/images/placeholder.png',
            'oss-cn-hangzhou-internal.aliyuncs.com',
            'acs:ram::<AccountId>:role/<RoleName>')) AS script,
        character1, character2
    FROM tmp_prompt
)
SELECT character1, character2,
    ai_gen('wan_26_r2v_flash', json_build_object(
        'prompt', script,
        'reference_urls', array[character1, character2],
        'parameters', json_build_object(
            'size', '1280*720',
            'duration', 10,
            'shot_type', 'multi',
            'audio', true,
            'watermark', true
        ),
        'output_dir', 'oss://<BucketName>/videos/'
    )::text,
    to_file('oss://<BucketName>/images/placeholder.png',
        'oss-cn-hangzhou-internal.aliyuncs.com',
        'acs:ram::<AccountId>:role/<RoleName>')) AS video_result,
    script
FROM story_script;

执行完成后,返回结果中的 video_url 字段即为生成的广告视频地址,同时视频也会保存至指定的 OSS 目录中。

步骤六:生成视频效果预览

生成的视频:

  1. 北境枭雄

  2. 云海剑仙