All Projects → russelltg → srt-rs

russelltg / srt-rs

Licence: Apache-2.0 license
SRT implementation in Rust

Programming Languages

rust
11053 projects
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to srt-rs

tms
tms(toy media server) is a toy media server for myself learning media develop. Just for fun.
Stars: ✭ 29 (-82.53%)
Mutual labels:  livestream, srt
Social-Media-Wall
Social Media Wall Create a livestream of Twitter and Instagram during your event.
Stars: ✭ 15 (-90.96%)
Mutual labels:  livestream
Nodeplayer.js
Pure JavaScrip HTML5 live stream player
Stars: ✭ 157 (-5.42%)
Mutual labels:  livestream
vimeo-depth-viewer
OpenGL application for viewing depth and color video streams from Intel RealSense cameras
Stars: ✭ 49 (-70.48%)
Mutual labels:  livestream
React Native Live Stream Rtmp Example
React native live stream using RTMP
Stars: ✭ 161 (-3.01%)
Mutual labels:  livestream
ttml2srt
convert TTML subtitles to SRT subtitles
Stars: ✭ 46 (-72.29%)
Mutual labels:  srt
Nile.js
Server
Stars: ✭ 1,757 (+958.43%)
Mutual labels:  livestream
NontonTV
Aplikasi android untuk menonton tv streaming. Cocok untuk android box/stb.
Stars: ✭ 42 (-74.7%)
Mutual labels:  livestream
Live-Stream-Chat-Retriever
Retrieve live streams chat messages from different sources (Twitch, YouTube Gaming, Dailymotion etc...) to print them into a single HTML page.
Stars: ✭ 40 (-75.9%)
Mutual labels:  livestream
Instagram Live Streamer
[Unofficial] Broadcast to Instagram Live anything from your PC/Laptop
Stars: ✭ 232 (+39.76%)
Mutual labels:  livestream
Rtsp.player.android
RTSP player for Android / IP camera viewer
Stars: ✭ 199 (+19.88%)
Mutual labels:  livestream
Live Stream Radio
24/7 live stream video radio station CLI / API 📹 📻
Stars: ✭ 175 (+5.42%)
Mutual labels:  livestream
BAT FFMPEG
Batch script files for FFMPEG (Microsoft Windows and DOS, OS/2 🦄)
Stars: ✭ 104 (-37.35%)
Mutual labels:  srt
Streamwall
Display a mosaic of livestreams. Built for streaming.
Stars: ✭ 160 (-3.61%)
Mutual labels:  livestream
amazon-ivs-chime-messaging-ugc-demo
This demo is designed to educate people who want to build live streaming platform with chatting feature. This demo is implemented using Amplify with Amazon IVS, ChimeSDK Messaging.
Stars: ✭ 20 (-87.95%)
Mutual labels:  livestream
P2p Cdn Sdk Javascript
Free p2p cdn github javascript sdk to reduce video streaming costs of live and on demand video using webrtc by upto 90% and improve scalability by 6x - 🚀 Vadootv 🚀
Stars: ✭ 158 (-4.82%)
Mutual labels:  livestream
Mediadevices
Go implementation of the MediaDevices API.
Stars: ✭ 197 (+18.67%)
Mutual labels:  livestream
TVGemist
An *Unofficial* Uitzending Gemist application for  TV
Stars: ✭ 23 (-86.14%)
Mutual labels:  livestream
srtrelay
SRT relay server for distributing media streams to multiple clients.
Stars: ✭ 81 (-51.2%)
Mutual labels:  srt
livestream saver
Download Youtube live-streams from the first segment
Stars: ✭ 215 (+29.52%)
Mutual labels:  livestream

srt-rs

codecov Rust

NOTE: THIS IS NOT PRODUCTION READY.

Pure rust implementation of SRT (Secure Reliable Transport), without unsafe code.

Reference implementation is available at https://github.com/haivision/srt

Features

  • Fast (heap allocations are rare, uses async IO)
  • Full safety guarantees of rust

What works

  • Listen server connecting
  • Client (connect) connecting
  • Rendezvous connecting
  • Receiving
  • Sending
  • Special SRT packets (partial)
  • Actual SRT (TSBPD)
  • Timestamp drift recovery (not throughly tested)
  • Congestion control
  • Encryption
  • Bidirectional

Thread Efficiency

The reference implementation of SRT requires 3 threads per sender and 5 threads per receiver.

With srt-rs, you can assign as many connections to exactly as many threads as you want (usually as many as you have cores) using tokio's futures scheduling. This should allow for handing of many more connections.

Examples

Generate and send SRT packets

cargo run --example sender

Receive SRT packets

cargo run --example receiver

Structure

This repository is structured into 3 crates:

  • srt-protocol: State machines for the SRT protocol, with no dependencies on futures or tokio. Someday, I would like this to be a no-std crate. I expect this to have frequent breaking changes.
  • srt-tokio: Tokio elements written on top of the protocol, expected to be a relatively stable API.
  • srt-transmit: A srt-live-tranmsit replacement written ontop of srt-tokio
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].