#gstreamer #mpeg-ts #kafka #pcap #broadcast #networking

bin+lib rsprobe

MpegTS 流分析探测器,支持 Kafka 和 GStreamer

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 2024 年 4 月 21 日

#824命令行工具

Download history 172/week @ 2024-05-03 5/week @ 2024-05-10 3/week @ 2024-05-17 4/week @ 2024-05-24 1/week @ 2024-05-31 11/week @ 2024-06-28 83/week @ 2024-07-05 74/week @ 2024-07-26 113/week @ 2024-08-02 7/week @ 2024-08-09 185/week @ 2024-08-16

379 每月下载量

自定义许可

230KB
4.5K SLoC

Rust 3.5K SLoC // 0.1% comments Shell 1K SLoC // 0.1% comments RPM Specfile 306 SLoC // 0.1% comments

Rust 编写的 MpegTS 流分析探测器

Rust

概述

捕获网络中的 MpegTS 并进行分析,用于广播监控。测量各种属性并从 PCap 源的 MpegTS 多播网络流中提取资产。高效地发送与图像资产和流元数据相关的指标到 Kafka,以便在具有警报设置的数据点上以图形和图表的形式显示。项目使用 pcap 捕获 MpegTS,并使用过滤器规则指定流 IP 和端口,然后验证流的一致性。如果需要,将指标发送到 Kafka 进行长期存储,并使用 Gstreamer 提取资产。

RsProbe

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。 (手机/平板电脑使用)

RsProbe

使用 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