English | 简体中文
aimedia 是一个面向直播开发者和集成商的开源、AI 原生制作与发布引擎。它接收
摄像机或远程贡献流,完成导播、音频处理和编码,再把连续节目发布到直播平台或
直播云。长期目标是在明确的市场工作流内逐步替代 FFmpeg,而不是追求未完成的
“全格式兼容”。
开发预览:流式 TS、SRT adapter、libxaac 帧处理、节目时钟和本机控制面已经进入 第二阶段开发;NVDEC/NVENC 帧提交和完整实时数据面尚未闭环。项目名是工作名, 公开品牌使用前仍需完成名称与商标检索。
这是 0.1.0-alpha.1 基础版本。当前已经实现:
aimedia/v1alpha1严格 YAML 配置与密钥引用校验;- 单调时间戳映射和固定容量双路同步缓冲原语;
- 带最短镜头、迟滞、候选保持、故障切换和人工
take的双机位状态机; - VLM 建议 25% 权重上限、有效期校验和 OpenAI 兼容接口;
- 48kHz BS.1770 K-weighting 滚动响度估计、增益计算和 80ms 等功率音频切换;
- clean-room MPEG-TS 流式同步、PSI/PES 重组、PTS 回绕、PAT/PMT/PCR、TS mux、H.264 Annex-B 和 AAC ADTS;
- 独立节目时钟、队列容量计算、1ms/s 漂移校正和版本化 Unix Socket 控制面;
- 运行时加载的 libsrt caller/listener/epoll/加密/统计边界、指数退避重连和 NVIDIA 环境探测;
- libxaac AAC-LC 帧级解码/编码、
aimedia-corebackend adapter、1024-sample cadence、flush 和 native round-trip; - 一到两路输入配置、单路运行状态,以及队列/codec/GPU/SRT 可观测性契约;
- 可注入 transport/codec 后端的单路有界调度器,已用 CPU fake backend 验证任意 TS 分块、解复用、独立节目时钟、编码、复用、发送和完整排空;
probe、doctor、control、run --dry-run、run --mock、explain、replay、benchCLI。- MPEG-TS、H.264/AAC elementary stream 和配置协议的 Linux fuzz 入口。
尚未实现、也不会伪装成已经实现:
- SRT 与 codec 串接后的持续节目输出;
- NVDEC/NVENC 帧提交和 GPU surface copy;
- 生产 SRT/NVDEC/NVENC/libxaac 后端与单路调度器的接线,以及断流期间的最后一帧/ 静音保活;
- Silero/视觉 ONNX 分析器;
- native codec 帧级 API 和动态插件函数表。
这些边界已经在 aimedia-core::backend 中定义,后续实现不需要把 FFmpeg 引入运行时。
要求 Rust 1.85 或更新版本。
cargo run -p aimedia -- explain -f examples/director.yaml
cargo run -p aimedia -- explain -f examples/single-srt.yaml --json
cargo run -p aimedia -- doctor --json
cargo run -p aimedia -- run -f examples/director.yaml --dry-run
cargo run -p aimedia -- run -f examples/director.yaml --mock
cargo run -p aimedia -- replay examples/replay.jsonl -f examples/director.yaml
cargo run -p aimedia -- bench -f examples/director.yaml \
--capture examples/replay.jsonl --iterations 1000
cargo run -p aimedia -- probe sample.ts --json
docker build -t aimedia:dev .当前单路原生 run 会返回 nativeVideoBackendPending,双路会返回
dualDataPlanePending;--mock 会运行真实节目调度器和 Unix Socket,但不发送媒体。
实时能力的完成情况以支持矩阵为准。
- 媒体主链永远不等待 VLM。
- 所有数据队列必须有固定容量和明确的丢弃/故障策略。
- 输出使用独立单调节目时钟,禁止拼接不同输入的 PTS。
- AI 只提供有时限的分数和事件,确定性状态机拥有最终切镜权。
- MPEG-TS 和媒体协议基于公开规范独立实现,不复制 FFmpeg 代码。
- 配置和日志不接受明文密码、token 或 passphrase。
- 未通过兼容测试的能力不得标记为 supported。
模糊测试使用 Linux nightly:
cargo install cargo-fuzz --locked
cargo fuzz run mpegts
cargo fuzz run elementary
cargo fuzz run config进一步阅读:
核心代码采用 Apache License 2.0。外部传输、模型、codec 和 NVIDIA 运行时保留各自许可证。开源许可证不等于 H.264/AAC 专利授权,商业发行前需要独立法律评估。