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秒