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

Ti Top Streamer 对外提供Http Rest接口,这些接口将满足各个行业解决方案的业务需求。如果以下这些接口不能满足您的需求,请您发邮件或电话联系我们。

一、一些基本原则:

1、采用http协议,暂不支持https协议。

2、url中的所有字符都区分大小写。

3、请求数据和响应数据都采用Json格式。

4、Json中的参数名要区分大小写。

5、http status code 为200时,表示接口调用的操作是成功的,否则就是失败的。根据失败的原因不同有各种不同的status code。所以你可以根据status code来判断成功与否。

6、所有接口的响应中的Json消息包含了一个code参数,它等同于http status code。

7、如果响应的数据是一个数组,则它会被包含在list参数中,例如{"code":200,"list":[]}

8、如果响应的数据是一个对象,则它会被包含在data参数中,例如{"code":200,"data":{}}

9、如果接口调用的操作失败,则错误提示会被包含在message中,例如{"code":500,"message":"add application failed,internal error"}

10、响应消息中的message都是很简单的英文提示,暂不考虑中文。



二、API详细说明:

按照功能相关性,我们将Ti Top Streamer的Http Rest API分为以下5类:



1、创建一个新的APP

http url /v1/app
http method POST
request body {"app_name":"live","source_type":"rtmp_push"}
response http status code及response body 200: 成功。body: {"code":200,"message":"add application success"}
400: 失败,缺少app_name或source_type参数,或者尚未支持的源流类型。body: {code:400,message:"the parameter app_name is needed"}
409: 失败,重复的app_name。body: {"code":409,"message":"duplicated application name"}
500: 失败,内部未知原因。body: {"code":500,"message":"add application failed,internal error"}
500: 失败,网络异常。body: {"code":500,"message":"network exception"}

备注:

1)app_name表示app的名称,它是一个字符串,1位到40位长度以内,合法字符包括A-Z,a-z 以及0-9。太长的名称在界面上不太好展现,因此建议你采用4-6位长度即可,例如live。

2)source_type表示直播流来源类型,目前已经支持的包括: rtmp_push,rtmp_pull,mpegts_over_udp,srt_listener。这个参数不区分大小写。随着版本的不断迭代,后续会增加其它源类型。

2、删除一个APP

http url /v1/apps/[app_name]
http method DELETE
request body
response http status code及response body 200: 成功。body: {"code":200,"message":"delete application success"}
404: 失败,指定的app不存在。body: {"code":404,"message":"the application referred is not exist"}
500: 失败,内部未知原因。body: {"code":500,"message":"delete application failed,internal error"}
500: 失败,网络异常。body: {"code":500,"message":"network exception"}


3、获取APP列表

http url /v1/apps
http method GET
query parameter
response http status code及response body 200: 成功。body: {"code":200,"list":[{"name":"live","source_type":"rtmp_push","created":"20220226152411"},{"name":"live2","source_type":"rtmp_pull","created":"20220226152411"}]
500: 失败,内部未知原因。body: {"code":500,"message":"get application list failed,internal error"}
500: 失败,网络异常。body: {"code":500,"message":"network exception"}


4、获取一个APP里关于源流输入相关的参数设置

http url /v1/apps/[app_name]/input/setting
http method GET
query parameter
response http status code及response body 200: 成功。body: {"code":200,"data":{}}
404: 失败。body: {"code":404,"message":"the application referred is not exist"}
500: 失败,内部未知原因。body: {"code":500,"message":"get input setting failed"}
500: 失败,网络异常。body: {"code":500,"message":"network exception"}

备注: 不同类型的APP,在视频流输入环节有不同的行为,因此也有不同的配置参数。

举例如下:

RTMP_PUSH 类型的APP,上述接口中data参数:
{"gop":false,"security":{"white_ip_list":"","black_ip_list":"","token_protect":true,"shared_key":"","duplicate":"replace"}}

RTMP_PULL 类型的APP,上述接口中data参数:
{"static":true,"gop":false,"connection":{"connect_timeout":6000,"reconnect_interval":10000,"connect_double_interval":false,"max_interval":300000,"stream_timeout":3000}}

5、为一个APP设置关于源流输入相关的参数

http url /v1/apps/[app_name]/input/setting
http method POST
request body {"gop":true,"stream_timeout":4000,"token_protect":false,"shared_key":"","callback_url":"","white_ip_List":"","black_ip_list":"","duplicate":"replace"}

{"gop":true,"static":true,"bind_local_ip":"","connect_timeout":6000,"stream_timeout":3000,"reconnect_interval":10000,"is_double":false}
response http status code及response body 200: 成功。body: {"code":200,"message":"save input setting success"}
404: 失败。body: {"code":404,"message":"the application referred is not exist"}
500: 失败,内部未知原因。body: {"code":500,"message":"save input setting failed"}
500: 失败,网络异常。body: {"code":500,"message":"network exception"}

备注: 不同类型的APP,在视频流输入环节有不同的行为,因此也有不同的配置参数。

6、获取一个APP关于视频流输出(播放)相关的参数设置

http url /v1/apps/[app_name]/playback/setting
http method GET
query parameter
response http status code及response body 200: 成功。body: {"code":200,"data":{"hls":{"enable":true,"max_segment_duration":4000,"max_segment_count":3,"min_segment_count":1},"rtmp":{"enable":true},"flv":{"enable":true},"rtsp":{"enable":true},"http":{"cross_domain":true},"security":{"white_ip_list":"","black_ip_list":"","token_protect":false,"shared_key":"","callback_url":""}}}
404: 失败。body: {"code":404,"message":"the application referred is not exist"}
500: 失败,内部未知原因。body: {"code":500,"message":"get playback setting failed"}
500: 失败,网络异常。body: {code:500,message:"network exception"}

7、为一个APP设置关于视频播放输出相关的参数

http url /v1/apps/[app_name]/playback/setting
http method POST
request body {"protocol_hls":true,"protocol_flv":true,"protocol_rtmp":true,"protocol_rtsp":true,"token_protect":false,"shared_key":"", "white_ip_list":"","black_ip_list":"","callback_url":"","cross_domain":true,"segment_duration":4000}
response http status code及response body 200: 成功。body: {"code":200,"message":"save playback setting success"}
404: 失败。body: {"code":404,"message":"the application referred is not exist"}
500: 失败,内部未知原因。body: {"code":500,"message":"save playback setting failed"}
500: 失败,网络异常。body: {"code":500,"message":"network exception"}

8、获得一个APP上视频流并发量的统计数据

http url /v1/apps/[app_name]/status
http method GET
query parameter
response http status code及response body 200: 成功。body: {code:200,data:{streams:{},playbacks:{},forwards:{}}}
404: 失败。body: {code:404,message:"the application referred is not exist"}
500: 失败,内部未知原因。body: {"code":500,"message":"get statistic failed"}
500: 失败,网络异常。body: {code:500,message:"network exception"}

备注: 响应数据中的data参数包含了三种并发流统计数据,1) streams对应输入流的数量。2)playbacks对应播放流的数量。3)forwards对应转发流的数量。

9、获得一个APP上某个历史时间范围的内部运行事件

http url /v1/apps/[app_name]/event
http method GET
query parameter 支持的查询参数包括category,stream_name,sid,date,start_time,end_time,例如?category=PUBLISH&stream_name=myStream&sid=rtmp_2930&date=20210211&start_time=09:10&end_time=12:45
response http status code及response body 200: 成功。body: {"code":200,"list":[]}
404: 失败。body: {"code":404,"message":"the application referred is not exist"}
500: 失败,内部未知原因。body: {"code":500,"message":"query application event failed"}
500: 失败,网络异常。body: {"code":500,"message":"network exception"}

备注:以上查询参数中:
1)category代表一个业务流程,比如直播流输入、直播流播放、直播流转推,是一个枚举值,合法的值包括:PUBLISH,SOURCE,PLAYBACK,FORWARD,TCP,UDP

2)stream_name代表一个流ID

3)sid代表sessionId(您不知道sessionId是什么的时候,可以忽略这个查询参数,根据查询出来的结果,可以看到sessionId,这样您可以进一步通过sid来查询)。

4)date代表日期,格式为YYYYMMDD

5)start_time代表开始时间,格式为hh:mm, 参数值精确到分钟,实际上精确到这一分钟的0秒

6)end_time代表结束时间,格式为hh:mm, 参数值精确到分钟,实际上精确到这一分钟的59秒