< 返回版块

shenjinti 发表于 2025-11-29 16:21

Tags:webrtc,voip,srtp,rtp

A pure Rust implementation of WebRTC.

代码在 https://github.com/restsend/rustrtc 求Star

不同于webrtc.rs这个crate, rustrtc 的api设计更加符合rust编码习惯, 没有类似pion的回调,生命周期更简单:

   while let Some(event) = dc_clone.recv().await {
      if let rustrtc::DataChannelEvent::Message(data) = event {
          println!("Received: {:?}", String::from_utf8_lossy(&data));
      }
   }

内部尽量减少了协程的创建,并且也通过与webrtc.rs还有浏览器的互联互通测试

另外,最重要的是可以单独支持srtp和rtp,在一些非WebRTC场合下,也可以用同一套api:

        // Setup PC in RTP mode
        let mut config = RtcConfiguration::default();
        config.transport_mode = TransportMode::Rtp;
        let pc = PeerConnection::new(config);

        // Create SDP without rtcp-mux
        let sdp_str = "v=0\r\n\
                       o=- 123456 0 IN IP4 127.0.0.1\r\n\
                       s=-\r\n\
                       t=0 0\r\n\
                       c=IN IP4 127.0.0.1\r\n\
                       m=audio 4000 RTP/AVP 111\r\n\
                       a=rtpmap:111 opus/48000/2\r\n";
        let desc = SessionDescription::parse(SdpType::Offer, sdp_str).unwrap();

        pc.set_remote_description(desc).await.unwrap();

        // Wait for connection
        let mut state_rx = pc.subscribe_peer_state();
        loop {
            if *state_rx.borrow() == PeerConnectionState::Connected {
                break;
            }
            state_rx.changed().await.unwrap();
        }

我是rustpbx的开发者,我们已经实现了webrtc/sip/sippbx 完全rust编写,欢迎sip/音视频的开发者来交流

我的微信:jinti2000


Ext Link: https://github.com/restsend/rustrtc

评论区

写评论

还没有评论

1 共 0 条评论, 1 页