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 在 多媒体 中排名
每月100次下载
用于 2 crates
480KB
10K SLoC
retina
高级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同步
- 编解码器解包
- 干净的、稳定的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 生态系统之上。有几位人士特别有帮助
- Sebastian Dröge,
rtsp-types
的作者 - David Holroyd,
h264-reader
的作者
为什么叫“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.txt 或 LICENSE-APACHE。
依赖项
~8–18MB
~247K SLoC