当前位置: 首页 > news >正文

Node.js对接即梦AI实现“千军万马”视频

AI视频预览

下面的视频是即梦AI生成,提示词为“千军万马”,分辨率为“720P”,本文章将介绍如何使用nodejs对接即梦AI的API生成该视频。

准备工作

登录火山引擎的智能视觉控制台开通即梦AI的API服务

智能视觉https://console.volcengine.com/ai/overview

按照下面步骤开通AP服务和密钥获取

实名认证后,选择左边菜单的即梦AI,选择“即梦AI-视频生成3.0 720P”,点击开通服务。可根据不同的需求选择对应的服务。

这里用于代码演示,选择免费试用即可,API的调用限制为50s一次

开启服务后创建密钥,用于请求云服务API的凭证,新建密钥后下载为txt文件,后面代码需要访问控制-火山引擎https://console.volcengine.com/iam/keymanage

开通服务后可查看对应的开发文档进行开发,

即梦AI-视频生成3.0 720P-接口文档--即梦AI-火山引擎https://www.volcengine.com/docs/85621/1792710

代码环境初始化

本文章使用nodejs对接即梦AI的API,故使用nodejs环境进行开发。新建一个空白文件夹,文件名为英文名称(不包含中文),进入文件夹,使用下面命令进行项目初始化。如果文件夹名称包含中文,则将命令的 “-y” 去掉。

npm init -y

下载axios工具库,该工具库可以进行http请求:

npm install axios

下载根据密钥获取火山引擎签名的node SDK 工具库

npm install -S @volcengine/openapi

初始化项目后可创建index.js进行代码编写。

获取签名

const axios = require("axios");
const { Signer } = require("@volcengine/openapi");const accessKeyId = "*********************************";
const secretKey ="**************************************************";const openApiRequestData = {region: "cn-north-1",method: "POST",params: {Action: "CVSync2AsyncSubmitTask",  //固定值Version: "2022-08-31",  //固定值},headers: {Region: "cn-north-1",       Service: "cv", // 服务标识"Content-Type": "application/json",},body: JSON.stringify({req_key: "jimeng_t2v_v30",prompt: "千军万马",seed: -1,frames: 121,aspect_ratio: "16:9",}),
};

代码解释

依赖导入

  • 使用axios进行HTTP请求
  • @volcengine/openapi导入Signer用于请求签名

认证信息

  • accessKeyIdsecretKey是火山引擎API的访问凭证
  • 实际应用中应通过环境变量或安全存储获取,避免硬编码

请求参数配置

  • region指定服务区域为华北1(cn-north-1)
  • method定义HTTP方法为POST
  • params包含API的接口名和版本号
  • headers设置必要请求头,包括服务标识和内容类型
  • body包含实际任务参数,转换为JSON字符串格式

参数

类型

可选/必选

说明

req_key

string

必选

服务标识

取固定值:jimeng_t2v_v30

prompt

string

必选

用于生成视频的提示词 ,中英文均可输入。建议在400字以内,不超过800字,prompt过长有概率出现效果异常或不生效

seed

int

可选

随机种子,作为确定扩散初始状态的基础,默认-1(随机)。若随机种子为相同正整数且其他参数均一致,则生成视频极大概率效果一致

默认值:-1

frames

int

可选

生成的总帧数(帧数 = 24 * n + 1,其中n为秒数,支持5s、10s)

可选取值:[121, 241]

默认值:121

aspect_ratio

string

可选

生成视频的长宽比

可选取值:["16:9", "4:3", "1:1", "3:4", "9:16", "21:9"]

默认值:"16:9"

// 签名
const signer = new Signer(openApiRequestData, "cv");
signer.addAuthorization({ accessKeyId, secretKey });console.log(openApiRequestData.headers);

代码解释:

  • 创建Signer实例时传入请求数据和业务标识
  • addAuthorization方法自动计算签名并添加到请求头
  • 签名过程会覆盖原始headers中的Authorization字段
  • 最终输出包含完整认证信息的请求头

上面代码运行后的结果:

{Region: 'cn-north-1',Service: 'cv','Content-Type': 'application/json','X-Date': '20250908T074921Z','X-Content-Sha256': '86f8dc6c79dab074a37e0690416157fcb6683c27352749ee19be33803d0e8',      Authorization: 'HMAC-SHA256 Credential=AKLTNjk4ODljOGY2YmMxNDE2ZDlNDRhNmQwMliNTUzMjY/20250908/cn-north-1/cv/request, SignedHeaders=region;service;x-content-sha256;x-date, Signature=a99240453083c68dca2fbc58cd299e67959bd2eee4cac283a672ba29d3883a'
}

提交任务

请求地址为:

https://visual.volcengineapi.com?Action=CVSync2AsyncSubmitTask&Version=2022-08-31

url的参数说明如下:

参数

类型

可选/必选

说明

Action

string

必选

接口名,取值:CVSync2AsyncSubmitTask

Version

string

必选

版本号,取值:2022-08-31

代码示例

const submitUrl = "https://visual.volcengineapi.com";axios.post(submitUrl, openApiRequestData.body, {headers: openApiRequestData.headers,   //添加签名params: openApiRequestData.params, // 自动附加Action/Version到URL}).then((res) => console.log("Success:", res.data)).catch((err) => {console.error("Status:", err.response?.status);console.error("Error:", err.response?.data);});

关键参数说明

  • submitUrl:指定API请求的目标地址
  • openApiRequestData.body:包含POST请求的主体数据
  • openApiRequestData.headers:设置HTTP请求头信息
  • openApiRequestData.params:用于URL参数自动拼接

上面代码运行后的结果:

Success: {code: 10000,data: { task_id: '2830050130308220853' },  //任务ID,用于查询结果message: 'Success',request_id: '202509081556224E83C7B3AA67CE2F810A',status: 10000,time_elapsed: '48.281867ms'
}

查询任务

请求地址为:

https://visual.volcengineapi.com?Action=CVSync2AsyncGetResult&Version=2022-08-31

url的参数说明如下:

参数

类型

可选/必选

说明

Action

string

必选

接口名,固定值:CVSync2AsyncGetResult

Version

string

必选

版本号,固定值:2022-08-31

代码示例:

查询任务的代码和提交任务的代码类似,差别在于openApiRequestData 里params的接口名和body里面需要加上提交任务时获取的任务id。

const axios = require("axios");
const { Signer } = require("@volcengine/openapi");const accessKeyId = "************************";
const secretKey ="**********************************************";const openApiRequestData = {region: "cn-north-1",method: "POST",params: {Action: "CVSync2AsyncGetResult",   //查询任务的接口名Version: "2022-08-31",},headers: {Region: "cn-north-1",Service: "cv", // 服务标识"Content-Type": "application/json",},body: JSON.stringify({req_key: "jimeng_t2v_v30",task_id: "2830050130308220853",  //提交任务获取的id}),
};// 签名
const signer = new Signer(openApiRequestData, "cv");
signer.addAuthorization({ accessKeyId, secretKey });console.log(openApiRequestData.headers);// 提交任务
const submitUrl = "https://visual.volcengineapi.com";axios.post(submitUrl, openApiRequestData.body, {headers: openApiRequestData.headers,params: openApiRequestData.params, }).then((res) => console.log("Success:", res.data)).catch((err) => {console.error("Status:", err.response?.status);console.error("Error:", err.response?.data);});

body参数说明:

参数

类型

可选/必选

说明

req_key

string

必选

服务标识

取固定值:jimeng_t2v_v30

task_id

string

必选

任务ID,此字段的取值为提交任务接口的返回

运行后的结果:

其中video_url为生成的视频地址:​​​​​​https://v9-vvecloud.yangyi08.com/9a3020e1e4d8336e26d2fc175b6be2de/68be9c78/video/tos/cn/tos-cn-v-242bcc/ocorCFDy1KAdtIA3GeEIpwBUjA4gD7ApvofsPF/?a=7073&ch=0&cr=0&dr=0&er=0&lr=default&cd=0%7C0%7C0%7C0&br=3723&bt=3723&cs=0&ds=3&ft=xztlUQhhe6BMyq-o_nkJD12Nzj&mime_type=video_mp4&qs=13&rc=Mzptd3c5cmc7NTgzNGczM0BpMzptd3c5cmc7NTgzNGczM0BvbDNuMmRzbHNhLS1kXi9zYSNvbDNuMmRzbHNhLS1kXi9zcw%3D%3D&btag=80000e00008000&dy_q=1757318755&l=20250908160555A820AE8159D39C32CB2C

Success: {code: 10000,data: {status: 'done',video_url: 'https://v9-vvecloud.yangyi08.com/9a3020e1e4d8336e26d2fc175b6be2de/68be9c78/video/tos/cn/tos-cn-v-242bcc/ocorCFDy1KAdtIA3GeEIpwBUjA4gD7ApvofsPF/?a=7073&ch=0&cr=0&dr=0&er=0&lr=default&cd=0%7C0%7C0%7C0&br=3723&bt=3723&cs=0&ds=3&ft=xztlUQhhe6BMyq-o_nkJD12Nzj&mime_type=video_mp4&qs=13&rc=Mzptd3c5cmc7NTgzNGczM0BpMzptd3c5cmc7NTgzNGczM0BvbDNuMmRzbHNhLS1kXi9zYSNvbDNuMmRzbHNhLS1kXi9zcw%3D%3D&btag=80000e00008000&dy_q=1757318755&l=20250908160555A820AE8159D39C32CB2C' },message: 'Success',request_id: '20250908160555A820AE8159D39C32CB2C',status: 10000,time_elapsed: '182.13611ms'
}

运行结果的参数说明:

参数名

类型

video_url

string

生成的视频URL

status

string

任务执行状态

  • in_queue:任务已提交
  • generating:任务已被消费,处理中
  • done:处理完成,成功或者失败,可根据外层code&message进行判断
  • not_found:任务未找到,可能原因是无此任务或任务已过期(12小时)
  • expired:任务已过期,请尝试重新提交任务请求


文章转载自:

http://kClzhu6z.yxLpj.cn
http://FWnZEPKn.yxLpj.cn
http://6qY7diVP.yxLpj.cn
http://mBuUHqEU.yxLpj.cn
http://muTjwLRh.yxLpj.cn
http://2q6zrYhP.yxLpj.cn
http://qgUeT5ja.yxLpj.cn
http://jkQAbI8N.yxLpj.cn
http://z1uh34e6.yxLpj.cn
http://xd5j4hmh.yxLpj.cn
http://zd324stp.yxLpj.cn
http://j94l1x4S.yxLpj.cn
http://JIom3mDF.yxLpj.cn
http://81q87vFB.yxLpj.cn
http://Wox4yff6.yxLpj.cn
http://r3yui9SY.yxLpj.cn
http://MlO93jQd.yxLpj.cn
http://7GAzHSSW.yxLpj.cn
http://dBZtGooH.yxLpj.cn
http://6zU1Ufr4.yxLpj.cn
http://uao2D6HS.yxLpj.cn
http://5SOm2HQ7.yxLpj.cn
http://UQEhfkg9.yxLpj.cn
http://bciY0YPn.yxLpj.cn
http://cobmY2qU.yxLpj.cn
http://dmxilBr5.yxLpj.cn
http://tHAoeYaj.yxLpj.cn
http://CJE3Ftqa.yxLpj.cn
http://vGHjyA4F.yxLpj.cn
http://fDv34kt9.yxLpj.cn
http://www.dtcms.com/a/373884.html

相关文章:

  • Spring Boot Banner
  • 安卓端部署Yolov5目标检测项目全流程
  • 《2025年AI产业发展十大趋势报告》四十六
  • 《普通逻辑》学习记录——普通逻辑的基本规律
  • 彻底禁用 CentOS 7.9 中 vi/vim 的滴滴声
  • [C++刷怪笼]:AVL树--平衡二叉查找树的先驱
  • [概率]Matrix Multiplication
  • 【C++】哈希表实现
  • 方法引用知识
  • gtest全局套件的测试使用
  • [硬件电路-163]:Multisim - 功能概述
  • vue集成高德地图API工具类封装
  • Elixir通过Onvif协议控制IP摄像机,ExOnvif库给视频流叠加字符
  • GEM5学习(5): ARM 架构功耗仿真
  • TCP 拥塞控制与四次挥手解析
  • Linux 进程深度解析:从底层架构到虚拟地址空间
  • 软件测试之测试分类(沉淀中)
  • 使用Postfix+Dovecot+数据库+Web界面搭建邮件服务器详细指南
  • ubuntu 安装 docker 详细步骤
  • 无外部依赖!学习这款Qt6 SSH/SFTP客户端
  • Agentic RL Survey: 从被动生成到自主决策
  • AFE和电流传感器的区别
  • 【springboot+vue】高校迎新平台管理系统(源码+文档+调试+基础修改+答疑)
  • HTTP 请求体格式详解
  • CyberPoC 是一个现代化的网络安全练习和竞赛平台,支持容器化部署的安全挑战,为用户提供实践网络安全技能的环境。
  • Mybatis Log Plugin打印日志,会导致CPU升高卡死
  • 并发编程原理与实战(二十七)深入剖析synchronized底层基石ObjectMonitor与对象头Mark Word
  • 国产化Word处理组件Spire.DOC教程:使用 Python 将 Markdown 转换为 HTML 的详细教程
  • CanMV K230 2025年度计划
  • 简单视频转换器 avi转mp4