# @api\.video/nodejs-sdk 中文文档

规范地址：https://npmcn.com/package/%40api.video/nodejs-sdk/

版本：1\.10\.4
npm 元数据更新时间：2025-05-22T12:54:36.201Z
中文译文更新时间：2026-11-07T00:49:49.613Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40api.video/nodejs-sdk
原文对照：https://npmcn.com/package/%40api.video/nodejs-sdk/?lang=original
项目主页：https://github.com/apivideo/nodejs-sdk#readme
源码仓库：https://github.com/apivideo/nodejs-sdk

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：66.7 kB，40 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>=8
- 运行依赖：3 个
- 首次发布：2019-01-11T14:11:11.166Z
- 最新版本发布：2021-12-08T17:21:43.596Z
- 近 30 天下载量：2109（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：28（近 12 个月 0 个）

## 中文简介

Api.video的节点SDK

## 安装

```sh
npm install @api.video/nodejs-sdk
```

也可以使用：`pnpm add @api.video/nodejs-sdk`、`yarn add @api.video/nodejs-sdk`、`bun add @api.video/nodejs-sdk`

## README

[![badge](https://img.shields.io/twitter/follow/api_video?style=social)](https://twitter.com/intent/follow?screen_name=api_video)

[![badge](https://img.shields.io/github/stars/apivideo/nodejs-sdk?style=social)](https://github.com/apivideo/nodejs-sdk)

[![badge](https://img.shields.io/discourse/topics?server=https%3A%2F%2Fcommunity.api.video)](https://community.api.video/)

![](https://github.com/apivideo/API_OAS_file/blob/master/apivideo_banner.png)

api.video是一个API,在去上编码以方便即时回放,增强多个设备和平台的取景器流出经验. 您可以在几分钟内流出现场或点播在线视频.

# api.video 节点JS SDK

## 警告:这个SDK很快会 **已贬值** 将不再保留。 现改为: **[节点JS API 客户端](https://github.com/apivideo/nodejs-api-client)**请使用它.

[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/ApiVideo/nodejs-sdk/badges/quality-score.png?b=master&s=93531b005797e4b690cdbbe8459be0f75f1f3e6f)](https://scrutinizer-ci.com/g/ApiVideo/nodejs-sdk/?branch=master) [![Build Status](https://scrutinizer-ci.com/g/ApiVideo/nodejs-sdk/badges/build.png?b=master&s=e01c30ae25aa2b0472299c1d961faf67e48bda65)](https://scrutinizer-ci.com/g/ApiVideo/nodejs-sdk/build-status/master)

这个 [视频](https://api.video/) 网络服务帮助您将视频放入网络而无需麻烦. 此文档帮助您使用相应的节点JS客户端.

## 安装

```shell
npm install @api.video/nodejs-sdk
```

## 使用量

```javascript
const apiVideo = require('@api.video/nodejs-sdk');

(async () => {
  try {
    // Create client for Production and authenticate
    const client = new apiVideo.Client({ apiKey: 'xxx' });

    // Create and upload a video ressource
    const video = await client.videos.upload('test/data/small.webm', { title: 'Course #4 - Part B' });
    console.log(video);
  } catch (e) {
    console.error(e);
  }
})();
```

> 见 [沙盒. spec.js (英语)](https://npmcn.com/package/%40api.video/nodejs-sdk/test/sandbox.spec.js) 用于更多使用实例.

## 完整 API

```javascript
/**
 * VIDEO
 */
const client = new apiVideo.Client({ apiKey: 'xxx' });

// Show a video
client.videos.get(videoId);

// Show a video status
client.videos.getStatus(videoId);

// List or search videos
client.videos.search(parameters = {});

// Create video properties
client.videos.create(title, properties = {});

// Upload a video media file
// Create a video, if videoId is null
client.videos.upload(source, properties = {}, videoId = null);

// Create a video by downloading it from a third party
client.videos.download(source, title, properties = {});

// Update video properties
client.videos.update(videoId, properties);

// Set video public
client.videos.makePublic(videoId);

// Set video private
client.videos.makePrivate(videoId);

// Delete video (file and data)
client.videos.delete(videoId);

// Delegated upload (generate a token for someone to upload a video into your account)
result = client.tokens.generate(); // string(3): "xyz"
result.then(function(token) {
  // ...then upload from anywhere without authentication:
  //  curl https://ws.api.video/upload?token=xyz -F file=@video.mp4
});

/**
 * VIDEO THUMBNAIL
 */
// Upload a thumbnail for video
client.videos.uploadThumbnail(source, videoId);

// Update video's thumbnail by picking timecode
client.videos.updateThumbnailWithTimecode(videoId, timecode);

/**
 * VIDEO CAPTIONS
 */
// Get caption for a video
client.videos.captions.get(videoId, language);

// Get all captions for a video
client.videos.captions.getAll(videoId);

// Upload a caption file for a video (.vtt)
client.videos.captions.upload(source, properties);


// Set default caption for a video
client.videos.captions.updateDefault(videoId, language, isDefault);

// Delete video's caption
client.videos.captions.delete(videoId, language);

/**
 * VIDEO CHAPTERS
 */
// Get caption for a video
client.videos.chapters.get(videoId, language);

// Get all chapters for a video
client.videos.chapters.getAll(videoId);

// Upload a chapter file for a video (.vtt)
client.videos.chapters.upload(source, properties);

// Delete video's chapter
client.videos.chapters.delete(videoId, language);

/**
 * PLAYERS
 */
// Get a player
client.players.get(playerId);

// List players
client.players.search(parameters = {});

// Create a player
client.players.create(properties = {});

// Update player's properties
client.players.uploadLogo(source, playerId, link);

// Update player's properties
client.players.update(playerId, properties);

// Delete a player logo
client.players.deleteLogo(playerId);

// Delete a player
client.players.delete(playerId);

/**
 * LIVE
 */
// Show a live
client.lives.get(liveStreamId);

// List or search lives
client.lives.search(parameters = {});

// Create live properties
client.lives.create(name, properties = {});

// Update live properties
client.lives.update(liveStreamId, properties);

// Delete live (file and data)
client.lives.delete(liveStreamId);

/**
 * LIVE THUMBNAIL
 */
// Upload a thumbnail for live
client.lives.uploadThumbnail(source, liveStreamId);

/**
 * ANALYTICS
 */
// Get video analytics between period
client.analyticsVideo.get(videoId, period);

// Get live analytics between period
client.analyticsLive.get(liveStreamId, period);

// Get analytics session events
client.analyticsLive.get(sessionId, parameters);
```

## API 全部细节执行

### 视频

| **函数** | **参数** | **说明** | **需求** | **允许的值** |  
|:相去相去也;相去相去也;相去相去也;相去也;相去也;相去也;相去也;相去也;相去也;相去也 | **起来** QQ 视频Id( 字符串) QQ 视频标识符 QQ : havy check mark: QQ **\- 说吧** | | **获取状态** QQ 视频Id( 字符串) QQ 视频标识符 QQ : havy check mark: QQ **\- 说吧** | | **搜索** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ参数(对象) QQ搜索参数 Q:x:QQ

-   当前页( int)
-   页面大小( int)
-   排序By( 字符串)
-   排序顺序( 字符串)
-   关键字( 字符串)
-   标记( 字符串- 阵列( 字符串))
-   元数据( 阵列( 字符串) )

| | **创建** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ 标题( 字符串) QQ 视频标题 QQ:: havy check mark:QQ **\- 说吧** | | **\- 说吧** QQ 属性( 对象) QQ 视频属性 QQ: x: QQ

-   说明(字符串)
-   标记( 阵列( 字符串) )
-   播放器Id( 字符串)
-   元数据( 阵列 (a)  
    数组( r)  
    钥匙 钥匙 钥匙,  
    “ 值” qq“ 值1 ”  
    , (中文(简体) ),  
    数组( r)  
    钥匙 钥匙 钥匙,  
    “ 值” qq“ 值 2 ”  
    (中文(简体) )  
    (中文(简体) )
-   全景( 布尔)
-   公开( 博尔)
-   mp4 支持( 布尔)

| | **上传** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ source( 字符串) QQ Video media file QQ: havy check mark: QQ 视频媒体文件 : **\- 说吧** | | **\- 说吧** QQ 属性( 对象) QQ 视频属性 QQ: x: QQ

-   标题(字符串)
-   说明(字符串)
-   标记( 阵列( 字符串) )
-   播放器Id( 字符串)
-   元数据( 阵列 (a)  
    数组( r)  
    钥匙 钥匙 钥匙,  
    “ 值” qq“ 值1 ”  
    , (中文(简体) ),  
    数组( r)  
    钥匙 钥匙 钥匙,  
    “ 值” qq“ 值 2 ”  
    (中文(简体) )  
    (中文(简体) )

| | **\- 说吧** ###视频Id(字符串) ###视频标识符 ##:x: ### **\- 说吧** | | **上传Thumbnail** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ source( 字符串) QQ Image media file QQ: havy check mark:QQ **\- 说吧** | | **\- 说吧** QQ 视频Id( 字符串) QQ 视频标识符 QQ : havy check mark: QQ **\- 说吧** | | **更新 Thumbnail With TimeCode 程序** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ 视频Id( 字符串) QQ 视频标识符 QQ : havy check mark: QQ **\- 说吧** | | **\- 说吧** QQ 时间码( 字符串) QQ 视频时间码 : @: havy check mark: @ 00: 00: 00. 00.00  
(小时:分钟:秒.框架) | **更新** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ 视频Id () string QQ 视频标识符 # #: havy check mark: ### **\- 说吧** | | **\- 说吧** QQ 属性( 对象) QQ 视频属性 : 重度 check mark: QQ

-   标题(字符串)
-   说明(字符串)
-   标记( 阵列( 字符串) )
-   播放器Id( 字符串)
-   元数据( 阵列 (a)  
    数组( r)  
    钥匙 钥匙 钥匙,  
    “ 值” qq“ 值1 ”  
    , (中文(简体) ),  
    数组( r)  
    钥匙 钥匙 钥匙,  
    “ 值” qq“ 值 2 ”  
    (中文(简体) )  
    (中文(简体) )
-   全景( 布尔)
-   公开( 博尔)
-   mp4 支持( 布尔)

| | **公开** QQ 视频Id( 字符串) QQ 视频标识符 QQ : havy check mark: QQ **\- 说吧** | | **让私人** QQ 视频Id( 字符串) QQ 视频标识符 QQ : havy check mark: QQ **\- 说吧** | | **删除** QQ 视频Id( 字符串) QQ 视频标识符 QQ : havy check mark: QQ **\- 说吧** |

### 玩家

| **函数** | **参数** | **说明** | **需求** | **允许的值** |
| :-: | :-: | :-: | :-: | :-- |
| **起来** | 播放器Id( 字符串) | 玩家标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **创建** | 属性(对象) | 玩家属性 | : x : | 
-   形状马金( int)
-   形状Radius( int)
-   形状( 字符串)
-   形状背景Top( 字符串)
-   形状背景Bottom( 字符串)
-   文本(字符串)
-   链接(字符串)
-   链接Hover( 字符串)
-   链接动作( 字符串)
-   音轨播放( 字符串)
-   未播放的音轨( 字符串)
-   音轨背景( 字符串)
-   背景Top( 字符串)
-   背景Bottom( 字符串)
-   背景Text( 字符串)
-   启用 Api( bool)
-   启用控制( bool)
-   强制自动播放( bool)
-   隐藏标签( bool)

 |
| **上传Logo** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** |
| **\- 说吧** | 源( 字符串) | 日志文件 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 播放器Id( 字符串) | 玩家标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 链接(字符串) | 日志链接 | : 重度 检查 标记 : | **\- 说吧** |
| **搜索** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** |
| **\- 说吧** | 参数(对象) | 搜索参数 | : x : | 

-   当前页( int)
-   页面大小( int)
-   排序By( 字符串)
-   排序顺序( 字符串)

 |
| **更新** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** |
| **\- 说吧** | 播放器Id( 字符串) | 玩家标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 属性(对象) | 玩家属性 | : 重度 检查 标记 : | 

-   形状马金( int)
-   形状Radius( int)
-   形状( 字符串)
-   形状背景Top( 字符串)
-   形状背景Bottom( 字符串)
-   文本(字符串)
-   链接(字符串)
-   链接Hover( 字符串)
-   链接动作( 字符串)
-   音轨播放( 字符串)
-   未播放的音轨( 字符串)
-   音轨背景( 字符串)
-   背景Top( 字符串)
-   背景Bottom( 字符串)
-   背景Text( 字符串)
-   启用 Api( bool)
-   启用控制( bool)
-   强制自动播放( bool)
-   隐藏标签( bool)

 |
| **删除Logo** | 播放器Id( 字符串) | 玩家标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **删除** | 播放器Id( 字符串) | 玩家标识符 | : 重度 检查 标记 : | **\- 说吧** |

### 说明

| **函数** | **参数** | **说明** | **需求** | **允许的值** |
| :-: | :-: | :-: | :-: | :-- |
| **起来** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** |
| **\- 说吧** | 视频Id( 字符串) | 视频标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 语言(字符串) | 语言标识符 | : 重度 检查 标记 : | 2个字母( 前: en, f) |
| **获取全部** | 视频Id( 字符串) | 视频标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **上传** | **\- 说吧** | **\- 说吧** | \- 说吧 | **\- 说吧** |
| **\- 说吧** | 源( 字符串) | 说明文件 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 属性( 字符串) | 说明属性 | : 重度 检查 标记 : | 
-   视频Id( 字符串)
-   语言( 字符串 - 2个字母)

 |
| **更新** | **\- 说吧** (标 题) | **\- 说吧** | \- 说吧 | **\- 说吧** |
| **\- 说吧** | 视频 | 视频标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 语言(字符串) | 语言标识符 | : 重度 检查 标记 : | 2个字母( 前: en, f) |
| **\- 说吧** | 默认( 字符串) | 设置默认语言 | : 重度 检查 标记 : | 真实/虚假 |
| **删除** | **\- 说吧** | **\- 说吧** | \- 说吧 | **\- 说吧** |
| **\- 说吧** | 视频 | 视频标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 语言(字符串) | 语言标识符 | : 重度 检查 标记 : | 2个字母( 前: en, f) |

### 章节

| **函数** | **参数** | **说明** | **需求** | **允许的值** |
| :-: | :-: | :-: | :-: | :-- |
| **起来** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** |
| **\- 说吧** | 视频Id( 字符串) | 视频标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 语言(字符串) | 语言标识符 | : 重度 检查 标记 : | 2个字母( 前: en, f) |
| **获取全部** | 视频Id( 字符串) | 视频标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **上传** | **\- 说吧** | **\- 说吧** | \- 说吧 | **\- 说吧** |
| **\- 说吧** | 源( 字符串) | 章节文件 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 属性( 字符串) | 章节属性 | : 重度 检查 标记 : | 
-   视频Id( 字符串)
-   语言( 字符串 - 2个字母)

 |
| **删除** | **\- 说吧** | **\- 说吧** | \- 说吧 | **\- 说吧** |
| **\- 说吧** | 视频 | 视频标识符 | : 重度 检查 标记 : | **\- 说吧** |
| **\- 说吧** | 语言(字符串) | 语言标识符 | : 重度 检查 标记 : | 2个字母( 前: en, f) |

### 活着

| **函数** | **参数** | **说明** | **需求** | **允许的值** |  
|:相去相去也;相去相去也;相去相去也;相去也;相去也;相去也;相去也;相去也;相去也;相去也 | **起来** ################################################################################################################################################################################################################################################################ **\- 说吧** | | **搜索** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ参数(对象) QQ搜索参数 Q:x:QQ

-   当前页( int)
-   页面大小( int)
-   排序By( 字符串)
-   排序顺序( 字符串)

| | **创建** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ 名称( 字符串) QQ 活名 : @: havy check mark: @ @ **\- 说吧** | | **\- 说吧** QQ 属性( 对象) QQ Live 属性 : X: QQ

-   记录(布尔)
-   播放器Id( 字符串)

| | **上传Thumbnail** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ source( 字符串) QQ Image media file QQ: havy check mark:QQ **\- 说吧** | | **\- 说吧** ################################################################################################################################################################################################################################################################ **\- 说吧** | | **更新** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ活生生的StreamId () string QQ活生生的标识 QQ:重度 检查 标记:QQ **\- 说吧** | | **\- 说吧** QQ 属性( 对象) QQ 活性属性 QQ: 重度 check mark: QQ

-   名称( 字符串)
-   记录(布尔)
-   播放器Id( 字符串)

| | **删除** ################################################################################################################################################################################################################################################################ **\- 说吧** |

### 分析视频

| **函数** | **参数** | **说明** | **需求** | **允许的值/格式** |  
|:相去相去也;相去相去也;相去相去也;相去也;相去也;相去也;相去也;相去也;相去也;相去也 | **起来** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ 视频Id( 字符串) QQ 视频标识符 QQ : havy check mark: QQ **\- 说吧** | | **\- 说吧** 时间(弦) 时间(弦) 研究 : : :

-   一天时间: 2018-01-01
-   一个星期:2018-W01
-   一个月:2018-01
-   为期一年:2018年
-   日期范围:2018-01-2018-01-15
|

### 分析活性

| **函数** | **参数** | **说明** | **需求** | **允许的值/格式** |  
|:相去相去也;相去相去也;相去相去也;相去也;相去也;相去也;相去也;相去也;相去也;相去也 | **起来** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** ################################################################################################################################################################################################################################################################ **\- 说吧** | | **\- 说吧** 时间(弦) 时间(弦) 研究 : : :

-   一天时间: 2018-01-01
-   一个星期:2018-W01
-   一个月:2018-01
-   为期一年:2018年
-   日期范围:2018-01-2018-01-15

|

### 分析会话

| **函数** | **参数** | **说明** | **需求** | **允许的值/格式** |  
|:相去相去也;相去相去也;相去相去也;相去也;相去也;相去也;相去也;相去也;相去也;相去也 | **起来** | **\- 说吧** | **\- 说吧** | **\- 说吧** | **\- 说吧** | | **\- 说吧** QQ会话Id( 字符串) QQ会话标识符 : @: havy check mark: @ @ **\- 说吧** | | **\- 说吧** QQ 参数( 阵列) QQ 搜索参数 QQ: x: QQ

-   当前页( int)
-   页面大小( int)

|

### 键

| **函数** | **参数** | **说明** | **需求** | **允许的值** |  
|:相去相去也;相去相去也;相去相去也;相去也;相去也;相去也;相去也;相去也;相去也;相去也 | **生成** | **\- 说吧** QQ 用于授权上传QQ **\- 说吧** | **\- 说吧** |

### 账户

| **函数** | **参数** | **说明** | **需求** | **允许的值** |  
|:相去相去也;相去相去也;相去相去也;相去也;相去也;相去也;相去也;相去也;相去也;相去也 | ~**起来**~ | **\- 说吧** | ~获取账户信息( 配额, 特性)~ | **\- 说吧** | **\- 说吧** |

## 更多关于 api.video

技术文件全文见 [页:1](https://docs.api.video/)

## 测试

```
npm run test
```

您也可以针对您实际的沙盒运行一系列命令 :

```
API_KEY=xxx npm run test:sandbox
```

> 使用 **沙盒 API 密钥** 而不是你的制作钥匙.

## 常见问题

### @api\.video/nodejs-sdk 是什么？

Api\.video的节点SDK

### 如何安装 @api\.video/nodejs-sdk？

在项目目录运行 npm install @api\.video/nodejs-sdk，或使用 pnpm add / yarn add / bun add。

### @api\.video/nodejs-sdk 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/api\.video\_\_nodejs-sdk 是否存在。

### @api\.video/nodejs-sdk 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @api\.video/nodejs-sdk 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=8。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @api\.video/nodejs-sdk 可以商用吗？

@api\.video/nodejs-sdk 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @api\.video/nodejs-sdk 的下载量有多少？

根据 npm 官方下载统计，@api\.video/nodejs-sdk 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,109 次，日均约 70 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @api\.video/nodejs-sdk 还在维护吗？

最新版本 1\.10\.4 发布于 2021/12/09（4 年前）；至今共发布 28 个版本，其中过去 12 个月发布了 0 个；首次发布于 2019/01/11。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

