@faiber/faiber-drm

中文文档
2.7.0发布于 2026/11/05TypeScriptES Module近 30 天下载 3802

被打入了媒体存储,被保护回放,可重复上传,DRM包装,内容库,组成,分析,以及知识同步.

中文使用文档

@faiber/faiber-drm (英语)

被打入了媒体存储,被保护回放,可重复上传,DRM包装,内容库,组成,分析,以及知识同步.

npm install @faiber/faiber-drm
import { DrmApi, FaiberClient, MemoryTokenProvider } from "@faiber/faiber-drm";

const drm = new DrmApi(new FaiberClient("drm", {
  domains: { drm: "https://drm.example.com" },
  tokenProvider: new MemoryTokenProvider({ accessToken }),
  axios: { timeout: 15_000 },
}));

const page = await drm.media({ search: "intro", media_type: "video", page: 1, size: 30 });
const uploaded = await drm.uploadMedia({ file, filename: "intro.mp4", name: "Introduction", tag_ids: [tagId] });
const original = await drm.playback(uploaded.data.id);
const statuses = await drm.drmStatuses({ ids: uploaded.data.id });
const packages = await drm.mediaPackages(uploaded.data.id);

不配置服务源 /api/v1或安全 Http axios: { withCredentials: true }。被绑定的后端的 IDP 中间软件提取了可信任的身份头并带有开发回落;它本身并不验证Bearer 令牌。 部署在识别网关后 核查身份并控制这些信封 SDK 通过共享发送配置的证书 FaiberClient 每一个电话。 公共地位终点不需要身份. 门户授权和本地服务验收需要部署核查.

媒体包括音频、视频和图像。 多段上传使用标准 FormData; 元数据字段为文本和 tag_ids 是一个 JSON UUID 阵列。 视频上传自动排队包装和可选的抄录. 原始回放是一个签名的URL,有效期为900秒,工作独立于软件包准备状态;存档媒体无法使用. 媒体记录包括无效的抄写,原始文件名,检查和存档时间戳. 批量媒体去除ID,最多按请求顺序返回50个已存在的记录并省略缺失的记录.

对于大文件,创建可更新的上传会话,发送编号为原始字节的部分,然后完成:

const session = await drm.createUploadSession({
  filename: "lecture.mp4", mime_type: file.type, total_bytes: file.size,
});
for (let start = 0, part = 1; start < file.size; start += session.data.part_size, part++) {
  await drm.uploadPart(session.data.id, part, file.slice(start, start + session.data.part_size));
}
const completed = await drm.completeUpload(session.data.id, {});

会议在24小时后结束。 部件编号为1-1000,必须是非空的,并且不能超过 part_size (默认为10 MiB,以5–64 MiB为界). 重新装入一个部件取代它的元数据 。 完成检查上传并存储的字节计数总数;重复完成的完成用HTTP 200而不是201返回现有媒体. 提供的校验和是存储的元数据 。 取消返回 HTTP 204.

packageFile(packageId, "video/segment-1.m4s", { headers: { Range: "bytes=0-1023" } }) 返回原始内容 ArrayBuffer 数据并保存 HTTP 200/206,内容类型和范围标题。 包文件和 ClearKey 许可证需要经过认证的共享传输 。 通关卡路径使用原始的非空分;分离器保持不变. 百分率出逃,点倒行走,查询/分解语法和回鞭局部失效. 软件包必须准备好;否则下载返回409。 需要清除密钥 { package_id } 并返回 JWK 临时关键材料; 保持其私密性.

客户端通过 drm.operations,具有通用工作流程的方便方法。 每个操作都记录其源许可:媒体,软件包,组成,内容,库,许可证和审计赠款按路线申请. 需要操作设置和复制模型目录 drm:manage; 需要永久库删除 drm:library:delete。列表的图书馆仅包括公共图书馆;直接的图书馆访问遵循路线许可。 分类和项目删除它们存档,而删除一个库则永久去除其内容和组成. 知识同步/目录 x-organization-id UUID 标题, 除非服务器配置默认组织 .

媒体、构成、项目查询、工作、分析和审计活动反馈 { data, page, page_size, total_items }没有额外的信封。 页面从 1 开始,大小为 1 - 100 。 媒体/项目/工作默认为30起,组成/分析为20起,审计为50起。 其他端点返回光记录或数组. 缺失的成分分析返回 JSON null; 成功删除不返回正文。 请求保留 snake case 字段 . category_id: null 清除混合介质类; 被绑定后端普通嵌入可选字段, 如介质 folder_id 和组成 description 将JSON视为无变化。 工作流节点/对接必须是数组;嵌入式编辑器数据,历史文档和元数据仍然是被记录的动态JSON. "知识目录"是一个未经修改的上游JSON响应.

每个呼叫都返回完整的Axios响应,并支持请求选项,包括信头,取消信号,超时,证书和适配器. Axios 错误保留后端状态 { error } 用于本地验证(400),授权(401/403),资源缺失(404),冲突(409)和内部故障(500);提取器故障可能使用框架出错机构. 以 Axios 取消错误拒绝取消 。 这个 完整 Faiber SDK 包含与 sdk.drm。 。 。 .

预览课堂组成

随着完整的SDK,将任何 LMS 会话行传递给 sdk.drm.classroomSessionComposition(row, { signal })。使用的方法 row.media.drm_mixed_media_id,与 row.course_session.drm_mixed_media_id 作为一个后退, 并返回包含已公布清单的 Axios 完整回复(data.document 财务报告和审定财务报表 data.version) (中文(简体) ). drm.compositionManifest(compositionId) 直接接受身份证明.

两种方法都需要 drm:composition:read 并使用DRM客户端认证的运输. 它们独立于教室类型、起始时间、锁和房间供应。 无链接 组合抛出 TypeError hTTP 之前; 没有公布的表单返回 404. 名单 是玩家输入,而不是公开的 MP4 URL 。 媒体/包装/许可证使用权保留自己的DRM赠款.

版本与发布记录

@faiber/faiber-drm 共发布 57 个版本,首次发布于 2026/08/09;过去 12 个月发布了 57 个版本。

版本发布日期距今
2.7.0latest2026/11/059 天前
2.6.02026/11/049 天前
2.5.02026/11/049 天前
2.4.02026/11/0310 天前
2.3.02026/11/0211 天前
2.2.02026/11/0212 天前

关于 @faiber/faiber-drm 的常见问题

@faiber/faiber-drm 是什么?

被打入了媒体存储,被保护回放,可重复上传,DRM包装,内容库,组成,分析,以及知识同步.

如何安装 @faiber/faiber-drm?

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

@faiber/faiber-drm 支持 TypeScript 吗?

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

@faiber/faiber-drm 支持 ESM 还是 CommonJS?

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

@faiber/faiber-drm 可以商用吗?

@faiber/faiber-drm 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@faiber/faiber-drm 的下载量有多少?

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

@faiber/faiber-drm 还在维护吗?

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