Expand description
Implementation of SRT in pure safe rust.
Generally used for live video streaming across lossy but high bandwidth connections.
§Quick start
use srt::SrtSocketBuilder;
use futures::prelude::*;
use bytes::Bytes;
use std::time::Instant;
use std::io;
#[tokio::main]
async fn main()
{
let sender_fut = async {
let mut tx = SrtSocketBuilder::new_listen().local_port(2223).connect().await?;
let iter = ["1", "2", "3"];
tx.send_all(&mut stream::iter(&iter)
.map(|b| Ok((Instant::now(), Bytes::from(*b))))).await?;
tx.close().await?;
Ok::<_, io::Error>(())
};
let receiver_fut = async {
let mut rx = SrtSocketBuilder::new_connect("127.0.0.1:2223").connect().await?;
assert_eq!(rx.try_next().await?.map(|(_i, b)| b), Some(b"1"[..].into()));
assert_eq!(rx.try_next().await?.map(|(_i, b)| b), Some(b"2"[..].into()));
assert_eq!(rx.try_next().await?.map(|(_i, b)| b), Some(b"3"[..].into()));
assert_eq!(rx.try_next().await?, None);
Ok::<_, io::Error>(())
};
futures::try_join!(sender_fut, receiver_fut).unwrap();
}
Re-exports§
pub use crate::tokio::SrtSocket;
Modules§
Structs§
- CCData
- Defines all the data that CC algorithms need
- Connection
- Connection
Settings - Control
Packet - A UDP packet carrying control information
- Data
Packet - A UDT packet carrying data
- MsgNumber
- Packet
Codec - SeqNumber
- SocketID
- SrtCongest
Ctrl - SrtSocket
Builder - Struct to build sockets.
- SrtVersion
- Serialied, it looks like: major * 0x10000 + minor * 0x100 + patch
- Streamer
Server
Enums§
- Conn
Init Method - Describes how this SRT entity will connect to the other.
- Packet
- Represents A UDT/SRT packet
- Packet
Parse Error
Traits§
- Congest
Ctrl - Congestion control trait, sender side