We’ve recently been developing applications for streaming live video, and experimenting with different streaming protocols. We started off with HLS, but since the use case required extremely low latency, we eventually moved on to other protocols. In our testing, we found that MJPEG was able to provide near-instantaneous results, but with the obvious drawback that it does not support audio, and there is really no defined protocols for MJPEG streams, which means that applications support it in wildly different ways. Eventually we started using SRT, which has been working extremely well for our use case. Here we’ll go over some basics about the differences between these common streaming protocols.

HLS, MJPEG, SRT, and NDI are all different streaming protocols used for video transmission over the internet. Here’s a brief overview of each protocol:

  1. HLS (HTTP Live Streaming): HLS is a streaming protocol developed by Apple that breaks a video into small chunks and sends them over HTTP. The video is divided into multiple bitrate versions, allowing for adaptive streaming based on the viewer’s internet connection. HLS is widely supported on different devices and platforms, and is commonly used for live streaming.
  2. MJPEG (Motion JPEG): MJPEG is a video compression format that compresses each frame of video as a separate JPEG image. It is not a streaming protocol in itself, but can be used with other protocols such as HTTP or RTSP to stream video. MJPEG is a simple format that is easy to implement and is often used in security cameras and webcams.
  3. SRT (Secure Reliable Transport): SRT is an open-source streaming protocol that provides low-latency video transmission with secure encryption and error correction. It is designed to handle poor network conditions and maintain the quality of the video stream.
  4. NDI (Network Device Interface): NDI is a protocol developed by NewTek that allows for low-latency video transmission over a local network. It is designed for use with professional video production equipment and software and provides high-quality, low-latency video with low CPU usage.

In summary, HLS is a widely supported streaming protocol commonly used for live streaming, MJPEG is a video compression format that can be used for streaming, SRT is an open-source streaming protocol designed for reliability, and NDI is a protocol designed for professional video production equipment and software. The choice of protocol depends on the specific use case and requirements of the video streaming application.