28个版本

0.4.9 2024年8月19日
0.4.8 2024年5月26日
0.4.7 2024年1月9日
0.4.6 2023年12月29日
0.0.5 2021年7月8日

212多媒体 中排名

Download history 36/week @ 2024-04-28 13/week @ 2024-05-05 49/week @ 2024-05-12 67/week @ 2024-05-19 229/week @ 2024-05-26 82/week @ 2024-06-02 52/week @ 2024-06-09 68/week @ 2024-06-16 57/week @ 2024-06-23 19/week @ 2024-06-30 27/week @ 2024-07-07 20/week @ 2024-07-14 17/week @ 2024-07-21 38/week @ 2024-07-28 17/week @ 2024-08-04 25/week @ 2024-08-11

每月100次下载
用于 2 crates

MIT/Apache

480KB
10K SLoC

retina

crates.io version Documentation CI

高级RTSP多媒体流库,用Rust编写。支持ONVIF RTSP/1.0 IP监控摄像机,满足Moonfire NVR的需求。解决廉价封闭源摄像机的问题。

状态:在生产环境中使用于Moonfire NVR。许多功能缺失。

进度

  • 客户端支持
    • 基本身份验证。
    • 摘要身份验证。
    • RTP通过RTSP交织通道在TCP上。
    • RTP通过UDP(实验性)。
      • 重新排序缓冲区。(现在丢弃顺序错误的包。)
    • RTSP/1.0。
    • RTSP/2.0。
    • SRTP。
    • ONVIF回通道支持(用于发送音频)。
    • ONVIF重放模式。
    • 接收RTCP发送者报告(目前只使用时间戳)
    • 发送RTCP接收者报告
  • 服务器支持
  • I/O模式
    • 使用tokio的异步
    • async-std
    • 仅与std同步
  • 编解码器解包
    • 视频
      • H.264
        • SVC
        • 周期性基础设施刷新
        • 每张图片多个切片
        • 多个SPS/PPS
        • 交织模式
        • AAC输出格式
        • Annex B输出格式 (#44)
        • (RFC 6184)
      • MJPEG
    • 音频
      • AAC
        • 交织
      • RFC 3551编解码器:G.711、G.723、L8/L16
    • 应用:ONVIF元数据
  • 干净的、稳定的API。(见#47。)
  • 质量错误
    • 详细的错误描述文本。
    • 可编程检查的错误类型。
  • 良好的功能测试覆盖率。(目前测试较少/不均匀。大多数解包器没有测试。)
  • 模糊测试。(正在进行。)
  • 基准

欢迎帮助!

入门

尝试一下 mp4 示例。它从 RTSP 服务器流到 .mp4 文件,直到你按下 Ctrl+C。

$ cargo run --package client mp4 --url rtsp://ip.address.goes.here/ --username admin --password test out.mp4
...
^C

示例客户端

$ cargo run --package client <CMD>

在哪里 CMD

  • info - 获取有关可用流的详细信息并退出。
  • mp4 - 将 RTSP 流写入 mp4 文件;使用 Ctrl+C 退出。
  • onvif - 如果可用,获取实时 onvif 元数据;使用 Ctrl+C 退出。
  • jpeg - 将解包的 JPEG 图像写入磁盘;使用 CTRL+C 退出。

示例 WebRTC 代理

这允许您通过浏览器查看 H.264 视频流,借助 webrtc-rs

$ cargo run --package webrtc-proxy -- --help

致谢

这建立在整个 Rust 生态系统之上。有几位人士特别有帮助

为什么叫“retina”?

这是一个工作名称。欢迎提出其他想法。我开始查找字母 R、T、S、P 按顺序排列的字典单词,并挑选出与视频相关的单词

$egrep'^r.*t.*s.*p'/usr/share/dict/words'
retinoscope 接近但太长了,因此 retina
retrospect 对于 NVR 来说是一个好名字,但我已经选择了 Moonfire
rotacope “rotascope”(动画工具)的误拼或“陀螺仪”的古老名称?

许可证

您可以选择 MIT 或 Apache;请参阅 LICENSE-MIT.txtLICENSE-APACHE

依赖项

~8–18MB
~247K SLoC