通用 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 在同一个版本.
见 更改日志。 。 。 .