这个项目能做什么

Media Transport Library (MTL) 是一个开源、基于软件的媒体传输栈,旨在通过 IP 网络高吞吐、低时延地发送和接收媒体数据。它内置面向受管 IP 网络专业媒体的 SMPTE ST 2110 套件实现,并且设计为运行在商用现货 (COTS) 硬件上,而非专用设备。 方法与架构 MTL 通过利用常见 CPU 平台和具备限速能力的常规网卡,在软件中满足 ST 2110 流严格的时序要求。它基于 DPDK 的环境抽象层进行内存和核心管理,并引入虚拟数据路径后端层,向上层提供统一的数据包发送/接收接口。支持三种后端类型: - DPDK 轮询模式驱动程序 (PMD):绕过内核网络栈直接访问硬件,避免用户/内核上下文切换和 IRQ 处理。 - 原生 Linux 内核网络套接字栈:用于兼容更广泛的内核生态系统。 - 带 eBPF 过滤器的 AF_XDP:在性能与内核集成之间取得平衡。 采用基于 tasklet 的异步调度器来优化 CPU 利用率,并与数据包处理单元和加速器集成。数据包定速支持多种算法,包括部分硬件卸载的 RL(Rate Limit,限速)和完全基于软件的 TSC(Timestamp Counter,时间戳计数器)。SIMD 用于大端/小端字节序色彩空间转换,同时还提供 DMA 和插件接口。 特性 - 数据路径后端:DPDK PMD、原生内核套接字,以及带 eBPF 过滤器的 AF_XDP。 - 非 root 运行。 - 多进程处理,每个进程最多支持 8 张网卡。 - 通过 SR-IOV 支持虚拟化。 - 内置 PTP 协议,并支持硬件时间戳卸载。 - FFmpeg 插件、OBS (Open Broadcaster Software) 插件,以及 Intel Media SDK 支持。 - 原生 C/C++ API,并提供 Python 和 Rust 绑定。 ST 2110 能力 - 窄定速 (narrow pacing) 和宽定速 (wide pacing),并发布了该软件方案上窄定速的合规报告。 - ST 2110-10、-20、-21、-30、-40 以及 ST 2022-7。 - 分辨率包括 1080p、1080i、720p、4K 和 8K。 - 帧率:120、119.88、100、60、59.94、50、30、29.97、25、24 和 23.98。 - ST 2110-20 中列出的所有视频格式,包括 YUV 4:2:2 10-bit。 - 大端与小端之间的 SIMD 色彩空间转换器。 - ST 2110-22,提供编码器/解码器插件接口。 - 通过 RTP passthrough 接口支持 ST 2022-6。 - ST 2110-20 RX 时序合规解析器,支持硬件接收时间戳卸载。 硬件说明 以太网支持取决于所选后端。对于 DPDK PMD,支持的硬件列表由 DPDK 项目维护。如果某张网卡不受 DPDK 支持,可使用内核套接字传输作为回退。该项目表示,日常开发和验证主要针对 Intel E810 和 E830 系列网卡,不保证其他网卡上的行为。由于限速特性,窄发送定速仅在使用 DPDK PMD 的 Intel E810/E830 上支持;其他配置必须使用 TSC 作为定速源,且仅提供宽定速。 构建与运行 项目构建指南提供了 DPDK、该库和示例应用的构建说明,另有独立的 Windows 构建指南。运行指南介绍了基于 DPDK PMD 后端的 ST 2110 演示流水线,还提供了针对 Windows、Linux、使用 VF 直通的 Windows 客户机虚拟机、AWS 云环境以及内核套接字路径的其他指南。项目中还包含模糊测试指南。 开发与贡献 可依据设计指南中描述的 ST 2110 API 开发应用。仓库记录了基于复刻、分支和拉取请求的贡献工作流,并提供一个 checkpatch 脚本:该脚本通过 pre-commit 安装固定版本的工具,在提交时运行检查,并验证所有受跟踪文件。配套脚本可应用格式化自动修复。编码规范文档是规则及各项检查运行位置的参考。在提交拉取请求之前,贡献者需要运行格式化和检查直至无问题,确保构建和单元测试通过,以能够捕获变更的最低成本层级添加测试(单元测试、基于 VF 的集成测试或端到端验收测试),并使用 Conventional Commits 风格的提交信息。 项目状态与许可 项目指出,main 分支上的源代码和特性旨在用于测试或评估,尚未达到生产就绪状态;经过评估的代码会以发布版本打标签。项目采用 BSD 3-Clause 许可,并带有 OpenSSF Scorecard 和 Best Practices 徽章,以及基础构建、Coverity、linter、Trivy 和依赖审查的 CI 徽章。相关出版物包括一篇 MHV’23 论文、一份 Intel 白皮书,以及一次 2022 DPDK Userspace Summit 演讲。