Video Streaming Server With Multi-Protocol,Robust And Rich API
Location:Index Page  >  Document  >  Overview

Ti Top Streamer is a streaming server software that supports multiple video stream input protocols, supports multi protocol distribution and forwarding, has a beautiful and elegant management interface, supports bilingual switching between Chinese and English, and has a rich HTTP Rest API.

Ti Top Streamer needs to be deployed on Linux servers, such as Redhat, Centos, Debian, and Ubuntu.

Compared to other streaming server products on the market, Ti Top Streamer has a clear, easy to understand, and scalable logical architecture. In this chapter, we will focus on introducing some of its basic concepts.

1. APP, Application:

APP, Application,They all have the same meaning, the same concept.For the convenience,We just say "APP" in the following. An APP can be considered as a group streams,They have the same input protocol, Having the same processing logic (such as whether to record or support HLS output). For example, If there are 100 IP camears,and you hope to pull the rtsp stream into Ti Top Streamer from the cameras,then provide HLS stream to the audience. If so, It's an APP in the Ti Top Streamer, This APP will have 100 input video streams from the cameras. Another example, Suppose you have 5 H.264 encoder devices, They will push 50 HD TV programs to the Ti Top Streamer through RTMP protocol. Then, distribute the streams to some CDN system by HLS protocol. It's another APP in Ti Top Streamer, This APP will have 50 HD TV program stream.

An APP has an unique name,It's a string with a length ranging from 2 to 40. The valid chars including A-Z,a-z,0-9,"-" and "_". A name that is too long is not easy to display on the management web UI, so it is recommended that you use a length of 4-10, e.g: live. Notes: Don't try to use non English names for apps, as app name will be used on various URLs, so only English is suitable.

An APP has a parameter for the input type of a live stream, which is an enumeration value (case insensitive). In the document, Some places we called it "sourceType", while others we called it "source_type", they all mean the same thing, to illustrate how the video stream enters this app (input). At present, the "sourceType" we have implemented include the following types:

RTMP_PUSH outside system(eg: an encoder) actively push rtmp stream to the Ti Top Streamer
RTMP_PULL Initiated by Ti Top Streamer, pull RTMP stream from external system into Ti Top Streamer based on a RTMP URL
RTSP_PULL Initiated by Ti Top Streamer, pull RTSP stream from external system into Ti Top Streamer based on a RTSP URL
MPEGTS_OVER_UDP outside system(eg: an encoder) actively push MPEG-TS stream to a UDP port of the Ti Top Streamer
SRT_LISTENER Ti Top Streamer play a role as SRT Listener, outside system that support SRT protocol send SRT stream to the Ti Top Streamer
GB28181 Ti Top Streamer receive audio and video streams sent from cameras or NVR devices that support the GB28181 protocol
WEBRTC Ti Top Streamer receive WEBRTC audio and video streams pushed by any third party, including browser or a mobile device

As the version iterates, other input source types will continue to be added in the future.

Tip: Starting from version 1.0.58, TiTopStreamer also supports VOD playback of mp4 files. On the management web UI, live streaming apps and on-demand apps are managed separately.

Users familiar with the Wowza Streaming Engine should easily understand the concept of the "APP". In the Wowza Streaming Engine, an app can have many video streams from different protocol sources。This is the difference between these two products. Why does Ti Top Streamer restrict an app to have only one unique input source type? Why can't input streams from various sources be mixed together in one app? In fact, from the perspective of underlying technology, there is nothing unacceptable about doing so. But doing so brings management complexity and unclear logical structure, which is completely unnecessary. From the perspective of a certain enterprise customer, their application scenarios are basically fixed and singular. Even if there are multiple input methods from different sources, it's just about creating an additional app, And Ti Top Streamer is such a streaming server software that supports multiple apps. In addition, one APP and another APP are completely isolated from each other and do not affect each other.

When installing the Ti Top Streamer software, a live streaming app called "live" and an on-demand app called "vod" will be included by default,the input source type of "live" app is "RTMP_PUSH". After completing the installation, you can log in to the management interface and find them. Next, you can add an app through the management interface, or you can create an app using the HTTP rest API.

2. Source and Stream :

Firstly, all real-time streams that enter the Ti Top Streamer are called Streams, and more precisely, they should be referred to as Input Streams.

Based on the previous introduction to the APP, we already know that all streams belong to a certain APP. We will not elaborate on this point further.

When Ti Top Streamer plays the role of "client" and pulls streams from an external system (playing the role of Server) into it, We usually say that Ti Top Streamer pulls a stream from a source. For example, your client/partner gave you an RTMP URL,It's a "Source", You need to pull the stream into Ti Top Streamer based on this URL. At this point, all you need to do is add this Source on the Ti Top Streamer, Then give this stream a name (Stream ID). For example, the url "rtmp://www.ttstream.com/live/cctv-hd" is real TV program, When you add this source, Besides this URL, you also need to give this stream a name, It's a string with a length ranging from 2 to 40. The valid chars including A-Z,a-z,0-9,"-" and "_"。 On the web UI of Ti Top Streamer, we call it "source name" or "stream name"(or a "stream id").

After a Source is started (starting means starting to pull the stream), Under this app, a Stream is generated, and each Stream has its own name, which is the Stream Name mentioned above. So you can understand it this way: Source becomes Stream after startup, and Source Name becomes Stream Name.

When a new Stream is generated under an APP, the Stream Name can be used to reference it in the future. So, it's easy to understand that in an app, when you add a Source, the Source Name cannot be duplicated.

Notes:When you use rtmp to push a stream to Ti Top Streamer, you don't need to add a Source, Because according to the RTMP protocol, when external systems actively push streams to Ti Top Streamer, the name of the Stream (StreamName) is determined by the push side (The StreamName we are referring to here is called "key" in OBS, and it's just that different products have different names for it)

3. There are three types of streams in Ti Top Streamer:Input Stream, Playback Stream, Forward Stream

Input Stream Input Stream, It enter the Ti Top Streamer
Playback Stream Playback Stream, The external player initiates a request to play a certain stream on the Ti Top Streamer (of course, the initiator may not necessarily be a player, but may also be a CDN), which belongs to the output stream
Forward Stream Forward Stream, Ti Top Streamer actively initiates and forwards its existing input stream to other third-party systems/CDNs (such as Alibaba Cloud, Tencent Cloud, Facebook, etc.), which also belong to output streams

In the product information and API documentation of Ti Top Streamer, you can easily see words like "Input", "Playback", and "Forward", which represent input stream, playback stream, and forward stream, respectively. They describe how a stream enters and exits along the way.

Alright, that's the basic concept of our product "Ti Top Streamer".