7 unstable releases

0.4.4 May 31, 2024
0.4.3 Sep 25, 2023
0.4.1 Mar 11, 2023
0.3.0 Jan 14, 2022
0.1.0 Sep 23, 2020

#69 in Video

Download history 73/week @ 2024-07-16 75/week @ 2024-07-23 57/week @ 2024-07-30 41/week @ 2024-08-06 43/week @ 2024-08-13 74/week @ 2024-08-20 128/week @ 2024-08-27 142/week @ 2024-09-03 98/week @ 2024-09-10 35/week @ 2024-09-17 77/week @ 2024-09-24 55/week @ 2024-10-01 25/week @ 2024-10-08 17/week @ 2024-10-15 9/week @ 2024-10-22 30/week @ 2024-10-29

85 downloads per month
Used in 5 crates (4 directly)

Apache-2.0

650KB
15K SLoC

Implementation of SRT in pure safe rust.

Generally used for live video streaming across lossy but high bandwidth connections.

Quick start

use srt_tokio::SrtSocket;
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 = SrtSocket::builder().listen_on(2223).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 = SrtSocket::builder().call("127.0.0.1:2223", None).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();
}

Dependencies

~10–22MB
~284K SLoC