Class ZlmApiController

java.lang.Object
io.github.lunasaw.zlm.api.controller.ZlmApiController

@RestController @ConditionalOnProperty(value="zlm.enable", havingValue="true") @RequestMapping("/zlm/api") public class ZlmApiController extends Object
Version:
1.0
Author:
luna
  • Constructor Details

    • ZlmApiController

      public ZlmApiController()
  • Method Details

    • getVersion

      @GetMapping("/version") public ServerResponse<Version> getVersion()
      获取版本信息
    • getApiList

      @GetMapping("/api/list") public ServerResponse<List<String>> getApiList(@RequestParam(required=false) Map<String,String> params)
      获取API列表
    • getThreadsLoad

      @GetMapping("/threads/load") public ServerResponse<List<ThreadLoad>> getThreadsLoad()
      获取网络线程负载
    • getStatistic

      @GetMapping("/statistic") public ServerResponse<ImportantObjectNum> getStatistic()
      获取主要对象个数
    • getWorkThreadsLoad

      @GetMapping("/work-threads/load") public ServerResponse<List<ThreadLoad>> getWorkThreadsLoad()
      获取后台线程负载
    • getServerConfig

      @GetMapping("/server/config") public ServerResponse<List<ServerNodeConfig>> getServerConfig()
      获取服务器配置
    • setServerConfig

      @PostMapping("/server/config") public ServerResponse<String> setServerConfig(@RequestBody Map<String,String> params)
      设置服务器配置
    • restartServer

      @PostMapping("/server/restart") public ServerResponse<Object> restartServer(@RequestBody Map<String,String> params)
      重启服务器
    • getMediaList

      @PostMapping("/media/list") public ServerResponse<List<MediaData>> getMediaList(@RequestBody MediaReq mediaReq)
      获取流列表
    • closeStream

      @PostMapping("/media/close") public ServerResponse<String> closeStream(@RequestBody MediaReq mediaReq)
      关断单个流
    • closeStreams

      @PostMapping("/media/close-batch") public ServerResponse closeStreams(@RequestBody CloseStreamsReq closeStreamsReq)
      批量关断流
    • isMediaOnline

      @PostMapping("/media/online") public MediaOnlineStatus isMediaOnline(@RequestBody MediaReq mediaReq)
      流是否在线
    • getMediaPlayerList

      @PostMapping("/media/player/list") public ServerResponse<MediaPlayer> getMediaPlayerList(@RequestBody MediaReq mediaReq)
      获取媒体流播放器列表
    • getMediaInfo

      @PostMapping("/media/info") public ServerResponse<MediaInfo> getMediaInfo(@RequestBody MediaReq mediaReq)
      获取流信息
    • getPlaybackUrls

      @PostMapping("/media/play-urls") public ServerResponse<PlayUrl> getPlaybackUrls(@RequestBody MediaReq mediaReq)
      获取播放地址
    • broadcastMessage

      @PostMapping("/broadcast/message") public ServerResponse broadcastMessage(@RequestBody Map<String,String> params)
      广播webrtc datachannel消息
    • getAllSession

      @GetMapping("/session/list") public ServerResponse<List<TcpLink>> getAllSession(@RequestParam(required=false) String localPort, @RequestParam(required=false) String peerIp)
      获取所有TcpSession列表
    • kickSession

      @DeleteMapping("/session/{sessionId}") public ServerResponse<String> kickSession(@PathVariable("sessionId") String sessionId)
      断开tcp连接
    • kickSessions

      @PostMapping("/session/kick-batch") public ServerResponse<String> kickSessions(@RequestBody Map<String,String> params)
      批量断开tcp连接
    • addStreamProxy

      @PostMapping("/proxy/add") public ServerResponse<StreamKey> addStreamProxy(@RequestBody StreamProxyItem streamProxyItem)
      添加代理拉流
    • delStreamProxy

      @DeleteMapping("/proxy/{key}") public ServerResponse<StreamKey.StringDelFlag> delStreamProxy(@PathVariable("key") String key)
      关闭拉流代理
    • getProxyInfo

      @PostMapping("/proxy/info") public ServerResponse getProxyInfo(@RequestBody Map<String,String> params)
      获取拉流代理信息
    • addStreamPusherProxy

      @PostMapping("/pusher/add") public ServerResponse<StreamKey> addStreamPusherProxy(@RequestBody StreamPusherItem streamPusherItem)
      添加推流代理
    • delStreamPusherProxy

      @DeleteMapping("/pusher/{key}") public ServerResponse<StreamKey.StringDelFlag> delStreamPusherProxy(@PathVariable("key") String key)
      关闭推流代理
    • getProxyPusherInfo

      @PostMapping("/pusher/info") public ServerResponse getProxyPusherInfo(@RequestBody Map<String,String> params)
      获取推流代理信息
    • addFFmpegSource

      @PostMapping("/ffmpeg/add") public ServerResponse<StreamKey> addFFmpegSource(@RequestBody StreamFfmpegItem streamFfmpegItem)
      添加FFmpeg拉流代理
    • delFFmpegSource

      @DeleteMapping("/ffmpeg/{key}") public ServerResponse<StreamKey.StringDelFlag> delFFmpegSource(@PathVariable("key") String key)
      关闭FFmpeg拉流代理
    • listFFmpegSource

      @GetMapping("/ffmpeg/list") public ServerResponse<List<StreamFfmpegItem>> listFFmpegSource()
      获取FFmpeg拉流代理列表
    • listStreamProxy

      @GetMapping("/proxy/list") public ServerResponse<List<StreamProxyItem>> listStreamProxy()
      获取拉流代理列表
    • listStreamPusherProxy

      @GetMapping("/pusher/list") public ServerResponse<List<StreamPusherItem>> listStreamPusherProxy()
      获取推流代理列表
    • getMp4RecordFile

      @PostMapping("/record/files") public ServerResponse<Mp4RecordFile> getMp4RecordFile(@RequestBody RecordReq recordReq)
      获取录制文件列表
    • deleteRecordDirectory

      @PostMapping("/record/delete-directory") public DeleteRecordDirectory deleteRecordDirectory(@RequestBody Map<String,String> params)
      删除录像文件夹
    • startRecord

      @PostMapping("/record/start") public ServerResponse<String> startRecord(@RequestBody RecordReq recordReq)
      开始录制
    • setRecordSpeed

      @PostMapping("/record/speed") public ServerResponse<String> setRecordSpeed(@RequestBody RecordReq recordReq)
      设置录像速度
    • seekRecordStamp

      @PostMapping("/record/seek") public ServerResponse<String> seekRecordStamp(@RequestBody RecordReq recordReq)
      设置录像流播放位置
    • stopRecord

      @PostMapping("/record/stop") public ServerResponse<String> stopRecord(@RequestBody RecordReq recordReq)
      停止录制
    • isRecording

      @PostMapping("/record/status") public ServerResponse<String> isRecording(@RequestBody RecordReq recordReq)
      是否正在录制
    • getMp4RecordSummary

      @PostMapping("/record/summary") public ServerResponse<String> getMp4RecordSummary(@RequestBody Map<String,String> params)
      查询文件概览
    • startRecordTask

      @PostMapping("/record/task/start") public ServerResponse<String> startRecordTask(@RequestBody RecordTaskReq recordTaskReq)
      添加录制任务(支持回溯录制)
    • getSnap

      @PostMapping("/snapshot") public String getSnap(@RequestBody SnapshotReq snapshotReq)
      获取截图
    • getSnapUrl

      @PostMapping("/snapshot-url") public ServerResponse<String> getSnapUrl(@RequestBody SnapshotReq snapshotReq)
      获取截图URL - 返回可访问的URL路径
    • deleteSnapDirectory

      @PostMapping("/snapshot/delete") public ServerResponse<String> deleteSnapDirectory(@RequestBody MediaReq mediaReq)
      删除截图文件夹
    • addProbe

      @PostMapping("/probe/add") public ServerResponse<String> addProbe(@RequestBody MediaReq mediaReq, @RequestParam("probeMs") int probeMs)
      添加探针
    • getRtpInfo

      @GetMapping("/rtp/info/{streamId}") public RtpInfoResult getRtpInfo(@PathVariable("streamId") String streamId)
      获取rtp推流信息
    • openRtpServer

      @PostMapping("/rtp/server/open") public OpenRtpServerResult openRtpServer(@RequestBody OpenRtpServerReq req)
      创建RTP服务器
    • openRtpServerMultiplex

      @PostMapping("/rtp/server/open-multiplex") public OpenRtpServerResult openRtpServerMultiplex(@RequestBody OpenRtpServerReq req)
      创建多路复用RTP服务器
    • connectRtpServer

      @PostMapping("/rtp/server/connect") public OpenRtpServerResult connectRtpServer(@RequestBody ConnectRtpServerReq req)
      连接RTP服务器
    • closeRtpServer

      @DeleteMapping("/rtp/server/{streamId}") public CloseRtpServerResult closeRtpServer(@PathVariable("streamId") String streamId)
      关闭RTP服务器
    • updateRtpServerSSRC

      @PutMapping("/rtp/server/{streamId}/ssrc/{ssrc}") public ServerResponse<String> updateRtpServerSSRC(@PathVariable("streamId") String streamId, @PathVariable("ssrc") String ssrc)
      更新RTP服务器过滤SSRC
    • pauseRtpCheck

      @PostMapping("/rtp/server/{streamId}/pause-check") public ServerResponse<String> pauseRtpCheck(@PathVariable("streamId") String streamId)
      暂停RTP超时检查
    • resumeRtpCheck

      @PostMapping("/rtp/server/{streamId}/resume-check") public ServerResponse<String> resumeRtpCheck(@PathVariable("streamId") String streamId)
      恢复RTP超时检查
    • listRtpServer

      @GetMapping("/rtp/server/list") public ServerResponse<List<RtpServer>> listRtpServer()
      获取RTP服务器列表
    • startSendRtp

      @PostMapping("/rtp/send/start") public StartSendRtpResult startSendRtp(@RequestBody StartSendRtpReq req)
      开始发送rtp
    • startSendRtpPassive

      @PostMapping("/rtp/send/start-passive") public StartSendRtpResult startSendRtpPassive(@RequestBody StartSendRtpReq req)
      开始tcp passive被动发送rtp
    • stopSendRtp

      @PostMapping("/rtp/send/stop") public ServerResponse<String> stopSendRtp(@RequestBody CloseSendRtpReq req)
      停止发送rtp
    • listRtpSender

      @PostMapping("/rtp/sender/list") public ServerResponse<List<String>> listRtpSender(@RequestBody MediaReq mediaReq)
      获取rtp发送列表
    • startSendRtpTalk

      @PostMapping("/rtp/send/start-talk") public StartSendRtpResult startSendRtpTalk(@RequestBody StartSendRtpTalkReq req)
      RTP 双向对讲推流
    • startMultiMp4Publish

      @PostMapping("/mp4/publish/start") public ServerResponse startMultiMp4Publish(@RequestBody Map<String,String> params)
      多文件推流
    • stopMultiMp4Publish

      @PostMapping("/mp4/publish/stop") public ServerResponse stopMultiMp4Publish(@RequestBody Map<String,String> params)
      关闭多文件推流
    • loadMP4File

      @PostMapping("/mp4/load") public ServerResponse loadMP4File(@RequestBody Map<String,String> params)
      点播mp4文件
    • getStorageSpace

      @PostMapping("/storage/space") public ServerResponse<String> getStorageSpace(@RequestBody Map<String,String> params)
      获取存储信息
    • downloadFile

      @GetMapping("/download/file") public ServerResponse<String> downloadFile(@RequestParam("filePath") String filePath, @RequestParam(value="saveName",required=false) String saveName)
      下载文件(下载到服务器临时目录,返回落盘绝对路径)
    • downloadBin

      @GetMapping("/download/bin") public ServerResponse<String> downloadBin()
      下载二进制(如配置文件 downloadBin,下载到服务器临时目录)
    • stackStart

      @PostMapping("/stack/start") public ServerResponse<String> stackStart(@RequestBody StackReq req)
      多屏拼接 - 开始
    • stackReset

      @PostMapping("/stack/reset") public ServerResponse<String> stackReset(@RequestBody StackReq req)
      多屏拼接 - 重置
    • stackStop

      @DeleteMapping("/stack/{id}") public ServerResponse<String> stackStop(@PathVariable("id") String id)
      多屏拼接 - 停止
    • addWebrtcRoomKeeper

      @PostMapping("/webrtc/room-keeper/add") public ServerResponse<String> addWebrtcRoomKeeper(@RequestBody Map<String,String> params)
      WebRTC 注册到信令服务器
    • delWebrtcRoomKeeper

      @DeleteMapping("/webrtc/room-keeper/{roomKey}") public ServerResponse<String> delWebrtcRoomKeeper(@PathVariable("roomKey") String roomKey)
      WebRTC 从信令服务器注销
    • listWebrtcRoomKeepers

      @GetMapping("/webrtc/room-keeper/list") public ServerResponse<List<String>> listWebrtcRoomKeepers()
      WebRTC 房间守护者列表
    • listWebrtcRooms

      @GetMapping("/webrtc/rooms") public ServerResponse<List<String>> listWebrtcRooms()
      WebRTC 房间列表
    • getWebrtcProxyPlayerInfo

      @GetMapping("/webrtc/proxy-player/{key}") public ServerResponse<String> getWebrtcProxyPlayerInfo(@PathVariable("key") String key)
      WebRTC 代理播放器信息
    • webrtc

      @PostMapping(value="/webrtc", consumes="text/plain", produces="text/plain") public String webrtc(@RequestParam("type") String type, @RequestParam("app") String app, @RequestParam("stream") String stream, @RequestBody String sdpOffer)
      WebRTC 交互(body 为 SDP offer,返回 SDP answer)
    • whip

      @PostMapping(value="/webrtc/whip", consumes="application/sdp", produces="application/sdp") public String whip(@RequestParam("app") String app, @RequestParam("stream") String stream, @RequestBody String sdpOffer)
      WebRTC WHIP 推流(body 为 SDP offer)
    • whep

      @PostMapping(value="/webrtc/whep", consumes="application/sdp", produces="application/sdp") public String whep(@RequestParam("app") String app, @RequestParam("stream") String stream, @RequestBody String sdpOffer)
      WebRTC WHEP 播放(body 为 SDP offer)
    • deleteWebrtc

      @DeleteMapping("/webrtc/{id}") public ServerResponse<String> deleteWebrtc(@PathVariable("id") String id, @RequestParam("token") String token)
      删除 WebRTC 连接
    • searchOnvifDevice

      @GetMapping("/onvif/search") public ServerResponse<List<String>> searchOnvifDevice(@RequestParam("subnetPrefix") String subnetPrefix)
      搜索 ONVIF 设备
    • getOnvifStreamUrl

      @GetMapping("/onvif/stream-url") public ServerResponse<String> getOnvifStreamUrl(@RequestParam("onvifUrl") String onvifUrl)
      获取 ONVIF 设备流地址
    • login

      @GetMapping("/auth/login") public ServerResponse<String> login(@RequestParam("cookie") String cookie)
      登录鉴权
    • logout

      @GetMapping("/auth/logout") public ServerResponse<String> logout()
      注销鉴权
    • getVersionByNode

      @GetMapping("/node/{nodeId}/version") public ServerResponse<Version> getVersionByNode(@PathVariable("nodeId") String nodeId)
      指定节点获取版本信息
    • getMediaListByNode

      @PostMapping("/node/{nodeId}/media/list") public ServerResponse<List<MediaData>> getMediaListByNode(@PathVariable("nodeId") String nodeId, @RequestBody MediaReq mediaReq)
      指定节点获取流列表
    • getAllNodes

      @GetMapping("/nodes") public List<ZlmNode> getAllNodes()
      获取所有节点列表
    • handleIllegalArgumentException

      @ExceptionHandler(java.lang.IllegalArgumentException.class) public ServerResponse<String> handleIllegalArgumentException(IllegalArgumentException e)
      处理节点不存在异常