Skip to content

Latest commit

 

History

History
149 lines (83 loc) · 5.81 KB

README.md

File metadata and controls

149 lines (83 loc) · 5.81 KB

streaming-server-dump

Here I put all the things I learnt or built about streaming servers.

Author - Aanis Noor

Organisation - Staqu Technologies

Website - http://staqu.com/

Problem Statement (by Mr Pankaj Sharma)

Research and see if we can make our own streaming server.

It should be able to do following things:

  1. Pull RTSP

  2. GET RTSP pushed

  3. Generate RTSP and HLS streams

  4. Store, Export, Play DVR

  5. Return live thumbnail

Streaming_Agent

Resources

MistServer

MistServer Github

Mistserver + Livepeer (video)

nginx_http_mp4_module

HLS

http://www.easydarwin.org/

https://github.com/easydarwin

NGINX Multi-streaming (video)

Open Source Streaming Projects

Ant Media Server

RaspPI RTSP (video)

Push vs Pull input

http://live555.com/

RTSP to HLS using ffmpeg

http://live555.com/openRTSP/

http://live555.com/mediaServer/

https://zoneminder.com/

RTSP documentation RFC

https://github.com/donkeyofking/rtspplayer

https://github.com/aler9/rtsp-simple-server

https://www.roborealm.com/help/RTSP_Player.php

https://www.wowza.com/blog/streaming-protocols

https://www.wowza.com/blog/hls-streaming-protocol

https://www.wowza.com/blog/rtsp-the-real-time-streaming-protocol-explained

https://gstreamer.freedesktop.org/documentation/gst-rtsp-server/rtsp-server.html?gi-language=c

https://www.kernel.org/doc/html/v4.9/media/v4l-drivers/index.html

https://www.streamingmediaglobal.com/Articles/ReadArticle.aspx?ArticleID=113350

Push vs Pull protocols

In pull protocols, consumers ask periodically their producers for values. The consumers signal their producers to send values. If there is a value waiting, the producer will send it down, or else it will block and wait to fulfill the demand.

whereas,

In push protocols, the consumers open a connection to the server and keep it constantly active. The producer will send (push) all-new events to the consumers using that single always-on connection. In other words, the producer PUSHes the new events to the consumers.

Push vs Pull

TCP vs UDP

"Because UDP doesn’t support retransmissions, packet ordering, or error-checking, there’s potential for a network glitch to corrupt the data en route"

whereas,

"TCP requires a three-way handshake when transporting data. The initiator (client) asks the accepter (server) to start a connection, the accepter responds, and the initiator acknowledges the response and maintains a session between either end"

tcp VS UDP

Miscellaneous

OSI Model with units

image

RTSP

RTSP Requests RTSP uses the following commands, typically sent from the client to the server, when negotiating and controlling media transmissions:

  • Options: This request determines what other types of requests the media server will accept.
  • Describe: A describe request identifies the URL and type of data.
  • Announce: The announce method describes the presentation when sent from the client to the server and updates the description when sent from server to client.
  • Setup: Setup requests specify how a media stream must be transported before a play request is sent.
  • Play: A play request starts the media transmission by telling the server to start sending the data.
  • Pause: Pause requests temporarily halt the stream delivery.
  • Record: A record request initiates a media recording.
  • Teardown: This request terminates the session entirely and stops all media streams.
  • Redirect: Redirect requests inform the client that it must connect to another server by providing a new URL for the client to issue requests to.
  • Other types of RTSP requests include ‘get parameter,’ ‘set parameter,’ and ’embedded (interleaved) binary data,’

HLS (HTTP Live Streaming)

image

image

image

.M3U8 Manifest File

m3u8 tag RFC standards

"HLS video segments are indexed into a media playlist so that the video player understands how to organize the data. A master .m3u8 playlist file must also be created — think of this as the index of indexes — to instruct the player on how to jump between the variant-specific playlists. This is also referred to as the manifest file. Anyone delivering the stream can then distribute the content by embedding the .m3u8 reference URL in a web page or creating an application that downloads the file." image