Skip to content

stevomatthews/srt

 
 

Repository files navigation

Secure Reliable Transport (SRT) Protocol

badges example

Features | Getting Started | Builds | Contribute | License | Examples | Releases | Sponsors | Security

SRT

SRT is an open source user-level protocol (over UDP) that provides reliability and security optimized for low latency live video streaming, as well as generic bulk data transfer. To accomplish this, SRT introduces control packet extensions, improved flow control, enhanced
congestion control and a mechanism for data encryption.

NOTE: The protocol was submitted to the IETF as a draft standard on 2020-03-09.

Features

SRT Quad Screen Video Comparison

Access Control
Bonding
Encryption
Handshake
Live Streaming
Packet Filtering & FEC
Socket Groups
SRT Multiplex


What is SRT?

Secure, Reliable Transport, known simply as SRT, is a protocol that allows unreliable networks like the internet to be used for reliable, encrypted, live video contribution. Created by Haivision and now an open-source technology with an IETF draft spec, the alliance of SRT users continues to grow as the technology continues to develop and add features.

SRT is a transport technology that optimizes transmission across unpredictable networks, such as the Internet. It can be applied to contribution and distribution endpoints as part of a video stream workflow to deliver the best quality and lowest latency video at all times. As audio/video packets are streamed from a source to a destination, SRT detects and adapts to the real-time network conditions between the two endpoints. SRT helps compensate for jitter and bandwidth fluctuations due to congestion over noisy networks. Its error recovery mechanism minimizes the packet loss typical of Internet connections. And SRT supports AES encryption for end-to-end security.

SRT implements AES encryption to protect the payload of the media streams, and offers various error recovery mechanisms for minimizing the packet loss that is typical of Internet connections, of which Automatic Repeat reQuest (ARQ) is the primary method. With ARQ, when a receiver detects that a packet is missing it sends an alert to the sender requesting retransmission of this missing packet. Forward Error Correction (FEC) and Path Redundancy (or Connection Bonding in SRT terminology) are also supported by the protocol.

To learn more about the protocol subscribe to the Innovation Labs Blog on  slack logo

Join the conversation in the #development channel on  slack logo

Getting Started with SRT

Why SRT?

RFC Project

SRT Cookbook

A brief history and rationale for SRT by Marc Cymontkowski

The working repo for the official SRT protocol RFC

Resources, tools, statistics and templates for developers

SRT Overview

SRT Development

SRT Feedback

Early draft technical overview (precursor to the RFC)

Environment setup to develop, build and test SRT

Guidelines for providing feedback and report problems

SRT Encryption

The SRT API

Sample Apps

How SRT encryption protects stream payloads

Reference documentation for the SRT API

Instructions for using test apps (srt-live-transmit, srt-xtransmit, etc.)

The SRT API Internet Draft Sample Apps
Reference documentation for the SRT library API The SRT Protocol Internet Draft Instructions for using test apps (srt-live-transmit, srt-file-transmit, etc.)
SRT Technical Overview SRT Deployment Guide SRT CookBook
Early draft technical overview (precursor to the Internet RFC Draft) A comprehensive overview of the protocol with deployment guidelines Development notes on the SRT protocol
Innovation Labs Blog SRTLab YouTube Channel Slack
The blog on Medium with SRT-related technical articles Technical YouTube channel with useful videos Slack channels to get the latest updates and ask questions

Requirements

  • CMake (as build system)
  • Tcl 8.5 (optional for user-friendly build system)
  • OpenSSL
  • Pthreads (built in on POSIX systems; for Windows there is a library)

Build Instructions

Linux (Ubuntu/CentOS) | Windows | Mac (Darwin) | iOS | Android

  • For detailed descriptions of the build system and options, please read BuildOptions.md.
  • If you encounter build failures, please refer to troubleshooting-build-issues.md

Contributing

Anyone is welcome to contribute. If you decide to get involved, please take a moment to review the guidelines:

  • Bug reports
  • Feature requests
  • Pull requests

License

TBD

Examples & Demo

Please visit the SRT Cookbook for more information.

Release History

Releases are tracked in srt-changelog.md

Sponsors

Please visit srtalliance.org for more information

Security

Please report security issues to TBD

Values

(12 Apr 2021) Example text borrowed from pandas.org: Is in the core of pandas to be respectful and welcoming with everybody, users, contributors and the broader community. Regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.


If you have any questions, please feel free to ask in the #development channel on Slack.

About

Secure, Reliable, Transport

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 88.0%
  • C 6.1%
  • CMake 2.6%
  • Lua 1.5%
  • Tcl 1.2%
  • PowerShell 0.4%
  • Other 0.2%