#rtmp #video-streaming #streaming #streaming-media

rml_rtmp

Rust库,用于处理RTMP协议的各个方面

25次发布

使用旧的Rust 2015

0.8.0 2023年4月29日
0.7.1 2023年3月27日
0.7.0 2022年6月24日
0.6.1 2022年1月12日
0.2.0 2018年7月19日

#125 in 视频

Download history 138/week @ 2024-03-11 234/week @ 2024-03-18 68/week @ 2024-03-25 123/week @ 2024-04-01 66/week @ 2024-04-08 57/week @ 2024-04-15 64/week @ 2024-04-22 15/week @ 2024-04-29 8/week @ 2024-05-06 47/week @ 2024-05-13 41/week @ 2024-05-20 44/week @ 2024-05-27 36/week @ 2024-06-03 44/week @ 2024-06-10 27/week @ 2024-06-17 12/week @ 2024-06-24

每月128次下载
5 个Crate中使用 (直接使用4个)

MIT 许可证

490KB
11K SLoC

该Crate提供与Adobe RTMP协议交互的函数。它包含低级和高级抽象,可用于将RTMP支持集成到客户端(发布者和播放器)和服务器。

文档

https://docs.rs/rml_rtmp/

安装

此Crate与Cargo和crates.io兼容。将其添加到您的 Cargo.toml 中,如下所示

[dependencies]
rml_rtmp = "0.1"

性能

目标是使该库尽可能高效。我们使用 Bytes crate 以尽可能减少分配,并根据我在Ryzen 5 1600X(单线程)上的 视频中继基准测试,我可以将10KB视频数据包从单个发布者转发到两个订阅者,平均延迟为24微秒。这应该为自定义逻辑以及它在低端设备上运行留出足够的CPU周期。

示例

两个大型示例可以在仓库中找到

  • 线程化RTMP服务器 - 这是一个基本的RTMP服务器,展示了如何接受连接并将音频/视频路由到播放器

  • Mio RTMP服务器 - 这是一个相对高级的RTMP服务器,展示了如何将RTMP ClientSessionServerSession 集成到mio应用程序中。它支持

    • 从发布者接收视频并将其路由到任何订阅的播放器
    • 从远程RTMP服务器拉取视频并将其提供给订阅的播放器
    • 从发布者接收视频并将其重新发布到外部RTMP服务器

依赖项

~1.2–2MB
~39K SLoC