11 个版本
新增 0.7.8 | 2024 年 8 月 22 日 |
---|---|
0.7.7 | 2024 年 8 月 19 日 |
0.7.4 | 2024 年 5 月 5 日 |
0.7.3 | 2024 年 4 月 30 日 |
0.5.119 |
|
#824 在 命令行工具 中
379 每月下载量
230KB
4.5K SLoC
Rust 编写的 MpegTS 流分析探测器
概述
捕获网络中的 MpegTS 并进行分析,用于广播监控。测量各种属性并从 PCap 源的 MpegTS 多播网络流中提取资产。高效地发送与图像资产和流元数据相关的指标到 Kafka,以便在具有警报设置的数据点上以图形和图表的形式显示。项目使用 pcap 捕获 MpegTS,并使用过滤器规则指定流 IP 和端口,然后验证流的一致性。如果需要,将指标发送到 Kafka 进行长期存储,并使用 Gstreamer 提取资产。
Gstreamer 支持通过 --features gst
标志(make build_gst
)使用 Gstreamer 进行流解复用/解码。目前,--extract-images
将从流中提取图像并将它们保存到磁盘或发送到 Kafka 作为 base64,并附带 JSON 元数据。有关如何在常见用例中使用 RsProbe 的示例,请参阅 scripts/probe.sh。
功能
- 从网络 UDP 多播中捕获和分析 MpegTS PCap 流。
- 从流中提取图像和指标。
- 将指标发送到 Kafka 进行长期存储。
- 支持 OpenCV 的感知图像指纹以检测冻结帧。
- 支持 Gstreamer 的流解复用、解码和图像提取。
探测器客户端
src/bin/probe.rs 是探测器客户端的主要入口点。它捕获 MpegTS 流并从流中提取指标和资产。探测器客户端是项目的入口点,也是项目的主要可执行文件。
使用环境变量进行配置
使用 .env
和/或命令行参数来覆盖默认值/环境变量。有关示例配置,请参阅 .env.example。命令行参数与环境变量相同,但变量名前缀为 --
并转换为小写。
适用于 CentOS 7 的 RsProbe RPM,支持 Gstreamer
specs/rsprobe.spec 为 CentOS 7 提供构建,所有 Gstreamer 构建依赖都已为您处理。
rpmbuild -bb specs/rsprobe.spec
RsProbe 的 Docker 镜像
项目根目录下的 Dockerfile Dockerfile 构建了一个安装了 RsProbe 的 CentOS 7 镜像。该镜像具有各种环境变量,与 .env 文件匹配以进行配置。使用 --build-arg
标志构建了具有环境变量的镜像。
使用 Gstreamer 依赖项构建和执行 RsProbe
- RsProbe + Gstreamer 安装脚本:scripts/install.sh,用于在 Linux CentOS 7 和 macOS 上设置 Gstreamer + 依赖项,并将其放入
/opt/rsprobe
目录。 - RsProbe 编译脚本:scripts/compile.sh,用于在
/opt/rsprobe
中使用 Gstreamer 设置构建 RsProbe。
# Install RsProbe w/gstreamer in /opt/rsprobe/ (MacOS or CentOS 7)
./scripts/install.sh # or make install
# Optionally rebuild RsProbe if making changes
./scripts/compile.sh gst # or make build_gst
# Run the probe
./scripts/probe.sh -h # help to see what options are available
JSON 指标输出到 Kafka
处理和提取后,项目将 JSON 指标发送到 Kafka。请参阅 Kafka 的 Schema 了解发送到 Kafka 的数据格式。
--kafka-broker sun:9092 \
--kafka-topic test \
--send-to-kafka
--kafka-interval 1000 \ # in milliseconds
待办事项 - 路线图计划
- 符合标准的字幕提取和分析。
- 音频分析和 EBU R128 音量监控。
- 音频级别和音频流分析。
- (WIP) SCTE-35 和其他广告插入标记的提取和分析。
- SMPTE 2110 处理重新组装帧,类似于 MpegTS 支持。
- SMPTE2110 数据流和音频流支持(需要多个 pcap ip/端口并区分它们)。
- (WIP) 直接原始 PES 解析和流分析。
- 网络分析器查看网络上的其他流量。
- 使用 OpenCV img_hash 指纹 将视频流帧感知对齐和比较。
- OpenAI Whisper 语音转文字用于字幕验证和插入。https://github.com/openai/whisper
- 通过 LLM/VectorDB 分析发现和报告问题。使用 RsLLM 完成。RsLLM
- 微调 LLM 模型以查找超出基本常用问题的流问题。
- 捕获 MpegTS 的分割,由各种规范提供 VOD 文件编写器。
- 代理捕获的压缩。实时并行编码比特率层次结构吗?
- 将当前帧和流指标以精确的时序和帧信息(如示波器)叠加到缩略图图像上,类似于 meme。 (手机/平板电脑使用)
使用 Intel VTune (Linux/Windows) 进行开发和性能分析
获取 VTune:Intel oneAPI Base Toolkit
运行 VTune:scripts/vtune.sh
## Runtime for VTune
# Web UI (Best) Read [Intel VTune Documentation](https://www.intel.com/content/www/us/en/docs/vtune-profiler/user-guide/2024-0/web-server-ui.html)
./scripts/vtune.sh
Chris Kennedy (C) 2024 MIT 许可证
依赖项
~30–64MB
~1M SLoC