腾讯云VOD AIGC视频生成工具 回调实现

腾讯云VOD AIGC视频生成工具 回调实现

腾讯云VOD AIGC视频生成工具

一个功能完整的腾讯云VOD AIGC视频生成工具库,支持轮询模式回调模式两种获取结果方式。

目录结构

test/vod/ ├── tencent_aigc_video.py # 核心库:API封装、任务管理 ├── config.py # 配置文件:从项目config.yaml读取凭证 ├── examples.py # 使用示例:各种生成场景 ├── callback_demo.py # 回调演示:带SessionContext的任务创建 ├── setup_callback.py # 回调配置:设置/查询回调URL └── README.md # 本文档 

快速开始

1. 配置凭证

确保项目根目录的 config.yaml 包含腾讯云VOD凭证:

secret_id:tencent_vod:"AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxx"secret_key:tencent_vod:"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

或设置环境变量:

exportTENCENTCLOUD_SECRET_ID="AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxx"exportTENCENTCLOUD_SECRET_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"exportTENCENTCLOUD_SUB_APP_ID="1234567890"

2. 验证配置

cd /opt/xj_ai_suanfa/AIGC_INTERFACE_HSC/test/vod python config.py 

输出示例:

腾讯云VOD配置状态: secret_id: AKIDxxxx...xxxx secret_key: ******************** sub_app_id: 1234567890 状态: ✓ 配置完整 

方式一:轮询模式(同步等待)

适用场景:单任务测试、简单脚本、需要立即获取结果

基本用法

from tencent_aigc_video import AIGCVideoGenerator, AIGCModel # 创建生成器 generator = AIGCVideoGenerator()# 生成视频(同步等待,默认超时600秒) result = generator.generate_video( prompt="一只橘猫在阳光下打哈欠,毛发随风轻轻飘动", model=AIGCModel.GV, model_version="3.1-fast", aspect_ratio="16:9", timeout=600)# 获取结果print(f"任务ID: {result['task_id']}")print(f"状态: {result['status']}")print(f"视频URL: {result['video_urls']}")

高级用法(精细控制)

from tencent_aigc_video import AIGCVideoManager, AIGCModel, TencentVODConfig # 创建配置和管理器 config = TencentVODConfig.from_env() manager = AIGCVideoManager(config)# 创建任务 task = manager.create_video_task( model=AIGCModel.GV, model_version="3.1-fast", prompt="海上日落,金色阳光洒在波光粼粼的海面上", output_config={"StorageMode":"Temporary",# 临时存储,7天有效"AspectRatio":"16:9"})print(f"任务已创建: {task.task_id}")# 自定义进度回调defprogress_callback(t): status_map ={"WAIT":"等待中","RUN":"生成中","DONE":"完成","FAIL":"失败"}print(f" 状态: {status_map.get(t.status.value, t.status.value)}")# 等待完成 completed = manager.wait_for_completion( task, timeout=600, poll_interval=10,# 每10秒查询一次 progress_callback=progress_callback )# 获取结果if completed.video_urls:print(f"视频URL: {completed.video_urls[0]}")

运行示例

python examples.py # 选择 1-7 测试不同功能

方式二:回调模式(异步通知)

适用场景:批量任务、生产环境、无需阻塞等待

原理

┌─────────────┐ 1.创建任务 ┌─────────────────┐ │ 你的代码 │ ───────────────→ │ 腾讯云VOD API │ └─────────────┘ (立即返回) └────────┬────────┘ │ 2.后台生成 ↓ ┌─────────────┐ 3.HTTP POST ┌─────────────────┐ │ 你的回调服务 │ ←──────────────── │ 腾讯云回调服务 │ └─────────────┘ (任务完成时) └─────────────────┘ 

步骤1:配置回调URL(一次性)

方法A:使用工具脚本
# 查询当前配置 python setup_callback.py query # 设置回调URL python setup_callback.py set"https://your-server.com/vod/callback"
方法B:代码配置
from tencent_aigc_video import TencentVODClient, TencentVODConfig config = TencentVODConfig.from_env() client = TencentVODClient(config)# 设置回调 params ={"SubAppId": config.sub_app_id,"Mode":"PUSH","NotificationUrl":"https://your-server.com/vod/callback","UploadMediaCompleteEventSwitch":"ON","DeleteMediaCompleteEventSwitch":"ON"} client._make_request("ModifyEventConfig", params)

步骤2:创建任务

from tencent_aigc_video import AIGCVideoManager, AIGCModel, TencentVODConfig import json import uuid from datetime import datetime config = TencentVODConfig.from_env() manager = AIGCVideoManager(config)# 生成业务ID business_id =f"order_{uuid.uuid4().hex[:8]}"# SessionContext:透传业务信息,回调时原样返回 session_context = json.dumps({"business_id": business_id,"user_id":"user_123","created_at": datetime.now().isoformat()}, ensure_ascii=False)# 创建任务(立即返回,不阻塞) task = manager.create_video_task( model=AIGCModel.GV, model_version="3.1-fast", prompt="一只橘猫在阳光下打哈欠", output_config={"StorageMode":"Temporary","AspectRatio":"16:9"}, session_id=business_id,# 去重ID session_context=session_context # 透传信息)print(f"任务已提交: {task.task_id}")print(f"业务ID: {business_id}")# 不需要等待,回调会自动发送

步骤3:接收回调

回调数据示例
{"EventType":"AigcVideoTaskComplete","AigcVideoTaskCompleteEvent":{"TaskId":"1234567890-AigcVideoTask-xxxxxxxxxxxx","Status":"FINISH","Progress":100,"Input":{"Prompt":"一只橘猫在阳光下打哈欠","ModelName":"GV","ModelVersion":"3.1-fast"},"Output":{"FileInfos":[{"FileUrl":"http://xxx.vod2.myqcloud.com/.../aigcVideoGenFile.mp4","ExpireTime":"2026-01-13T01:50:26Z"}]},"SessionContext":"{\"business_id\": \"order_abc123\", \"user_id\": \"user_123\"}","SessionId":"order_abc123"}}
回调处理示例(FastAPI)
from fastapi import FastAPI, Request import json app = FastAPI()@app.post("/vod/callback")asyncdefvod_callback(request: Request): data =await request.json() event_type = data.get("EventType")if event_type =="AigcVideoTaskComplete": event = data["AigcVideoTaskCompleteEvent"]# 解析透传的业务信息 ctx = json.loads(event.get("SessionContext","{}")) business_id = ctx.get("business_id") user_id = ctx.get("user_id")# 获取结果 status = event["Status"]if status =="FINISH": video_url = event["Output"]["FileInfos"][0]["FileUrl"]# 更新数据库、通知用户等print(f"任务完成: {business_id}, 视频: {video_url}")else: error_msg = event.get("Message","未知错误")print(f"任务失败: {business_id}, 错误: {error_msg}")return{"code":0,"message":"success"}

两种方式对比

特性轮询模式回调模式
代码复杂度简单需要回调服务
获取结果同步阻塞异步通知
API调用次数N次(轮询)0次
适用场景单任务/测试批量/生产
资源占用阻塞线程无阻塞
额外配置NotificationUrl

支持的模型

模型文生视频(T2V)图生视频(I2V)首尾帧多图输入
GV (Google Veo)
KLING (可灵)✓ (2.1+)
HUNYUAN (混元)
HAILUO (海螺)
VIDU✓ (q2-pro)✓ (1-7张)
JIMENG (即梦)
OS (OpenAI Sora)
MINGMOU (明眸)
SEEDANCE部分

常见问题

Q: 回调配置后,原来的轮询代码还能用吗?

A: 可以!两种方式互不影响。配置回调后,任务完成时会同时:

  • 轮询代码正常返回结果
  • 腾讯云发送回调到配置的URL

Q: SessionContext 是必须的吗?

A: 不是。不传也会收到回调,只是回调里 SessionContext 字段为空。

Q: 视频URL有效期多久?

A: StorageMode: Temporary 为7天,StorageMode: Persist 为永久(需要开通存储)。

Q: 如何测试回调?

A: 使用 https://webhook.site 获取临时URL测试。


API文档

Read more

论文AI率太高?八个方法教你30分钟降低AIGC,90%到2.4%亲测有效!

现在写论文的人越来越多,一写就会出现AI率过高的问题,特别是在研究生论文中,使用AI辅助写作已经非常普遍了,但是只要查重一下就会“凉了”,导师直接打回去说AI味太浓,没有自己的想法。 去年我自己也犯过同样的错误,初稿的时候AI率是66%,查重35%,导师说我全是机器的味道,那时候真的很难受。 经过一周的努力之后,一边手动修改一边测试各种工具,最后将AI率从90%以上降到了2.4%,顺利提交并通过了。 今天就来分享一下效果比较好的8个实用方法,在三十分钟内就可以把AI率降低到可以接受的程度,不管是论文、报告还是文案都可以轻松摆脱AI腔。 降AI率的核心是什么? 降AI不是简单的换词,而是去除机器的痕迹,保留主要信息。 很多人以为降低AI率就是用同义词替换,但是结果反而变得很奇怪,专业性也不强了。 其实是在打破AI所固有的模式:固定的句式、过于严谨的逻辑、表达含糊不清没有实质内容。 不用这些套路的话,AI率就会下降,学术上的严谨性也不会受到影响。 方法一:变换语态,长短句交替使用 AI经常使用被动语态以及较长的句子,如“实验数据经过分析后得到的结果”,显得很机械。短

Stable-Diffusion-3.5移动端方案:手机+云端GPU随时创作

Stable-Diffusion-3.5移动端方案:手机+云端GPU随时创作 你是不是也遇到过这样的情况?作为一名插画师,灵感突然来袭,正想在平板上画点草稿,却发现本地设备跑不动Stable Diffusion这类AI绘画工具——要么太卡,要么根本打不开。尤其是出差途中,手头只有轻薄平板或手机,想用AI辅助创作简直难上加难。 但现在,这个问题有了解决方案:通过“手机/平板 + 云端GPU”,你可以随时随地访问完整的Stable Diffusion 3.5环境,无需依赖本地算力,打开浏览器就能开始创作。 这正是我们今天要讲的核心——如何利用预置了SD 3.5的云镜像,在ZEEKLOG星图平台一键部署一个远程AI绘画服务,然后用你的移动设备(比如iPad、安卓平板甚至手机)通过浏览器连接上去,实现真正的“随地出图”。 这个方案特别适合: - 经常外出、需要快速记录灵感的插画师 - 想用平板做AI草图但电脑配置不够的创作者 - 希望团队共享同一个AI绘图环境的协作小组 整个过程不需要你会写代码,也不用折腾复杂的服务器配置。我亲自试过多次,从创建实例到手机端出图,

Llama-3.2V-11B-cot效果展示:X光片异常区域识别+医学诊断推理

Llama-3.2V-11B-cot效果展示:X光片异常区域识别+医学诊断推理 1. 模型核心能力概览 Llama-3.2V-11B-cot 是一个突破性的视觉语言模型,专为医疗影像分析设计。这个11B参数的模型不仅能识别X光片中的异常区域,还能像专业医生一样进行系统性推理,给出诊断建议。 模型采用独特的四步推理格式: 1. SUMMARY:快速总结影像关键特征 2. CAPTION:准确描述异常区域 3. REASONING:逐步分析可能的病因 4. CONCLUSION:给出最终诊断建议 2. 医学影像识别效果展示 2.1 胸部X光片分析案例 我们测试了一张典型的肺炎患者胸片,模型输出如下: 1. SUMMARY:双肺纹理增粗,右下肺野见片状高密度影 2. CAPTION:右下肺约5×7cm的实变影,边界模糊 3. REASONING: * 实变影常见于肺炎、肺结核或肿瘤 * 结合患者发热症状,感染性病变可能性大 * 病灶边缘模糊更符合肺炎特征 4.

手把手教你安装 Claude Code:终端里的 AI 编程助手,比 Copilot 更强

手把手教你安装 Claude Code:终端里的 AI 编程助手,比 Copilot 更强 最近在用一个叫 Claude Code 的工具,Anthropic 出的,直接在终端里跟 AI 结对编程。跟 GitHub Copilot 不一样,它不是补全代码,而是真的能理解你的整个项目,帮你写功能、改 bug、做重构。 用了两周,说说安装过程和踩过的坑。 环境要求 → Node.js 18.0 以上(推荐最新 LTS) → 系统:macOS、Linux、Windows(需要 WSL) 安装步骤 第一步:装 Node.js Ubuntu