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 页
评论区
写评论还没有评论