# @dyteinternals/mediasoup-client 中文文档

规范地址：https://npmcn.com/package/%40dyteinternals/mediasoup-client/

版本：3\.6\.89
npm 元数据更新时间：2025-09-22T09:12:37.502Z
中文译文更新时间：2026-11-13T02:50:30.867Z
软件包许可：ISC

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

原始 npm 页面：https://www.npmjs.com/package/%40dyteinternals/mediasoup-client
原文对照：https://npmcn.com/package/%40dyteinternals/mediasoup-client/?lang=original
项目主页：https://mediasoup.org/
源码仓库：https://github.com/dyte-in/mediasoup-client

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

- 包体积（解压后）：543 kB，112 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=14
- 运行依赖：8 个
- 首次发布：2023-02-15T08:38:01.881Z
- 最新版本发布：2023-12-12T05:47:34.231Z
- 近 30 天下载量：4178（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：14（近 12 个月 0 个）

## 中文简介

介面客户端 JavaScript 库

## 安装

```sh
npm install @dyteinternals/mediasoup-client
```

也可以使用：`pnpm add @dyteinternals/mediasoup-client`、`yarn add @dyteinternals/mediasoup-client`、`bun add @dyteinternals/mediasoup-client`

## README

# 媒体客户端 v3

[![](https://img.shields.io/npm/v/mediasoup-client.svg)](https://npmjs.org/package/mediasoup-client) [![](https://github.com/versatica/mediasoup-client/actions/workflows/mediasoup-client.yaml/badge.svg)](https://github.com/versatica/mediasoup-client/actions/workflows/mediasoup-client.yaml) [![](https://img.shields.io/opencollective/all/mediasoup.svg)](https://opencollective.com/mediasoup/)

用于构建的 JavaScript 客户端库 [媒体](https://mediasoup.org/) 基于应用程序.

## 网站和文件

-   [页:1](https://mediasoup.org/)

## 支助论坛

-   [(原始内容存档于2018-10-21). mediasoup.discription.group](https://mediasoup.discourse.group/)

## 用法示例

```js
import { Device } from 'mediasoup-client';
import mySignaling from './my-signaling'; // Our own signaling stuff.

// Create a device (use browser auto-detection).
const device = new Device();

// Communicate with our server app to retrieve router RTP capabilities.
const routerRtpCapabilities = await mySignaling.request('getRouterCapabilities');

// Load the device with the router RTP capabilities.
await device.load({ routerRtpCapabilities });

// Check whether we can produce video to the router.
if (!device.canProduce('video'))
{
  console.warn('cannot produce video');

  // Abort next steps.
}

// Create a transport in the server for sending our media through it.
const { 
  id, 
  iceParameters, 
  iceCandidates, 
  dtlsParameters,
  sctpParameters
} = await mySignaling.request(
  'createTransport',
  {
    sctpCapabilities : device.sctpCapabilities
  });

// Create the local representation of our server-side transport.
const sendTransport = device.createSendTransport(
  {
    id, 
    iceParameters, 
    iceCandidates, 
    dtlsParameters,
    sctpParameters
  });

// Set transport "connect" event handler.
sendTransport.on('connect', async ({ dtlsParameters }, callback, errback) =>
{
  // Here we must communicate our local parameters to our remote transport.
  try
  {
    await mySignaling.request(
      'transport-connect',
      {
        transportId: sendTransport.id,
        dtlsParameters
      });

    // Done in the server, tell our transport.
    callback();
  }
  catch (error)
  {
    // Something was wrong in server side.
    errback(error);
  }
});

// Set transport "produce" event handler.
sendTransport.on(
  'produce',
  async ({ kind, rtpParameters, appData }, callback, errback) =>
  {
    // Here we must communicate our local parameters to our remote transport.
    try
    {
      const { id } = await mySignaling.request(
        'produce',
        { 
          transportId : sendTransport.id,
          kind,
          rtpParameters,
          appData
        });

      // Done in the server, pass the response to our transport.
      callback({ id });
    }
    catch (error)
    {
      // Something was wrong in server side.
      errback(error);
    }
  });

// Set transport "producedata" event handler.
sendTransport.on(
  'producedata',
  async ({ sctpStreamParameters, label, protocol, appData }, callback, errback) =>
  {
    // Here we must communicate our local parameters to our remote transport.
    try
    {
      const { id } = await mySignaling.request(
        'produceData',
        { 
          transportId : sendTransport.id,
          sctpStreamParameters,
          label,
          protocol,
          appData
        });

      // Done in the server, pass the response to our transport.
      callback({ id });
    }
    catch (error)
    {
      // Something was wrong in server side.
      errback(error);
    }
  });

// Produce our webcam video.
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
const webcamTrack = stream.getVideoTracks()[0];
const webcamProducer = await sendTransport.produce({ track: webcamTrack });

// Produce data (DataChannel).
const dataProducer =
  await sendTransport.produceData({ ordered: true, label: 'foo' });
```

## 作者数

-   伊纳基·巴兹·卡斯蒂略 \[[网站](https://inakibaz.me/)|[gi](https://github.com/ibc/)\[ . \]
-   何塞·路易斯·米兰(签名)[gi](https://github.com/jmillan/)\[ . \]

## 社会

-   微博: [@ mediasoup sfu](https://twitter.com/mediasoup_sfu)

## 发起人

您可以支持介质咨询 [赞助](https://mediasoup.org/sponsor/) 这个 谢谢!

## 许可证

[公务员制度委员会](https://npmcn.com/package/%40dyteinternals/mediasoup-client/LICENSE)

## 常见问题

### @dyteinternals/mediasoup-client 是什么？

介面客户端 JavaScript 库

### 如何安装 @dyteinternals/mediasoup-client？

在项目目录运行 npm install @dyteinternals/mediasoup-client，或使用 pnpm add / yarn add / bun add。

### @dyteinternals/mediasoup-client 支持 TypeScript 吗？

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

### @dyteinternals/mediasoup-client 支持 ESM 还是 CommonJS？

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

### @dyteinternals/mediasoup-client 需要什么版本的 Node\.js？

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

### @dyteinternals/mediasoup-client 可以商用吗？

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

### @dyteinternals/mediasoup-client 的下载量有多少？

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

### @dyteinternals/mediasoup-client 还在维护吗？

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

