0.2.0 2021年3月7日
0.0.0 2021年3月7日

#5 in #rtcp

MIT 许可证

285KB
6K SLoC

WebRTC.rs

License: MIT

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


lib.rs:

包rtcp根据RFC 3550和RFC 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();
     // ...

依赖关系

~295KB