# @4players/odin 中文文档

规范地址：https://npmcn.com/package/%404players/odin/

版本：1\.11\.0
npm 元数据更新时间：2026-11-01T16:51:24.451Z
中文译文更新时间：2026-11-06T12:08:28.088Z
软件包许可：ISC

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

原始 npm 页面：https://www.npmjs.com/package/%404players/odin
原文对照：https://npmcn.com/package/%404players/odin/?lang=original
项目主页：https://www.4players.io/
源码仓库：https://github.com/4Players/odin-sdk-web

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

- 包体积（解压后）：136 kB，45 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12
- 运行依赖：2 个
- 首次发布：2022-02-20T15:39:07.425Z
- 最新版本发布：2026-11-01T16:51:24.254Z
- 近 30 天下载量：3275（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：130（近 12 个月 32 个）

## 中文简介

一个跨平台的 SDK 使开发者能够将实时 VoIP 聊天技术整合到他们的项目中

## 安装

```sh
npm install @4players/odin
```

也可以使用：`pnpm add @4players/odin`、`yarn add @4players/odin`、`bun add @4players/odin`

## README

# @ 4 玩家/ 食人鱼

[![npm](https://img.shields.io/npm/v/@4players/odin.svg)](https://www.npmjs.com/package/@4players/odin) [![npm](https://img.shields.io/npm/l/@4players/odin.svg)](https://github.com/4Players/odin-sdk-web/blob/main/LICENSE) [![npm](https://img.shields.io/npm/dm/@4players/odin.svg)](https://www.npmjs.com/package/@4players/odin)

ODIN是一个多功能的跨平台软件开发Kit(SDK)被设计成能无缝地将实时语音聊天整合到多人游戏,应用程序和网站中. ODIN简化了与您重要联系人保持连接的过程。 ODIN通过其直观界面和强大的功能,加强互动经验,促进各种数字平台之间的实时接触与合作.

您可以在管理云和自托管解决方案之间选择。 让 [4Players 股份有限公司](https://www.4players.io/) 处理安装、管理和带宽费用或运行我们 [服务器软件](https://github.com/4Players/odin-server) 完全控制并定制您的部署环境.

[在线文档](https://docs.4players.io/voice/web) • 妇女 [API 参考](https://docs.4players.io/voice/web/api/)

## 安装

### 国家预防机制(建议)

```bash
npm install @4players/odin
```

包括类型定义。 音频插件( E)`@4players/odin-plugin-web`)是一种依赖,在需要时自动加载(例如,在呼叫时) `ensurePlugin()` 或者说 `setOutputDevice()`) (中文(简体) ).

### CDN (浏览器)

对于只使用浏览器,您可以通过CDN加载SDK. 偏好选择特定版本来避免突破更改 :

-   **IIFE (英语)**数字 : `https://cdn.odin.4players.io/client/js/sdk/<version>/odin-sdk.js` (全球 `ODIN`(中文(简体) )
-   **无害环境管理**数字 : `https://cdn.odin.4players.io/client/js/sdk/<version>/odin-sdk.esm.js`

见 [文档](https://docs.4players.io/voice/web) 用于当前版本和使用.

## 特征

### 高级音频处理

ODIN通过在网页浏览器中发现的基本音频处理功能之外提供一套全面的过滤器,增强了您在VoIP聊天期间的音频体验. 这些增强是默认启动的,确保了清晰而无中断的通信.

-   **语音活动检测**  
    启用后,ODIN使用智能语音检测算法分析音频输入信号以确定语音的存在. 您可以定义启动和停止传输所需的概率 .
-   **输入音量门**  
    启用后,音量闸会测量输入音频信号的音量,从而决定一个用户何时发出足够大的声音来传输语音数据. 您可以定义根的正方形功率( dBFS) , 用于门应该何时接触和脱离 .

### 网络运输(HTTP/3)支持

我们使用最新的WebTransport API实时传输语音数据,与WebRTC进行无缝回落以与更古老的浏览器兼容.

### 端到端加密( Cipher)

ODIN通过使用可插接的OdinCipher模块支持端到端加密(E2EE). 这使得您能够使用共享的房间密码——而不依赖服务器作为信任锚点——来保护所有数据、信件和同伴用户数据.

## 快速启动

1.  安装软件包,并确保音频在之后启动 **用户交互** (例如点击按钮).
2.  登记册 **事件处理器** 打电话前 **`room.join()`** 因此,您会收到在加入时发生的事件(例如已经在房间里的远程对等器).
3.  仅在之后发送音频 **`room.addAudioInput(audioInput)`**。 。 。 .
4.  打电话 **`setOutputDevice({})`** 以听到其他同位素(可以随时调用以设置或切换输出设备).

### JavaScript / 类型脚本示例

```js
import {
  setOutputDevice,
  Room,
  DeviceManager,
} from '@4players/odin';

let room;
let audioInput;

async function joinRoom(token) {
  await setOutputDevice({});

  room = new Room();
  room.onJoined = (payload) => console.log('Joined', payload.room.id);
  room.onLeft = (payload) => console.log('Left', payload?.reason);
  room.onPeerJoined = (payload) => console.log('Peer joined', payload.peer.userId);
  room.onPeerLeft = (payload) => console.log('Peer left', payload.peer.userId);
  room.onDatagramStatusChanged = (payload) => console.log('Audio', payload.newState.status);

  // Waits up to 5 s for the audio path to open; see `waitForAudio`
  await room.join(token, { gateway: 'https://gateway.odin.4players.io' });

  audioInput = await DeviceManager.createAudioInput();
  await room.addAudioInput(audioInput);
}

async function leaveRoom() {
  if (audioInput && room) {
    room.removeAudioInput(audioInput);
    audioInput.close();
  }
  if (room) room.leave();
  room = undefined;
  audioInput = undefined;
}

// Call from a user gesture (e.g. button click).
joinRoom('__YOUR_TOKEN__');
```

键必须生成服务器侧 。 见 [文档](https://docs.4players.io/voice/web) 用于认证和网关选项.

## 解决问题

-   **没有对等者的音频**: 确保 `setOutputDevice({})` 已被调用以配置输出设备.
-   **未传送的麦克风**: 确保 `room.addAudioInput(audioInput)` 在加入后被调用.
-   **不允许音频背景**:从用户交互(点击/tap)开始流出.
-   **已加入, 但音频没有连接**数字 : `room.join()` 最多等待5秒的音频路径,然后解决 无论如何,所以检查 `room.datagramStatus` (或听 `DatagramStatusChanged`)并显示其状态. 过 `waitForAudio` 改为 `room.join()` 等待更长的时间,或 `false` 完全不会等待.
-   **未开火的事件**: 登记所有事件处理器 **在此之前** 电话 `room.join()` 因此,您会收到在加入时发生的事件(例如已经在房间里的远程对等器).

### 解析器

加入我们的官方Discord服务器与我们聊天,成为4Players ODIN社区的一部分.

[![Join us on Discord](https://www.4players.io/images/join_discord.png)](https://4np.de/discord)

### X (原Twitter) (中文(简体) )

给我们打个电话 [@ODIN4 请检查url=值 (帮助). 玩家](https://x.com/ODIN4Players)。 。 。 .

### 电子邮件

[奥丁@ 4players.io](mailto:odin@4players.io)

## 扶养费

更新依赖关系时使用 npm 12 或更新, 双十天发布 年龄和性别 `@4players/*` 例外规定得到执行。 检查 `npm --version` 财务报告和审定财务报表 `npm config get min-release-age` 在安装前。 保存登记册证书 在您的用户配置或 CI 机密中, 外部跟踪的政策文件.

选择至少十天前的稳定释放,包括过渡依赖. 第三方 `@4players/*` 软件包豁免;其第三方依赖性 没有。 将 TypeScript 保留在 6.x 上, 并调整 ODIN 共享版本 同行要求允许的仓库。 保存和审查锁文件; 现有锁定版本不是释放年龄资格的证据.

安装方式 `npm install --min-release-age=10 --min-release-age-exclude='@4players/*'`。 。 。 . 使用 `npm ci` 用于从已审查的锁文件复制的安装.

每个独立安装的示例或测试应用程序都带有自己的 `.npmrc`,因为 npm 工程配置是本地到安装根.

## 常见问题

### @4players/odin 是什么？

一个跨平台的 SDK 使开发者能够将实时 VoIP 聊天技术整合到他们的项目中

### 如何安装 @4players/odin？

在项目目录运行 npm install @4players/odin，或使用 pnpm add / yarn add / bun add。

### @4players/odin 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @4players/odin 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @4players/odin 需要什么版本的 Node\.js？

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

### @4players/odin 可以商用吗？

@4players/odin 使用 ISC 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @4players/odin 的下载量有多少？

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

### @4players/odin 还在维护吗？

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

