多协议、性能稳定、丰富API的流媒体服务器软件
您现在的位置:首页  >  文档  >  概念

Ti Top Streamer是一个流媒体服务器软件,支持多种视频流输入协议、支持多协议分发和转推,拥有漂亮而优雅的管理界面,支持中英双语切换,具备丰富的Http Rest API。

Ti Top Streamer需要部署在Linux Server上,例如Redhat、Centos、Debian以及Ubuntu等。

相对于市面上其它流媒体服务器产品,Ti Top Streamer 有着清晰、易于理解、便于扩展的逻辑架构。本章节,我们重点介绍它的一些基本概念。

1、APP、Application或者叫应用:

APP、Application或者叫应用,它们都是一个意思,相同的概念。以下为了方便,我们就说APP。 一个APP可以看做一组视频流,它们拥有同样的输入方式,拥有同样的处理逻辑(比如是否要录制?是否要支持HLS输出)。 举个例子,如果您有100个IP摄像头,您需要通过RTSP协议将视频流拉到Ti Top Streamer上,然后采用HLS协议给用户观看。那么这就是一个APP,这个APP下将会有100路从摄像头进来的视频流。再比如,您有5台硬件H.264编码器,它们会用RTMP协议推送50路高清电视节目到Ti Top Streamer上, 再通过HLS分发给某个CDN系统,那么这又是另外一个APP,这个APP下有50路高清电视节目流。

一个APP有一个唯一的名字,它是一个字符串,2位到40位长度以内,合法字符包括A-Z,a-z 以及0-9和横杠"-"以及下划线"_"。太长的名称在管理界面上不太好展现,因此建议你采用4-10位长度即可,例如live。 注意,不要尝试去用中文做APP的名字,因为APP的名字会被用在各种url上,用中文是不合适的。

一个APP有一个直播流输入类型的参数,它是一个枚举值(不区分大小写),在文档中有的地方叫做sourceType,有的的地方做source_type,它们是一个意思,都是为了说明这个APP中视频流是以怎样的方式进入的(输入)。 目前,我们已经实现的sourceType包括以下几种:

RTMP_PUSH 外部系统(比如一个编码器)主动向Ti Top Streamer推送RTMP流
RTMP_PULL 由Ti Top Streamer发起,根据一个URL从外部系统拉RTMP流进入Ti Top Streamer
RTSP_PULL 由Ti Top Streamer发起,根据一个URL从外部系统拉RTSP流进入Ti Top Streamer
MPEGTS_OVER_UDP 外部系统(比如一个编码器)主动向Ti Top Streamer的一个UDP端口推送MPEG-TS流
SRT_LISTENER Ti Top Streamer扮演SRT Listener的角色,外部支持SRT协议的设备/系统向Ti Top Streamer推送SRT流
GB28181 Ti Top Streamer可以接收从支持GB28181协议的摄像头或NVR设备发送过来的音视频流
WEBRTC Ti Top Streamer可以接收包括浏览器在内的任何第三方推送过来的WEBRTC音视频流

随着版本的迭代,后续会不断的增加其它输入源类型。

提示: 从1.0.58版本开始,TiTopStreamer也支持mp4文件的VOD点播了,在管理界面上直播类APP和点播类APP是分开、分别管理的。

熟悉Wowza Streaming Engine的用户,应该很容易理解APP的概念。在Wowza Streaming Engine中,一个APP可以拥有很多不同协议来源的视频流。这是这两个产品的不同之处。为什么Ti Top Streamer要限制一个APP只能有一个 唯一的输入源类型呢?为什么不能把各种来源的输入流都混杂在一个APP里呢?其实,从底层技术角度来说,这么做,没有什么不可以的。但是这么做,带来了管理上的复杂度,逻辑结构也不太清晰,完全没有必要。而从某一个企业客户的角度来说,其应用场景基本是固定的、单一的。 即使,真的有多个不同来源的输入方式,那么无非就是多创建一个APP而已。而Ti Top Streamer就是这样一个支持多APP的流媒体服务器软件。此外,一个APP和另一个APP,它们两者之间是完全隔离的,互不影响。

Ti Top Streamer软件出厂时,默认会附带一个叫做"live"的直播APP和一个叫做"vod"的点播APP,"live"应用的输入流类型是"RTMP_PUSH"。您在完成安装后,登录到管理界面,就可以看到它们。后续,您可以通过我们提供的管理界面来添加APP,也可以用我们提供的Http rest API来创建APP。

2、Source和Stream,或者叫做流:

首先,所有进入Ti Top Streamer的实时媒体流都叫做Stream(流),更严谨的说法应该称它们为Input Stream(输入流)。

根据前面对APP的介绍,我们已经知道,所有的流都是某个APP下所属的。这一点,我们不再赘述。

当Ti Top Streamer 扮演Client的角色,从某个外部系统(扮演Server的角色)拉流进入时,我们通常会说Ti Top Streamer从一个源(Source)拉流。比如您的客户/合作伙伴给您了一个rtmp url,这就是一个Source,您需要根据这个url把流拉进Ti Top Streamer。 这时候你要做的就是在Ti Top Streamer中添加这个Source,然后为这个流起一个名字(流ID)。举个例子,rtmp://www.ttstream.com/live/cctv-hd这个url是一路电视节目流,您在添加这个Source时,除了要填写这个url外,您还要给这个流起个名字,它是一个字符串,2位到40位长度以内,合法字符包括A-Z,a-z以及0-9和横杠"-"以及下划线"_"。 在Ti Top Streamer的界面上叫做source name或者stream Name(中文您可以称之为流ID,当然你要说是"流名字"也没毛病,但就是叫起来有点别扭,您理解这个意思就可以了)。

一个Source被启动后(启动的意思就是开始去拉这个流),这个APP下就产生了一个Stream,每个Stream有自己的名字,就是上面说的Stream Name。所以你可以这么理解:Source在启动以后就成为了Stream,Source Name就成了Stream Name。

当一个APP下产生了一个新的Stream后,后续要引用这个流,就可以用Stream Name来引用了。所以,很容易理解,在一个APP里面,您在添加Source时,Source Name是不能重复的。

注意:当你用rtmp给Ti Top Streamer推送一路媒体流时,您无需在Ti Top Streamer中添加Source。因为根据RTMP协议,外部系统在主动给Ti Top Streamer推送流时,Stream的名字(StreamName)是由推送端确定的。这一点,如果您用过OBS、VMIX或FFMPEG的话,您应该清楚。(我们这里所说的StreamName,在OBS里叫做"key",这只是不同的产品对它的叫法不同而已)

3、Ti Top Streamer中有三种流:Input Stream, Playback Stream, Forward Stream

Input Stream 输入流,进入Ti Top Streamer的流
Playback Stream 播放流,外部播放器主动发起请求,要播放Ti Top Streamer上的某个流(当然,发起方也不一定是个播放器了,也可能是CDN),它属于输出流
Forward Stream 转推流,指Ti Top Streamer主动发起,将自己已经有的输入流转发到其它第三方系统/CDN(比如阿里云、腾讯云、Facebook等),它也属于输出流

在Ti Top Streamer的产品资料、API文档中,你很容易看到Input、Playback、Forward这样的词,它们分别代表输入、播放、转推。它们描述都是一路流是怎么进入的,怎么出去的。您只要想象一下您家里厨房的自来水三通水管。您就可以很容易理解它们。

好了,以上就是我们产品的基本概念。