@caprid/moq-core

中文文档
0.4.0发布于 2026/11/06Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 2196

独立运输 MOQT 轨道原始

中文使用文档
文档目录6 节
  1. 订阅方
  2. 出版边
  3. 电线助手
  4. 准备接力
  5. 证明
  6. 稳定

通用 MoQ 核心

@caprid/moq-core 运行带有任意跟踪对象的 MOQT 会话。 它没有运行时间依赖性,也没有 导入中继产品代码或 Video.js.

核心会讲MOQT第22稿,并用选择它的同级词来起草第20稿. 它接收订阅对象超过可靠 流经. 它不执行应用时间,解码,数据克接收,或自动会话恢复.

订阅方

createMoqtSession 搭乘固定的运输工具 从那时起拥有它 订阅、获取和跟踪状态请求 带回召处理器。 它们通过未经解释的记录生命周期,传递有效载荷和物体特性 通知书. MoqTrackSource 被借入会话 subscribe, (中文(简体) ), fetch,以及 trackStatus: 持有者可以 提出请求但无法关闭传输.

出版边

createMoqtPublishSession 为单独的运输工具提供命名空间及其已注册的轨道。 音轨属性为 明确,所以音轨没有默认的媒体时标 . createSubgroupWriter 写入任意对象有效载荷和 元数据。 上面的出版政策,例如 @caprid/relay被捆绑的单对象组,属于SDK.

两个发布会的钩子服务于比SDK更能追踪的嵌入器:

  • 注册音轨 getLargestObject 设置 LARGEST_OBJECT 和请求。 会话没有 对象,因此它用填充取来响应非空填充请求,该取取流在FETCH HEADER后重排.
  • end({ after }) 保留一个音轨的结束,直到最后一组被写入。 它还在有秩序的关闭期间进行.

电线助手

套件索引还输出嵌入器需要的线常数和纯辅助器: TRACK_PROPERTY, (中文(简体) ), compareLocations, (中文(简体) ), isEmptyFetchRange, (中文(简体) ), encodeFetchHeader, (中文(简体) ), isRetryableRequestErrorCode, (中文(简体) ), isRetryablePublishDoneStatus, (中文(简体) ), utf8Decode,和关闭的界限 CLOSE_FLUSH_TIMEOUT_MS 财务报告和审定财务报表 CLOSE_END_ACK_TIMEOUT_MS。 。 。 .

准备接力

一个对发布会话播放中继器末端的测试需要客户端表面留下的两样东西.

createMoqtSession(transport, { perspective: 'server' }) 分配服务器的请求ID, 奇数和从 1 开始 , 并且要求对等者为偶(第6.4.2.1节)。 默认, 'client',从 0 分配甚至ID,并需要奇数 这些。 一个出版会话总是客户端 并且把每个子CRIBE的请求ID 作为订阅的 Track Alias, 因此,一个服务器预测会话的前两个订阅会得到别名1和3.

@caprid/moq-core/wire 导出用于驱动会话字节字节的解码器, 在索引的 semver 下 : StreamReader 财务报告和审定财务报表 utf8Encode· ; ControlMessageDeframer, (中文(简体) ), decodeControlMessage 编辑 ControlMessage 类型; encodeSetup, (中文(简体) ), encodeSubscribe, (中文(简体) ), encodeSubscribeOk, (中文(简体) ), encodeSubscribeNamespace, (中文(简体) ), encodePublish, (中文(简体) ), encodePublishDone, (中文(简体) ), encodeRequestError 财务报告和审定财务报表 encodeGoaway· ; STREAM_TYPE, (中文(简体) ), isSubgroupHeaderType, (中文(简体) ), readSubgroupHeader, (中文(简体) ), readSubgroupObjects 财务报告和审定财务报表 readFetchHeader· ; encodeVarint 财务报告和审定财务报表 decodeVarint。从中导入 而不是从 dist/protocol/*,其布局不属于API.

import { createMoqtPublishSession, createMoqtSession } from '@caprid/moq-core';
import { encodeSubscribe } from '@caprid/moq-core/wire';

const publisher = createMoqtPublishSession(pair.client);
const relay = createMoqtSession(pair.server, { perspective: 'server' });
// relay.subscribe(...) sends Request IDs 1, 3, 5, ...; a raw SUBSCRIBE from encodeSubscribe needs an odd one too.

证明

实施及其回归测试来自Video.js,在Apache-2.0下. UPSTREAM.json 记录源 修订,原始文件散列, 以及此后所做的所有更改,和 NOTICE 携带归属。 视频.js 仍然 拥有自己的这些模块副本。 将 Video.js 移动到这个软件包上是一个单独的步骤.

关于中继应用程序的使用和当地安装,从 JavaScript 快速启动。 。 。 .

稳定

在1.0之前,一个小版本可以打破API. 此软件包随 @caprid/relay 在同一个版本. 见 更改日志。 。 。 .

版本与发布记录

@caprid/moq-core 共发布 7 个版本,首次发布于 2026/10/27;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.4.0latest2026/11/063 天前
0.3.02026/10/319 天前
0.2.02026/10/2911 天前
0.1.12026/10/2812 天前
0.1.02026/10/2713 天前
0.0.02026/10/2713 天前

关于 @caprid/moq-core 的常见问题

@caprid/moq-core 是什么?

独立运输 MOQT 轨道原始

如何安装 @caprid/moq-core?

在项目目录运行 npm install @caprid/moq-core,或使用 pnpm add / yarn add / bun add。

@caprid/moq-core 支持 TypeScript 吗?

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

@caprid/moq-core 支持 ESM 还是 CommonJS?

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

@caprid/moq-core 需要什么版本的 Node.js?

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

@caprid/moq-core 可以商用吗?

@caprid/moq-core 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@caprid/moq-core 的下载量有多少?

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

@caprid/moq-core 还在维护吗?

最新版本 0.4.0 发布于 2026/11/06(3 天前);至今共发布 7 个版本,其中过去 12 个月发布了 7 个;首次发布于 2026/10/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。