0.2.0 2020年12月26日
0.1.0 2020年12月25日

#6 in #rtcp


用于 webrtc-rs-srtp

MIT 许可证

280KB
6K SLoC

WebRTC.rs

License: MIT

RTCP的纯Rust实现。使用Rust重写Pion RTCP


lib.rs:

包rtcp根据RFC 3550和5506实现了RTCP包的编码和解码。

RTCP是实时传输协议(RTP)的姊妹协议。其基本功能和包结构在RFC 3550中定义。RTCP为RTP会话提供带外统计和控制信息。它与RTP合作传输和包装多媒体数据,但本身不传输任何媒体数据。

RTCP的主要功能是通过定期向流媒体会话中的参与者发送如传输的字节数、包计数、包丢失、包延迟变化和往返延迟时间等统计信息,来提供对媒体分布服务质量(QoS)的反馈。应用程序可以使用此信息来控制服务质量参数,例如通过限制流量或使用不同的编解码器。

解码RTCP包

     let pkt = rtcp.Unmarshal(rtcpData).unwrap();

     if let Some(e) = packet
          .as_any()
          .downcast_ref::<crate::picture_loss_indication::PictureLossIndication>()
      {
    
      }
     else if let Some(e) = packet
          .as_any()
          .downcast_ref::<crate::goodbye::Goodbye>(){}
     ....


 Encoding RTCP packets:
```nobuild
     let pkt = crate::picture_loss_indication::PictureLossIndication{
         sender_ssrc: sender_ssrc,
         media_ssrc: media_ssrc
     };

     let pliData = pkt.marshal().unwrap();
     // ...

依赖项

~16–25MB
~484K SLoC