ZLMediaKit支持的HTTP API

MediaServer是ZLMediaKit的主进程,目前支持以下http api接口,这些接口全部支持GET/POST方式,

      "/index/api/addFFmpegSource",
      "/index/api/addStreamProxy",
      "/index/api/close_stream",
      "/index/api/delFFmepgSource",
      "/index/api/delStreamProxy",
      "/index/api/getAllSession",
      "/index/api/getApiList",
      "/index/api/getMediaList",
      "/index/api/getServerConfig",
      "/index/api/getThreadsLoad",
      "/index/api/kick_session",
      "/index/api/restartServer",
      "/index/api/setServerConfig",
      

其中POST方式,参数既可以使用urlencoded方式也可以使用json方式。
操作这些api一般需要提供secret参数以便鉴权,如果操作ip是127.0.0.1,那么可以无需鉴权。

API详解

  • /index/api/getThreadsLoad

    • 功能:获取各epoll(或select)线程负载以及延时

    • 范例:http://127.0.0.1/index/api/getThreadsLoad

    • 参数:无

    • 响应:

      {
         "data" : [
            {
               "delay" : 0, #该线程延时
               "load" : 0 #该线程负载,0 ~ 100
            },
            {
               "delay" : 0,
               "load" : 0
            }
         ]
      }
      
  • /index/api/getServerConfig

    • 功能:获取服务器配置

    • 范例:http://127.0.0.1/index/api/getServerConfig

    • 参数:

      参数 是否必选 释意
      secret Y api操作密钥(配置文件配置),如果操作ip是127.0.0.1,则不需要此参数
    • 响应:

      {
         "code" : 0,
         "data" : [
            {
               "api.apiDebug" : "1",
               "api.secret" : "035c73f7-bb6b-4889-a715-d9eb2d1925cc",
               "ffmpeg.bin" : "/usr/local/bin/ffmpeg",
               "ffmpeg.cmd" : "%s -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s",
               "ffmpeg.log" : "/Users/xzl/git/ZLMediaKit/cmake-build-debug/bin/ffmpeg/ffmpeg.log",
               "general.enableVhost" : "1",
               "general.flowThreshold" : "1024",
               "general.maxStreamWaitMS" : "5000",
               "general.streamNoneReaderDelayMS" : "5000",
               "hls.fileBufSize" : "65536",
               "hls.filePath" : "/Users/xzl/git/ZLMediaKit/cmake-build-debug/bin/httpRoot",
               "hls.segDur" : "3",
               "hls.segNum" : "3",
               "hook.access_file_except_hls" : "1",
               "hook.admin_params" : "secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc",
               "hook.enable" : "1",
               "hook.on_flow_report" : "https://127.0.0.1/index/hook/on_flow_report",
               "hook.on_http_access" : "https://127.0.0.1/index/hook/on_http_access",
               "hook.on_play" : "https://127.0.0.1/index/hook/on_play",
               "hook.on_publish" : "https://127.0.0.1/index/hook/on_publish",
               "hook.on_record_mp4" : "https://127.0.0.1/index/hook/on_record_mp4",
               "hook.on_rtsp_auth" : "https://127.0.0.1/index/hook/on_rtsp_auth",
               "hook.on_rtsp_realm" : "https://127.0.0.1/index/hook/on_rtsp_realm",
               "hook.on_shell_login" : "https://127.0.0.1/index/hook/on_shell_login",
               "hook.on_stream_changed" : "https://127.0.0.1/index/hook/on_stream_changed",
               "hook.on_stream_none_reader" : "https://127.0.0.1/index/hook/on_stream_none_reader",
               "hook.on_stream_not_found" : "https://127.0.0.1/index/hook/on_stream_not_found",
               "hook.timeoutSec" : "10",
               "http.charSet" : "utf-8",
               "http.keepAliveSecond" : "100",
               "http.maxReqCount" : "100",
               "http.maxReqSize" : "4096",
               "http.notFound" : "<html><head><title>404 Not Found</title></head><body bgcolor=\"white\"><center><h1>您访问的资源不存在!</h1></center><hr><center>ZLMediaKit-4.0</center></body></html>",
               "http.port" : "80",
               "http.rootPath" : "/Users/xzl/git/ZLMediaKit/cmake-build-debug/bin/httpRoot",
               "http.sendBufSize" : "65536",
               "http.sslport" : "443",
               "multicast.addrMax" : "239.255.255.255",
               "multicast.addrMin" : "239.0.0.0",
               "multicast.udpTTL" : "64",
               "record.appName" : "record",
               "record.filePath" : "/Users/xzl/git/ZLMediaKit/cmake-build-debug/bin/httpRoot",
               "record.fileSecond" : "3600",
               "record.sampleMS" : "100",
               "rtmp.handshakeSecond" : "15",
               "rtmp.keepAliveSecond" : "15",
               "rtmp.modifyStamp" : "1",
               "rtmp.port" : "1935",
               "rtp.audioMtuSize" : "600",
               "rtp.clearCount" : "10",
               "rtp.cycleMS" : "46800000",
               "rtp.maxRtpCount" : "50",
               "rtp.videoMtuSize" : "1400",
               "rtsp.authBasic" : "0",
               "rtsp.handshakeSecond" : "15",
               "rtsp.keepAliveSecond" : "15",
               "rtsp.port" : "554",
               "rtsp.sslport" : "322",
               "shell.maxReqSize" : "1024",
               "shell.port" : "9000"
            }
         ]
      }
      
  • /index/api/restartServer

    • 功能:重启服务器,只有Daemon方式才能重启,否则是直接关闭!

    • 范例:http://127.0.0.1/index/api/restartServer

    • 参数:

      参数 是否必选 释意
      secret Y api操作密钥(配置文件配置),如果操作ip是127.0.0.1,则不需要此参数
    • 响应:

      {
         "code" : 0,
         "msg" : "服务器将在一秒后自动重启"
      }
      
  • /index/api/getMediaList

    • 功能:获取流列表,可选筛选参数

    • 范例:http://127.0.0.1/index/api/getMediaList

    • 参数:

      参数 是否必选 释意
      secret Y api操作密钥(配置文件配置),如果操作ip是127.0.0.1,则不需要此参数
      schema N 筛选协议,例如 rtsp或rtmp
      vhost N 筛选虚拟主机,例如__defaultVost__
      app N 筛选应用名,例如 live
    • 响应:

      {
         "code" : 0,
         "data" : [
            {
               "app" : "live",
               "schema" : "rtsp",
               "stream" : "0",
               "vhost" : "__defaultVhost__"
            },
            {
               "app" : "live",
               "schema" : "rtmp",
               "stream" : "0",
               "vhost" : "__defaultVhost__"
            }
         ],
         "msg" : "success"
      }
      
  • /index/api/close_stream

    • 功能:关闭流(目前所有类型的流都支持关闭)

    • 范例:http://127.0.0.1/index/api/close_stream?schema=rtmp&vhost=__defaultVhost__&app=live&stream=0&force=1

    • 参数:

      参数 是否必选 释意
      secret Y api操作密钥(配置文件配置),如果操作ip是127.0.0.1,则不需要此参数
      schema Y 协议,例如 rtsp或rtmp
      vhost Y 虚拟主机,例如__defaultVost__
      app Y 应用名,例如 live
      stream Y 流id,例如 test
      force N 是否强制关闭(有人在观看是否还关闭)
    • 响应:

      {
         "code" : 0,# 0:成功,-1:关闭失败,-2:该流不存在
         "msg" : "success"
      }
      
  • /index/api/getAllSession

    • 功能:获取所有TcpSession列表(获取所有tcp客户端相关信息)

    • 范例:http://127.0.0.1/index/api/getAllSession

    • 参数:

      参数 是否必选 释意
      secret Y api操作密钥(配置文件配置),如果操作ip是127.0.0.1,则不需要此参数
      local_port N 筛选本机端口,例如筛选rtsp链接:554
      peer_ip N 筛选客户端ip
    • 响应:

      {
         "code" : 0,
         "data" : [
            {
               "id" : "140614477848784",
               "local_ip" : "127.0.0.1",
               "local_port" : 80,
               "peer_ip" : "127.0.0.1",
               "peer_port" : 51136,
               "typeid" : "16WebSocketSessionI11EchoSessionN8mediakit11HttpSessionEE"
            },
            {
               "id" : "140614443300192",
               "local_ip" : "127.0.0.1",
               "local_port" : 80,
               "peer_ip" : "127.0.0.1",
               "peer_port" : 51135,
               "typeid" : "16WebSocketSessionI11EchoSessionN8mediakit11HttpSessionEE"
            },
            {
               "id" : "140614440178720",  # 该tcp链接唯一id
               "local_ip" : "127.0.0.1",  # 本机网卡ip
               "local_port" : 1935,           # 本机端口号 (这是个rtmp播放器或推流器)
               "peer_ip" : "127.0.0.1",   # 客户端ip 
               "peer_port" : 51130,               # 客户端端口号
               "typeid" : "N8mediakit11RtmpSessionE"  # 客户端TCPSession typeid
            }
         ]
      }
      
  • /index/api/kick_session

    • 功能:断开tcp连接,比如说可以断开rtsp、rtmp播放器等

    • 范例:http://127.0.0.1/index/api/kick_session?id=140614440178720

    • 参数:

      参数 是否必选 释意
      secret Y api操作密钥(配置文件配置),如果操作ip是127.0.0.1,则不需要此参数
      Id Y 客户端唯一id,可以通过getAllSession接口获取
    • 响应:

      {
         "code" : 0,
         "msg" : "success"
      }
      
  • /index/api/delStreamProxy

    • 功能:关闭拉流代理

    • 范例:http://127.0.0.1/index/api/delStreamProxy?key=__defaultVhost__/proxy/0

    • 参数:

      参数 是否必选 释意
      secret Y api操作密钥(配置文件配置),如果操作ip是127.0.0.1,则不需要此参数
      key Y addStreamProxy接口返回的key
    • 响应:

      {
         "code" : 0,
         "data" : {
            "flag" : true # 成功与否
         }
      }
      
  • /index/api/delFFmepgSource(目前windows下无效)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349