From 0b2f635176c71706d5dc33555497445367dc243b Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 09 四月 2024 10:30:00 +0800 Subject: [PATCH] 移除非主线内容 --- /dev/null | 24 ------------------------ 1 files changed, 0 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLHttpHookListener.java deleted file mode 100755 index 69e6d8c..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLHttpHookListener.java +++ /dev/null @@ -1,413 +0,0 @@ -package com.genersoft.iot.vmp.media.abl; - -import com.alibaba.fastjson2.JSONObject; -import com.genersoft.iot.vmp.conf.UserSetting; -import com.genersoft.iot.vmp.gb28181.event.EventPublisher; -import com.genersoft.iot.vmp.gb28181.session.AudioBroadcastManager; -import com.genersoft.iot.vmp.gb28181.session.SSRCFactory; -import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; -import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; -import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; -import com.genersoft.iot.vmp.media.abl.bean.hook.*; -import com.genersoft.iot.vmp.media.abl.event.HookAblServerKeepaliveEvent; -import com.genersoft.iot.vmp.media.abl.event.HookAblServerStartEvent; -import com.genersoft.iot.vmp.media.bean.MediaServer; -import com.genersoft.iot.vmp.media.bean.ResultForOnPublish; -import com.genersoft.iot.vmp.media.event.hook.HookSubscribe; -import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent; -import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent; -import com.genersoft.iot.vmp.media.event.media.MediaNotFoundEvent; -import com.genersoft.iot.vmp.media.event.media.MediaRtpServerTimeoutEvent; -import com.genersoft.iot.vmp.media.service.IMediaServerService; -import com.genersoft.iot.vmp.media.zlm.ZLMMediaListManager; -import com.genersoft.iot.vmp.media.zlm.dto.hook.HookResult; -import com.genersoft.iot.vmp.media.zlm.dto.hook.HookResultForOnPublish; -import com.genersoft.iot.vmp.service.*; -import com.genersoft.iot.vmp.storager.IRedisCatchStorage; -import com.genersoft.iot.vmp.storager.IVideoManagerStorage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.context.ApplicationEventPublisher; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import org.springframework.util.ObjectUtils; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.Map; - -/** - * ABL 鐨刪ook浜嬩欢鐩戝惉 - */ -@RestController -@RequestMapping("/index/hook/abl") -public class ABLHttpHookListener { - - private final static Logger logger = LoggerFactory.getLogger(ABLHttpHookListener.class); - - @Autowired - private ABLRESTfulUtils ablresTfulUtils; - - @Autowired - private ISIPCommanderForPlatform commanderFroPlatform; - - @Autowired - private AudioBroadcastManager audioBroadcastManager; - - @Autowired - private IPlayService playService; - - @Autowired - private IVideoManagerStorage storager; - - @Autowired - private IRedisCatchStorage redisCatchStorage; - - @Autowired - private IInviteStreamService inviteStreamService; - - @Autowired - private IDeviceService deviceService; - - @Autowired - private IMediaServerService mediaServerService; - - @Autowired - private IStreamProxyService streamProxyService; - - @Autowired - private DeferredResultHolder resultHolder; - - @Autowired - private IMediaService mediaService; - - @Autowired - private EventPublisher eventPublisher; - - @Autowired - private ZLMMediaListManager zlmMediaListManager; - - @Autowired - private HookSubscribe subscribe; - - @Autowired - private UserSetting userSetting; - - @Autowired - private IUserService userService; - - @Autowired - private ICloudRecordService cloudRecordService; - - @Autowired - private VideoStreamSessionManager sessionManager; - - @Autowired - private SSRCFactory ssrcFactory; - - @Qualifier("taskExecutor") - @Autowired - private ThreadPoolTaskExecutor taskExecutor; - - @Autowired - private RedisTemplate<Object, Object> redisTemplate; - - @Autowired - private ApplicationEventPublisher applicationEventPublisher; - - /** - * 鏈嶅姟鍣ㄥ畾鏃朵笂鎶ユ椂闂达紝涓婃姤闂撮殧鍙厤缃紝榛樿10s涓婃姤涓�娆� - */ - @ResponseBody - @PostMapping(value = "/on_server_keepalive", produces = "application/json;charset=UTF-8") - public HookResult onServerKeepalive(@RequestBody OnServerKeepaliveABLHookParam param) { - try { - HookAblServerKeepaliveEvent event = new HookAblServerKeepaliveEvent(this); - MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId()); - if (mediaServerItem != null) { - event.setMediaServerItem(mediaServerItem); - applicationEventPublisher.publishEvent(event); - } - }catch (Exception e) { - logger.info("[ZLM-HOOK-蹇冭烦] 鍙戦�侀�氱煡澶辫触 ", e); - } - return HookResult.SUCCESS(); - } - - /** - * 鎾斁鍣ㄩ壌鏉冧簨浠讹紝rtsp/rtmp/http-flv/ws-flv/hls鐨勬挱鏀鹃兘灏嗚Е鍙戞閴存潈浜嬩欢銆� - */ - @ResponseBody - @PostMapping(value = "/on_play", produces = "application/json;charset=UTF-8") - public HookResult onPlay(@RequestBody OnPlayABLHookParam param) { - - MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId()); - if (mediaServer == null) { - return new HookResultForOnPublish(0, "success"); - } - - Map<String, String> paramMap = urlParamToMap(param.getParams()); - // 瀵逛簬鎾斁娴佽繘琛岄壌鏉� - boolean authenticateResult = mediaService.authenticatePlay(param.getApp(), param.getStream(), paramMap.get("callId")); - if (!authenticateResult) { - logger.info("[ABL HOOK] 鎾斁閴存潈 澶辫触锛歿}->{}", param.getMediaServerId(), param); - ablresTfulUtils.closeStreams(mediaServer, param.getApp(), param.getStream()); - - } - logger.info("[ABL HOOK] 鎾斁閴存潈鎴愬姛锛歿}->{}", param.getMediaServerId(), param); - return HookResult.SUCCESS(); - } - - /** - * rtsp/rtmp/rtp鎺ㄦ祦閴存潈浜嬩欢銆� - */ - @ResponseBody - @PostMapping(value = "/on_publish", produces = "application/json;charset=UTF-8") - public HookResult onPublish(@RequestBody OnPublishABLHookParam param) { - - - logger.info("[ABL HOOK]鎺ㄦ祦閴存潈锛歿}->{}", param.getMediaServerId(), param); - // TODO 鍔犲揩澶勭悊閫熷害 - - MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId()); - if (mediaServer == null) { - return new HookResultForOnPublish(0, "success"); - } - - ResultForOnPublish resultForOnPublish = mediaService.authenticatePublish(mediaServer, param.getApp(), param.getStream(), param.getParams()); - if (resultForOnPublish == null) { - logger.info("[ABL HOOK]鎺ㄦ祦閴存潈 鎷掔粷 鍝嶅簲锛歿}->{}", param.getMediaServerId(), param); - ablresTfulUtils.closeStreams(mediaServer, param.getApp(), param.getStream()); - } - return HookResult.SUCCESS(); - } - - /** - * 濡傛灉鏌愪竴涓爜娴佽繘琛孧P4褰曞儚锛坋nable_mp4=1锛夛紝浼氳Е鍙戝綍鍍忚繘搴﹂�氱煡浜嬩欢 - */ - @ResponseBody - @PostMapping(value = "/on_record_progress", produces = "application/json;charset=UTF-8") - public HookResult onRecordProgress(@RequestBody OnRecordProgressABLHookParam param) { - - - logger.info("[ABL HOOK] 褰曞儚杩涘害閫氱煡锛歿}->{}/{}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream(), param.getCurrentFileDuration(), param.getTotalVideoDuration()); - - // TODO 杩欓噷鐢ㄦ潵鍋氬綍鍍忚繘搴� -// MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId()); -// if (mediaServer == null) { -// return new HookResultForOnPublish(0, "success"); -// } -// -// ResultForOnPublish resultForOnPublish = mediaService.authenticatePublish(mediaServer, param.getApp(), param.getStream(), param.getParams()); -// if (resultForOnPublish == null) { -// logger.info("[ABL HOOK]鎺ㄦ祦閴存潈 鎷掔粷 鍝嶅簲锛歿}->{}", param.getMediaServerId(), param); -// ablresTfulUtils.closeStreams(mediaServer, param.getApp(), param.getStream()); -// } - return HookResult.SUCCESS(); - } - - /** - * 褰撲唬鐞嗘媺娴併�佸浗鏍囨帴鍏ョ瓑绛� 鐮佹祦涓嶅埌杈炬椂浼氬彂鍑� 鐮佹祦涓嶅埌杈剧殑浜嬩欢閫氱煡 - */ - @ResponseBody - @PostMapping(value = "/on_stream_not_arrive", produces = "application/json;charset=UTF-8") - public HookResult onStreamNotArrive(@RequestBody ABLHookParam param) { - - - logger.info("[ABL HOOK] 鐮佹祦涓嶅埌杈鹃�氱煡锛歿}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream()); - try { - if ("rtp".equals(param.getApp())) { - return HookResult.SUCCESS(); - } - MediaRtpServerTimeoutEvent event = new MediaRtpServerTimeoutEvent(this); - MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId()); - if (mediaServerItem != null) { - event.setMediaServer(mediaServerItem); - event.setApp("rtp"); - applicationEventPublisher.publishEvent(event); - } - }catch (Exception e) { - logger.info("[ABL-HOOK-鐮佹祦涓嶅埌杈鹃�氱煡] 鍙戦�侀�氱煡澶辫触 ", e); - } - - return HookResult.SUCCESS(); - } - - /** - * 濡傛灉鏌愪竴涓爜娴佽繘琛孧P4褰曞儚锛坋nable_mp4=1锛夛紝褰撴煇涓狹P4鏂囦欢琚垹闄や細瑙﹀彂璇ヤ簨浠堕�氱煡 - */ - @ResponseBody - @PostMapping(value = "/on_delete_record_mp4", produces = "application/json;charset=UTF-8") - public HookResult onDeleteRecordMp4(@RequestBody OnRecordMp4ABLHookParam param) { - - - logger.info("[ABL HOOK] MP4鏂囦欢琚垹闄ら�氱煡锛歿}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream()); - - - return HookResult.SUCCESS(); - } - - - /** - * rtsp/rtmp娴佹敞鍐屾垨娉ㄩ攢鏃惰Е鍙戞浜嬩欢锛涙浜嬩欢瀵瑰洖澶嶄笉鏁忔劅銆� - */ - @ResponseBody - @PostMapping(value = "/on_stream_arrive", produces = "application/json;charset=UTF-8") - public HookResult onStreamArrive(@RequestBody OnStreamArriveABLHookParam param) { - - MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId()); - if (mediaServer == null) { - return HookResult.SUCCESS(); - } - - logger.info("[ABL HOOK] 鐮佹祦鍒拌揪, {}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream()); - MediaArrivalEvent mediaArrivalEvent = MediaArrivalEvent.getInstance(this, param, mediaServer); - applicationEventPublisher.publishEvent(mediaArrivalEvent); - return HookResult.SUCCESS(); - } - - /** - * 娴佹棤浜鸿鐪嬫椂浜嬩欢锛岀敤鎴峰彲浠ラ�氳繃姝や簨浠堕�夋嫨鏄惁鍏抽棴鏃犱汉鐪嬬殑娴併�� - */ - @ResponseBody - @PostMapping(value = "/on_stream_none_reader", produces = "application/json;charset=UTF-8") - public JSONObject onStreamNoneReader(@RequestBody ABLHookParam param) { - - logger.info("[ZLM HOOK]娴佹棤浜鸿鐪嬶細{}->{}/{}", param.getMediaServerId(), - param.getApp(), param.getStream()); - JSONObject ret = new JSONObject(); - - boolean close = mediaService.closeStreamOnNoneReader(param.getMediaServerId(), param.getApp(), param.getStream(), null); - ret.put("code", close); - return ret; - } - - /** - * 褰撴挱鏀句竴涓猽rl锛屽鏋滀笉瀛樺湪鏃讹紝浼氬彂鍑轰竴涓秷鎭�氱煡 - */ - @ResponseBody - @PostMapping(value = "/on_stream_not_found", produces = "application/json;charset=UTF-8") - public HookResult onStreamNotFound(@RequestBody ABLHookParam param) { - logger.info("[ABL HOOK] 娴佹湭鎵惧埌锛歿}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream()); - - - MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId()); - if (!userSetting.isAutoApplyPlay() || mediaServer == null) { - return HookResult.SUCCESS(); - } - MediaNotFoundEvent mediaNotFoundEvent = MediaNotFoundEvent.getInstance(this, param, mediaServer); - applicationEventPublisher.publishEvent(mediaNotFoundEvent); - return HookResult.SUCCESS(); - } - - /** - * ABLMediaServer鍚姩鏃朵細鍙戦�佷笂绾块�氱煡 - */ - @ResponseBody - @PostMapping(value = "/on_server_started", produces = "application/json;charset=UTF-8") - public HookResult onServerStarted(HttpServletRequest request, @RequestBody OnServerStaredABLHookParam param) { - - logger.info("[ABL HOOK] 鍚姩 " + param.getMediaServerId()); - try { - HookAblServerStartEvent event = new HookAblServerStartEvent(this); - MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId()); - if (mediaServerItem != null) { - event.setMediaServerItem(mediaServerItem); - applicationEventPublisher.publishEvent(event); - } - }catch (Exception e) { - logger.info("[ABL-HOOK-鍚姩] 鍙戦�侀�氱煡澶辫触 ", e); - } - - return HookResult.SUCCESS(); - } - - /** - * TODO 鍙戦�乺tp(startSendRtp)琚姩鍏抽棴鏃跺洖璋� - */ -// @ResponseBody -// @PostMapping(value = "/on_send_rtp_stopped", produces = "application/json;charset=UTF-8") -// public HookResult onSendRtpStopped(HttpServletRequest request, @RequestBody OnSendRtpStoppedHookParam param) { -// -// logger.info("[ZLM HOOK] rtp鍙戦�佸叧闂細{}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream()); -// -// // 鏌ユ壘瀵瑰簲鐨勪笂绾ф帹娴侊紝鍙戦�佸仠姝� -// if (!"rtp".equals(param.getApp())) { -// return HookResult.SUCCESS(); -// } -// try { -// MediaSendRtpStoppedEvent event = new MediaSendRtpStoppedEvent(this); -// MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId()); -// if (mediaServerItem != null) { -// event.setMediaServer(mediaServerItem); -// applicationEventPublisher.publishEvent(event); -// } -// }catch (Exception e) { -// logger.info("[ZLM-HOOK-rtp鍙戦�佸叧闂璢 鍙戦�侀�氱煡澶辫触 ", e); -// } -// -// return HookResult.SUCCESS(); -// } - - /** - * TODO 褰曞儚瀹屾垚浜嬩欢 - */ - @ResponseBody - @PostMapping(value = "/on_record_mp4", produces = "application/json;charset=UTF-8") - public HookResult onRecordMp4(HttpServletRequest request, @RequestBody OnRecordMp4ABLHookParam param) { - logger.info("[ABL HOOK] 褰曞儚瀹屾垚浜嬩欢锛歿}->{}", param.getMediaServerId(), param.getFileName()); - -// try { -// MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId()); -// if (mediaServerItem != null) { -// MediaRecordMp4Event event = MediaRecordMp4Event.getInstance(this, param, mediaServerItem); -// event.setMediaServer(mediaServerItem); -// applicationEventPublisher.publishEvent(event); -// } -// }catch (Exception e) { -// logger.info("[ZLM-HOOK-rtpServer鏀舵祦瓒呮椂] 鍙戦�侀�氱煡澶辫触 ", e); -// } - - return HookResult.SUCCESS(); - } - - /** - * 褰撴煇涓�璺爜娴佹柇寮�鏃朵細鍙戦�侀�氱煡 - */ - @ResponseBody - @PostMapping(value = "/on_stream_disconnect", produces = "application/json;charset=UTF-8") - public HookResult onRecordMp4(HttpServletRequest request, @RequestBody ABLHookParam param) { - logger.info("[ABL HOOK] 鐮佹祦鏂紑浜嬩欢, {}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream()); - - MediaServer mediaServer = mediaServerService.getOne(param.getMediaServerId()); - if (mediaServer == null) { - return HookResult.SUCCESS(); - } - - MediaDepartureEvent mediaDepartureEvent = MediaDepartureEvent.getInstance(this, param, mediaServer); - applicationEventPublisher.publishEvent(mediaDepartureEvent); - - return HookResult.SUCCESS(); - } - - private Map<String, String> urlParamToMap(String params) { - HashMap<String, String> map = new HashMap<>(); - if (ObjectUtils.isEmpty(params)) { - return map; - } - String[] paramsArray = params.split("&"); - if (paramsArray.length == 0) { - return map; - } - for (String param : paramsArray) { - String[] paramArray = param.split("="); - if (paramArray.length == 2) { - map.put(paramArray[0], paramArray[1]); - } - } - return map; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaNodeServerService.java deleted file mode 100644 index 110c0cb..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaNodeServerService.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.genersoft.iot.vmp.media.abl; - -import com.alibaba.fastjson2.JSONObject; -import com.genersoft.iot.vmp.common.CommonCallback; -import com.genersoft.iot.vmp.common.StreamInfo; -import com.genersoft.iot.vmp.media.bean.MediaInfo; -import com.genersoft.iot.vmp.media.bean.MediaServer; -import com.genersoft.iot.vmp.media.service.IMediaNodeServerService; -import com.genersoft.iot.vmp.vmanager.bean.WVPResult; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@Service("abl") -public class ABLMediaNodeServerService implements IMediaNodeServerService { - - private final static Logger logger = LoggerFactory.getLogger(ABLMediaNodeServerService.class); - - @Autowired - private ABLRESTfulUtils ablresTfulUtils; - - @Override - public int createRTPServer(MediaServer mediaServer, String stream, long ssrc, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode) { - return ablresTfulUtils.openRtpServer(mediaServer, "rtp", stream, 96, port, tcpMode, disableAudio?1:0); - } - - @Override - public void closeRtpServer(MediaServer mediaServer, String streamId) { - closeRtpServer(mediaServer, streamId, null); - } - - @Override - public void closeRtpServer(MediaServer serverItem, String streamId, CommonCallback<Boolean> callback) { - if (serverItem == null) { - return; - } - Map<String, Object> param = new HashMap<>(); - param.put("stream_id", streamId); - param.put("force", 1); - JSONObject jsonObject = ablresTfulUtils.closeStreams(serverItem, "rtp", streamId); - logger.info("鍏抽棴RTP Server " + jsonObject); - if (jsonObject != null ) { - if (jsonObject.getInteger("code") != 0) { - logger.error("鍏抽棴RTP Server 澶辫触: " + jsonObject.getString("msg")); - } - }else { - // 妫�鏌LM鐘舵�� - logger.error("鍏抽棴RTP Server 澶辫触: 璇锋鏌LM鏈嶅姟"); - } - } - - @Override - public void closeStreams(MediaServer mediaServerItem, String rtp, String streamId) { - - } - - @Override - public Boolean updateRtpServerSSRC(MediaServer mediaServerItem, String streamId, String ssrc) { - return null; - } - - @Override - public boolean checkNodeId(MediaServer mediaServerItem) { - return false; - } - - @Override - public void online(MediaServer mediaServerItem) { - - } - - @Override - public MediaServer checkMediaServer(String ip, int port, String secret) { - return null; - } - - @Override - public boolean stopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc) { - return false; - } - - @Override - public boolean deleteRecordDirectory(MediaServer mediaServerItem, String app, String stream, String date, String fileName) { - return false; - } - - @Override - public List<StreamInfo> getMediaList(MediaServer mediaServerItem, String app, String stream, String callId) { - return null; - } - - @Override - public Boolean connectRtpServer(MediaServer mediaServerItem, String address, int port, String stream) { - return null; - } - - @Override - public void getSnap(MediaServer mediaServerItem, String streamUrl, int timeoutSec, int expireSec, String path, String fileName) { - - } - - @Override - public MediaInfo getMediaInfo(MediaServer mediaServerItem, String app, String stream) { - return null; - } - - @Override - public Boolean pauseRtpCheck(MediaServer mediaServer, String streamKey) { - return null; - } - - @Override - public Boolean resumeRtpCheck(MediaServer mediaServer, String streamKey) { - return null; - } - - @Override - public String getFfmpegCmd(MediaServer mediaServer, String cmdKey) { - return null; - } - - @Override - public WVPResult<String> addFFmpegSource(MediaServer mediaServer, String srcUrl, String dstUrl, int timeoutMs, boolean enableAudio, boolean enableMp4, String ffmpegCmdKey) { - return null; - } - - @Override - public WVPResult<String> addStreamProxy(MediaServer mediaServer, String app, String stream, String url, boolean enableAudio, boolean enableMp4, String rtpType) { - return null; - } - - @Override - public Boolean delFFmpegSource(MediaServer mediaServer, String streamKey) { - return null; - } - - @Override - public Boolean delStreamProxy(MediaServer mediaServer, String streamKey) { - return null; - } - - @Override - public Map<String, String> getFFmpegCMDs(MediaServer mediaServer) { - return null; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServerStatusManger.java b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServerStatusManger.java deleted file mode 100644 index cb55695..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServerStatusManger.java +++ /dev/null @@ -1,362 +0,0 @@ -package com.genersoft.iot.vmp.media.abl; - -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; -import com.genersoft.iot.vmp.conf.DynamicTask; -import com.genersoft.iot.vmp.conf.UserSetting; -import com.genersoft.iot.vmp.media.abl.bean.AblServerConfig; -import com.genersoft.iot.vmp.media.abl.bean.ConfigKeyId; -import com.genersoft.iot.vmp.media.abl.event.HookAblServerKeepaliveEvent; -import com.genersoft.iot.vmp.media.abl.event.HookAblServerStartEvent; -import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerChangeEvent; -import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerDeleteEvent; -import com.genersoft.iot.vmp.media.service.IMediaServerService; -import com.genersoft.iot.vmp.media.bean.MediaServer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.event.EventListener; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.lang.reflect.Field; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 绠$悊zlm娴佸獟浣撹妭鐐圭殑鐘舵�� - */ -@Component -public class ABLMediaServerStatusManger { - - private final static Logger logger = LoggerFactory.getLogger(ABLMediaServerStatusManger.class); - - private final Map<Object, MediaServer> offlineABLPrimaryMap = new ConcurrentHashMap<>(); - private final Map<Object, MediaServer> offlineAblsecondaryMap = new ConcurrentHashMap<>(); - private final Map<Object, Long> offlineAblTimeMap = new ConcurrentHashMap<>(); - - @Autowired - private ABLRESTfulUtils ablResTfulUtils; - - @Autowired - private IMediaServerService mediaServerService; - - @Autowired - private DynamicTask dynamicTask; - - @Value("${server.ssl.enabled:false}") - private boolean sslEnabled; - - @Value("${server.port}") - private Integer serverPort; - - @Autowired - private UserSetting userSetting; - - private final String type = "abl"; - - @Async("taskExecutor") - @EventListener - public void onApplicationEvent(MediaServerChangeEvent event) { - if (event.getMediaServerItemList() == null - || event.getMediaServerItemList().isEmpty()) { - return; - } - for (MediaServer mediaServerItem : event.getMediaServerItemList()) { - if (!type.equals(mediaServerItem.getType())) { - continue; - } - logger.info("[ABL-娣诲姞寰呬笂绾胯妭鐐筣 ID锛�" + mediaServerItem.getId()); - offlineABLPrimaryMap.put(mediaServerItem.getId(), mediaServerItem); - offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis()); - } - } - - @Async("taskExecutor") - @EventListener - public void onApplicationEvent(HookAblServerStartEvent event) { - if (event.getMediaServerItem() == null - || !type.equals(event.getMediaServerItem().getType()) - || event.getMediaServerItem().isStatus()) { - return; - } - MediaServer serverItem = mediaServerService.getOne(event.getMediaServerItem().getId()); - if (serverItem == null) { - return; - } - logger.info("[ABL-HOOK浜嬩欢-鏈嶅姟鍚姩] ID锛�" + event.getMediaServerItem().getId()); - online(serverItem, null); - } - - @Async("taskExecutor") - @EventListener - public void onApplicationEvent(HookAblServerKeepaliveEvent event) { - if (event.getMediaServerItem() == null) { - return; - } - MediaServer serverItem = mediaServerService.getOne(event.getMediaServerItem().getId()); - if (serverItem == null) { - return; - } - logger.info("[ABL-HOOK浜嬩欢-蹇冭烦] ID锛�" + event.getMediaServerItem().getId()); - online(serverItem, null); - } - - @Async("taskExecutor") - @EventListener - public void onApplicationEvent(MediaServerDeleteEvent event) { - if (event.getMediaServerId() == null) { - return; - } - logger.info("[ABL-鑺傜偣琚Щ闄 ID锛�" + event.getMediaServerId()); - offlineABLPrimaryMap.remove(event.getMediaServerId()); - offlineAblsecondaryMap.remove(event.getMediaServerId()); - offlineAblTimeMap.remove(event.getMediaServerId()); - } - - @Scheduled(fixedDelay = 10*1000) //姣忛殧10绉掓鏌ヤ竴娆� - public void execute(){ - // 鍒濇鍔犲叆鐨勭绾胯妭鐐逛細鍦�30鍒嗛挓鍐咃紝姣忛棿闅斿崄绉掑皾璇曚竴娆★紝30鍒嗛挓鍚庡鏋滀粛鐒舵病鏈変笂绾匡紝鍒欐瘡闅�30鍒嗛挓灏濊瘯涓�娆¤繛鎺� - if (offlineABLPrimaryMap.isEmpty() && offlineAblsecondaryMap.isEmpty()) { - return; - } - if (!offlineABLPrimaryMap.isEmpty()) { - for (MediaServer mediaServerItem : offlineABLPrimaryMap.values()) { - if (offlineAblTimeMap.get(mediaServerItem.getId()) < System.currentTimeMillis() - 30*60*1000) { - offlineAblsecondaryMap.put(mediaServerItem.getId(), mediaServerItem); - offlineABLPrimaryMap.remove(mediaServerItem.getId()); - continue; - } - logger.info("[ABL-灏濊瘯杩炴帴] ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); - JSONObject responseJson = ablResTfulUtils.getServerConfig(mediaServerItem); - AblServerConfig ablServerConfig = null; - if (responseJson == null) { - logger.info("[ABL-灏濊瘯杩炴帴]澶辫触, ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); - continue; - } - JSONArray data = responseJson.getJSONArray("params"); - if (data == null || data.isEmpty()) { - logger.info("[ABL-灏濊瘯杩炴帴]澶辫触, ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); - }else { - ablServerConfig = AblServerConfig.getInstance(data); - initPort(mediaServerItem, ablServerConfig); - online(mediaServerItem, ablServerConfig); - } - } - } - if (!offlineAblsecondaryMap.isEmpty()) { - for (MediaServer mediaServerItem : offlineAblsecondaryMap.values()) { - if (offlineAblTimeMap.get(mediaServerItem.getId()) < System.currentTimeMillis() - 30*60*1000) { - continue; - } - logger.info("[ABL-灏濊瘯杩炴帴] ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); - JSONObject responseJson = ablResTfulUtils.getServerConfig(mediaServerItem); - AblServerConfig ablServerConfig = null; - if (responseJson == null) { - logger.info("[ABL-灏濊瘯杩炴帴]澶辫触, ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); - offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis()); - continue; - } - JSONArray data = responseJson.getJSONArray("params"); - if (data == null || data.isEmpty()) { - logger.info("[ABL-灏濊瘯杩炴帴]澶辫触, ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); - offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis()); - }else { - ablServerConfig = AblServerConfig.getInstance(data); - initPort(mediaServerItem, ablServerConfig); - online(mediaServerItem, ablServerConfig); - } - } - } - } - - private void online(MediaServer mediaServerItem, AblServerConfig config) { - offlineABLPrimaryMap.remove(mediaServerItem.getId()); - offlineAblsecondaryMap.remove(mediaServerItem.getId()); - offlineAblTimeMap.remove(mediaServerItem.getId()); - if (!mediaServerItem.isStatus()) { - logger.info("[ABL-杩炴帴鎴愬姛] ID锛歿}, 鍦板潃锛� {}:{}", mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); - mediaServerItem.setStatus(true); - mediaServerItem.setHookAliveInterval(10F); - mediaServerService.update(mediaServerItem); - if(mediaServerItem.isAutoConfig()) { - if (config == null) { - JSONObject responseJSON = ablResTfulUtils.getServerConfig(mediaServerItem); - JSONArray data = responseJSON.getJSONArray("params"); - if (data != null && !data.isEmpty()) { - config = AblServerConfig.getInstance(data); - } - } - if (config != null) { - initPort(mediaServerItem, config); - setAblConfig(mediaServerItem, false, config); - } - } - mediaServerService.update(mediaServerItem); - } - // 璁剧疆涓ゆ蹇冭烦鏈敹鍒板垯璁や负zlm绂荤嚎 - String key = "ABL-keepalive-" + mediaServerItem.getId(); - dynamicTask.startDelay(key, ()->{ - logger.warn("[ABL-蹇冭烦瓒呮椂] ID锛歿}", mediaServerItem.getId()); - mediaServerItem.setStatus(false); - offlineABLPrimaryMap.put(mediaServerItem.getId(), mediaServerItem); - offlineAblTimeMap.put(mediaServerItem.getId(), System.currentTimeMillis()); - // TODO 鍙戦�佺绾块�氱煡 - mediaServerService.update(mediaServerItem); - }, (int)(mediaServerItem.getHookAliveInterval() * 2 * 1000)); - } - private void initPort(MediaServer mediaServerItem, AblServerConfig ablServerConfig) { - // 绔彛鍙細浠庨厤缃腑璇诲彇涓�娆★紝涓�鏃﹁嚜宸遍厤缃垨鑰呰鍙栬繃浜嗗皢涓嶅湪閰嶇疆 -// if (mediaServerItem.getHttpSSlPort() == 0) { -// mediaServerItem.setHttpSSlPort(ablServerConfig.getHttpSSLport()); -// } - if (mediaServerItem.getRtmpPort() == 0 && ablServerConfig.getRtmpPort() != null) { - mediaServerItem.setRtmpPort(ablServerConfig.getRtmpPort()); - } -// if (mediaServerItem.getRtmpSSlPort() == 0) { -// mediaServerItem.setRtmpSSlPort(ablServerConfig.getRtmpSslPort()); -// } - if (mediaServerItem.getRtspPort() == 0 && ablServerConfig.getRtspPort() != null) { - mediaServerItem.setRtspPort(ablServerConfig.getRtspPort()); - } - if (mediaServerItem.getFlvPort() == 0 && ablServerConfig.getHttpFlvPort() != null) { - mediaServerItem.setFlvPort(ablServerConfig.getHttpFlvPort()); - } - if (mediaServerItem.getWsFlvPort() == 0 && ablServerConfig.getWsPort() != null) { - mediaServerItem.setWsFlvPort(ablServerConfig.getWsPort()); - } - if (mediaServerItem.getRtpProxyPort() == 0 && ablServerConfig.getPsTsRecvPort() != null) { - mediaServerItem.setRtpProxyPort(ablServerConfig.getPsTsRecvPort()); - } -// if (mediaServerItem.getRtspSSLPort() == 0) { -// mediaServerItem.setRtspSSLPort(ablServerConfig.getRtspSSlport()); -// } -// if (mediaServerItem.getRtpProxyPort() == 0) { -// mediaServerItem.setRtpProxyPort(ablServerConfig.getRtpProxyPort()); -// } - mediaServerItem.setHookAliveInterval(10F); - } - - public void setAblConfig(MediaServer mediaServerItem, boolean restart, AblServerConfig config) { - try { - if (config.getHookEnable() == 0) { - logger.info("[濯掍綋鏈嶅姟鑺傜偣-ABL] 寮�鍚疕OOK鍔熻兘 锛歿}", mediaServerItem.getId()); - JSONObject responseJSON = ablResTfulUtils.setConfigParamValue(mediaServerItem, "hook_enable", "1"); - if (responseJSON.getInteger("code") == 0) { - logger.info("[濯掍綋鏈嶅姟鑺傜偣-ABL] 寮�鍚疕OOK鍔熻兘鎴愬姛 锛歿}", mediaServerItem.getId()); - }else { - logger.info("[濯掍綋鏈嶅姟鑺傜偣-ABL] 寮�鍚疕OOK鍔熻兘澶辫触 锛歿}->{}", mediaServerItem.getId(), responseJSON.getString("memo")); - } - } - }catch (Exception e) { - logger.info("[濯掍綋鏈嶅姟鑺傜偣-ABL] 寮�鍚疕OOK鍔熻兘澶辫触 锛歿}", mediaServerItem.getId(), e); - } - // 璁剧疆鐩稿叧鐨凥OOK - String[] hookUrlArray = { - "on_stream_arrive", - "on_stream_none_reader", - "on_record_mp4", - "on_stream_disconnect", - "on_stream_not_found", - "on_server_started", - "on_publish", - "on_play", - "on_record_progress", - "on_server_keepalive", - "on_stream_not_arrive", - "on_delete_record_mp4", - }; - - String protocol = sslEnabled ? "https" : "http"; - String hookPrefix = String.format("%s://%s:%s/index/hook/abl", protocol, mediaServerItem.getHookIp(), serverPort); - Field[] fields = AblServerConfig.class.getDeclaredFields(); - for (Field field : fields) { - try { - if (field.isAnnotationPresent(ConfigKeyId.class)) { - ConfigKeyId configKeyId = field.getAnnotation(ConfigKeyId.class); - for (String hook : hookUrlArray) { - if (configKeyId.value().equals(hook)) { - String hookUrl = String.format("%s/%s", hookPrefix, hook); - field.setAccessible(true); - // 鍒╃敤鍙嶅皠鑾峰彇鍊煎悗瀵规瘮鏄惁涓庨厤缃腑鐩稿悓锛屼笉鍚屽垯杩涜璁剧疆 - if (!hookUrl.equals(field.get(config))) { - JSONObject responseJSON = ablResTfulUtils.setConfigParamValue(mediaServerItem, hook, hookUrl); - if (responseJSON.getInteger("code") == 0) { - logger.info("[濯掍綋鏈嶅姟鑺傜偣-ABL] 璁剧疆HOOK {} 鎴愬姛 锛歿}", hook, mediaServerItem.getId()); - }else { - logger.info("[濯掍綋鏈嶅姟鑺傜偣-ABL] 璁剧疆HOOK {} 澶辫触 锛歿}->{}", hook, mediaServerItem.getId(), responseJSON.getString("memo")); - } - } - } - } - } - }catch (Exception e) { - logger.info("[濯掍綋鏈嶅姟鑺傜偣-ABL] 璁剧疆HOOK 澶辫触 锛歿}", mediaServerItem.getId(), e); - } - } - - - - -// Map<String, Object> param = new HashMap<>(); -// param.put("api.secret",mediaServerItem.getSecret()); // -profile:v Baseline -// if (mediaServerItem.getRtspPort() != 0) { -// param.put("ffmpeg.snap", "%s -rtsp_transport tcp -i %s -y -f mjpeg -frames:v 1 %s"); -// } -// param.put("hook.enable","1"); -// param.put("hook.on_flow_report",""); -// param.put("hook.on_play",String.format("%s/on_play", hookPrefix)); -// param.put("hook.on_http_access",""); -// param.put("hook.on_publish", String.format("%s/on_publish", hookPrefix)); -// param.put("hook.on_record_ts",""); -// param.put("hook.on_rtsp_auth",""); -// param.put("hook.on_rtsp_realm",""); -// param.put("hook.on_server_started",String.format("%s/on_server_started", hookPrefix)); -// param.put("hook.on_shell_login",""); -// param.put("hook.on_stream_changed",String.format("%s/on_stream_changed", hookPrefix)); -// param.put("hook.on_stream_none_reader",String.format("%s/on_stream_none_reader", hookPrefix)); -// param.put("hook.on_stream_not_found",String.format("%s/on_stream_not_found", hookPrefix)); -// param.put("hook.on_server_keepalive",String.format("%s/on_server_keepalive", hookPrefix)); -// param.put("hook.on_send_rtp_stopped",String.format("%s/on_send_rtp_stopped", hookPrefix)); -// param.put("hook.on_rtp_server_timeout",String.format("%s/on_rtp_server_timeout", hookPrefix)); -// param.put("hook.on_record_mp4",String.format("%s/on_record_mp4", hookPrefix)); -// param.put("hook.timeoutSec","30"); -// param.put("hook.alive_interval", mediaServerItem.getHookAliveInterval()); -// // 鎺ㄦ祦鏂紑鍚庡彲浠ュ湪瓒呮椂鏃堕棿鍐呴噸鏂拌繛鎺ヤ笂缁х画鎺ㄦ祦锛岃繖鏍锋挱鏀惧櫒浼氭帴鐫�鎾斁銆� -// // 缃�0鍏抽棴姝ょ壒鎬�(鎺ㄦ祦鏂紑浼氬鑷寸珛鍗虫柇寮�鎾斁鍣�) -// // 姝ゅ弬鏁颁笉搴斿ぇ浜庢挱鏀惧櫒瓒呮椂鏃堕棿 -// // 浼樺寲姝ゆ秷鎭互鏇村揩鐨勬敹鍒版祦娉ㄩ攢浜嬩欢 -// param.put("protocol.continue_push_ms", "3000" ); -// // 鏈�澶氱瓑寰呮湭鍒濆鍖栫殑Track鏃堕棿锛屽崟浣嶆绉掞紝瓒呮椂涔嬪悗浼氬拷鐣ユ湭鍒濆鍖栫殑Track, 璁剧疆姝ら�夐」浼樺寲閭d簺闊抽閿欒鐨勪笉瑙勮寖娴侊紝 -// // 绛墇lm鏀寔缁欐瘡涓猺tpServer璁剧疆鍏抽棴闊抽鐨勬椂鍊欏彲浠ヤ笉璁剧疆姝ら�夐」 -// if (mediaServerItem.isRtpEnable() && !ObjectUtils.isEmpty(mediaServerItem.getRtpPortRange())) { -// param.put("rtp_proxy.port_range", mediaServerItem.getRtpPortRange().replace(",", "-")); -// } -// -// if (!ObjectUtils.isEmpty(mediaServerItem.getRecordPath())) { -// File recordPathFile = new File(mediaServerItem.getRecordPath()); -// param.put("protocol.mp4_save_path", recordPathFile.getParentFile().getPath()); -// param.put("protocol.downloadRoot", recordPathFile.getParentFile().getPath()); -// param.put("record.appName", recordPathFile.getName()); -// } -// -// JSONObject responseJSON = ablResTfulUtils.setConfigParamValue(mediaServerItem, param); -// -// if (responseJSON != null && responseJSON.getInteger("code") == 0) { -// if (restart) { -// logger.info("[濯掍綋鏈嶅姟鑺傜偣] 璁剧疆鎴愬姛,寮�濮嬮噸鍚互淇濊瘉閰嶇疆鐢熸晥 {} -> {}:{}", -// mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); -// ablResTfulUtils.restartServer(mediaServerItem); -// }else { -// logger.info("[濯掍綋鏈嶅姟鑺傜偣] 璁剧疆鎴愬姛 {} -> {}:{}", -// mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); -// } -// }else { -// logger.info("[濯掍綋鏈嶅姟鑺傜偣] 璁剧疆濯掍綋鏈嶅姟鑺傜偣澶辫触 {} -> {}:{}", -// mediaServerItem.getId(), mediaServerItem.getIp(), mediaServerItem.getHttpPort()); -// } - } - -} diff --git "a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServer\351\253\230\346\200\247\350\203\275\346\265\201\345\252\222\344\275\223\346\234\215\345\212\241\345\231\250\344\275\277\347\224\250\350\257\264\346\230\216.txt" "b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServer\351\253\230\346\200\247\350\203\275\346\265\201\345\252\222\344\275\223\346\234\215\345\212\241\345\231\250\344\275\277\347\224\250\350\257\264\346\230\216.txt" deleted file mode 100644 index 9cffc98..0000000 --- "a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLMediaServer\351\253\230\346\200\247\350\203\275\346\265\201\345\252\222\344\275\223\346\234\215\345\212\241\345\231\250\344\275\277\347\224\250\350\257\264\346\230\216.txt" +++ /dev/null @@ -1,1743 +0,0 @@ -涓�銆佸姛鑳借鏄� - ABLMediaServer楂樻�ц兘娴佸獟浣撴湇鍔″櫒锛寃indows骞冲彴閲囩敤楂樻�ц兘鐨勫畬鎴愮鍙g綉缁滄ā鍨嬨�丩inux涓嬮噰鐢╡poll锛屽姞涓婄嚎绋嬫睜杩涜濯掍綋鏁版嵁 - 鐨勬帴鏀躲�佽浆鎹€�佸彂閫併�傛湇鍔″櫒鐨勬�ц兘寮哄姴銆佽繍琛岀ǔ瀹氾紝鍧氬纾愮煶銆傜粡杩囧帇鍔涙祴璇曟瘮杈冿紝杞彂鎬ц兘銆丆PU鍗犳湁鐜囥�佽繍琛岀ǔ瀹氭�т紭鍔挎槑鏄� 銆傚彲 - 浠ラ�氳繃ffmpeg鍛戒护鎴栬�呭叾浠栨爣鍑嗙殑rtsp銆乺tmp鎺ㄦ祦鍑芥暟寰�ABLMediaServer鎺ㄩ�乺tsp娴併�乺tmp娴侊紝璇锋眰鏈嶅姟鍣ㄤ唬鐞嗘媺娴侊紝璇锋眰鏈嶅姟鍣ㄦ帴鏀跺浗 - 鏍嘒B28181銆傛湇鍔″櫒閫氳繃杞崲锛岃緭鍑烘爣鍑嗙殑rtsp鐮佹祦銆乺tmp鐮佹祦銆乭ttp-flv銆亀s-flv 鐮佹祦锛堟敮鎸丠265瑙嗛杈撳嚭锛夈�乭ttp-mp4(瑙嗛鏀寔H264銆� - H265锛岄煶棰戞敮鎸丄AC)銆乭ls鐮佹祦杈撳嚭锛堣棰戞敮鎸丠264銆丠265锛岄煶棰戞敮鎸丄AC锛夈�丟B28181鐮佹祦(鍥芥爣PS娴� )杈撳嚭銆� - 娴佸獟浣撴湇鍔″櫒鏀寔褰曞儚銆佹敮鎸佹櫤鑳藉綍鍍忓垹闄ゃ�佸綍鍍忔煡璇€�佸綍鍍忔枃浠剁偣鎾�佸綍鍍忔枃浠舵瀬閫熶笅杞姐�俬ttp-flv銆亀s-flv銆乭ttp-mp4 鍗忚鐐规挱鏃� - 鏀寔鏆傚仠缁х画銆佹敮鎸佹嫋鍔ㄦ挱鏀俱�俽tsp鐐规挱褰曞儚鏂囦欢鏃舵敮鎸佹參鏀撅紙1/16銆�1/8銆�1/4銆�1/2锛�,蹇斁锛�2銆�4銆�8銆�16 锛夈�佹甯搁�熷害銆佹敮鎸佹嫋鍔ㄦ挱鏀俱�� - 娴佸獟浣撴湇鍔″櫒鏀绾�(鍩烘湰涓�1绉掍互鍐�)鍥剧墖鎶撴媿锛屾敮鎸佸鎶撴媿鐨勫浘鐗囪繘琛屾煡鎵撅紝鏀寔鎶撴媿鍥剧墖浠ttp鍗忚涓嬭浇銆� - 鏈嶅姟鍣ㄦ敮鎸丠265杞爜涓篐264锛岃浆鐮佽緭鍑鸿棰戞敮鎸佹寚瀹氬垎杈ㄧ巼銆佸楂樸�佺爜鐜囧ぇ灏忕瓑绛夊弬鏁般�俉indows骞冲彴鏀寔鑻变紵杈炬樉鍗$‖浠跺姞閫熻浆鐮併�傚疄 - 娴媗inux 骞冲彴鑳芥渶澶у苟鍙戣浆鐮�40璺疕265锛堢‖浠剁幆澧� 鑷冲己 E5 2650 V3锛夛紝瀹炴祴windows 骞冲彴鑳芥渶澶у苟鍙戣浆鐮�35璺疕265锛坕9 + 鑻变紵杈� RTX 2080锛� - Linux 鏂板鏀寔鑻变紵杈句笓涓氭樉鍗�,鏀寔纭欢瑙g爜銆佺‖浠剁紪鐮侊紝鏀寔澶氫釜鏄惧崱鍚屾椂杩涜杞爜銆備袱寮犵壒鏂媺T4锛�16G锛夋樉鍗″彲浠ュ悓鏃舵妸80璺�1080P - 鐨凥265瑙嗛杞爜涓� 1280 x 720 鐨凥264锛岃浆鐮佸欢鏃朵綆浜�10姣锛屽鏋滈渶瑕佹洿寮虹殑杞爜鍔熻兘鍙互澶氭彃鍑犲紶鏄惧崱鎴栬�呴泦缇� 銆� - 鏈嶅姟鍣ㄦ敮鎸佽浆鐮佸嚭鏉ョ殑瑙嗛鎵撳叆鑷畾涔夋按鍗帮紝鏀寔姘村嵃鐨勫瓧绗﹀唴瀹广�佸瓧浣撳ぇ灏忋�� 瀛椾綋棰滆壊銆佸瓧浣撲綅缃兘鍙互鍦ㄩ厤缃枃浠朵腑閰嶇疆銆� - 闈炲父鎰熻阿ZLMediaKit鍜孧edia-Server 涓や釜宸ョ▼椤圭洰鐨勪綔鑰咃紝ABLMediaSever鍙傝�冨鐢ㄤ簡ZLMediaKit鐨刪ttp璇锋眰鍑芥暟鐨勫弬鏁拌〃(璇锋眰鐨刄RL - 鍙婅姹傜殑鍙傛暟鍚嶅強涓�浜涘垵濮嬪��)浠ュ強鏁翠釜妗嗘灦鐨勪竴浜涜璁℃�濇兂銆傜洿鎺ヨ皟鐢ㄤ簡Media-Server 宸ョ▼鐨� rtmp銆乫lv銆乭ls銆乫mp4 澶嶇敤涓庤В澶嶇敤绛夌瓑銆� - 闈炲父宕囨嫓涓庢劅璋袱浣嶅ぇ浣负涓浗鐨勫紑婧愭祦濯掍綋鍔姏涓庝粯鍑猴紝鍐嶆鎰熻阿銆� - - 銆愭杩庡姞鍏ラ珮鎬ц兘娴佸獟浣撴湇鍔Q缇� 873666268 銆� - -浜屻�丄BLMediaServer涓昏鍔熻兘 - - 缃戠粶鍗忚濯掍綋杈撳叆 - rtsp銆乺tmp澶栭儴涓诲姩鎺ㄦ祦杈撳叆 - 1銆乺tsp澶栭儴涓诲姩鎺ㄦ祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - 2銆乺tmp澶栭儴涓诲姩鎺ㄦ祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) - 3銆佸浗鏍嘒B28181杈撳叆 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - 4銆佷氦閫氳繍杈撻儴jtt1078 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - - rtsp銆乺tmp銆乭ttp-flv銆佹湰鍦癿p4鏂囦欢 鎷夋祦杈撳叆锛� - 1銆乺tsp 鎷夋祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - 2銆乺tmp 鎷夋祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) - 3銆乭ttp-flv 鎷夋祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) - 4銆佹湰鍦癿p4 鎷夋祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - - websock鏂瑰紡绉佹湁鍗忚鍙戦�丳CM鏁版嵁杩涘叆娴佸獟浣撴湇鍔″櫒(鍙互鍦ㄦ祻瑙堝櫒褰曢煶閫氳繃websocket浠ヤ笅闈㈢殑绉佹湁鍗忚鎶婅闊虫帴鍏ユ祦濯掍綋鏈嶅姟鍣ㄦ柟渚垮浗鏍囧璁层�佹垨鑰呭叾浠栧簲鐢ㄦ瘮濡傝闊冲箍鎾�) - 1銆佹暟鎹寘鏍煎紡 - 鍖呭ご銆�+銆�鏁版嵁绫诲瀷銆�+銆�闀垮害銆�+銆�鏁版嵁鍖� - 鍖呭ご4涓瓧鑺� 0xAB 0xCD 0xEF 0xAB - 鏁版嵁绫诲瀷銆� 1 涓瓧鑺� 锛孾 0x01 鎺ㄦ祦闊抽娉ㄥ唽 ] [0x02 鍙戦�� PCM 闊抽鏁版嵁鍖匽 [0x03 鏂紑闊抽鎺ㄦ祦 ] - 闀垮害 銆� 2 涓瓧鑺� 锛岀綉缁滃瓧鑺傞『搴忥紙澶х锛� - 鏁版嵁鍖� 闊抽娉ㄥ唽鍖呫�乸cm闊抽鏁版嵁鍖呫�佹敞閿�鍖� - - 2銆佹暟鎹寘绫诲瀷 - 1)銆侀煶棰戞敞鍐屽寘 ,json 鏍煎紡 - {"method":"register","app":"talk","stream":"xian_1","audioCodec":"pcm","channels":1,"sampleRate":16000,"targetAudioCodec":"g711a"} - - 鏍蜂緥锛氬彂閫侀煶棰戞敞鍐� - websocket 鍙杩炴帴涓婃潵锛屽氨棣栧厛鍙戦�� 闊抽娉ㄥ唽鍖� - (0xAB 0xCD 0xEF 0xAB) + 0x01 + strlen(闊抽娉ㄥ唽鍖�) + {"method":"register","app":"talk","stream":"xian_1","audioCodec":"pcm","channels":1,"sampleRate":16000,"targetAudioCodec":"g711a"} - - 2) 銆侀煶棰戞暟鎹寘 鍙敮鎸� 16浣嶉噰鏍风簿搴︾殑pcm 锛屽崟閫氶亾銆佸弻閫氶亾銆佸父瑙佺殑閲囨牱棰戠巼閮芥敮鎸侊紙8000銆�16000銆�32000銆�48000锛� - 鏍蜂緥锛氱幇鍦ㄥ彧鍙戦�佺函pcm闊抽鏁版嵁 - (0xAB 0xCD 0xEF 0xAB) + 0x02 + strlen(pcm绾煶棰戞暟鎹�) + pcm绾煶棰戞暟鎹� - - 3)銆佹敞閿�鍖� - {"method":"destruction"} - - 鏍蜂緥锛氬彂閫佹敞閿�鍖� - (0xAB 0xCD 0xEF 0xAB) + 0x03 + strlen({"method":"destruction"} ) + {"method":"destruction"} - - 鏀寔鐢╢fmpeg鎺ㄧ函闊抽娴佹帴鍏ユ祦濯掍綋鏈嶅姟鍣紝鏀寔鐨勯煶棰戞牸寮忔湁(g711A銆丟711U銆丄AC銆丮P3) - 1銆佷互rtsp鍗忚鎺ㄦ湰鍦癮ac鏂囦欢鎺ュ叆娴佸獟浣� - ffmpeg -re -stream_loop -1 -i F:\music\xxx.aac -c:a aac -rtsp_transport tcp -f rtsp rtsp://190.15.240.11:554/music/aac1 - - 2銆佷互rtmp鍗忚鎺ㄦ湰鍦癮ac鏂囦欢鎺ュ叆娴佸獟浣� - ffmpeg -re -stream_loop -1 -i F:\music\xxx.aac -c:a aac -f flv rtmp://190.15.240.11:1935/music/aac2 - - 3銆佷互rtsp鍗忚鎺ㄦ湰鍦癿p3鏂囦欢鎺ュ叆娴佸獟浣� - ffmpeg -re -stream_loop -1 -i F:\music\xxx.mp3 -c:a mp3 -rtsp_transport tcp -f rtsp rtsp://190.15.240.11:554/music/aac3 - - 4銆佷互rtmp鍗忚鎺ㄦ湰鍦癿p3鏂囦欢鎺ュ叆娴佸獟浣� - ffmpeg -re -stream_loop -1 -i F:\music\xxx.mp3 -c:a mp3 -f flv rtmp://190.15.240.11:1935/music/aac4 - - 5銆佷互rtsp鍗忚鎺ㄦ湰鍦癿p4鏂囦欢涓殑绾煶棰戞祦鎺ュ叆鏈嶅姟鍣� - 1) 姣斿鎺ㄤ竴涓棰戞牸寮忎负h264锛岄煶棰戜负aac鐨刴p4鏂囦欢涓殑闊抽娴佽繘鍏ユ湇鍔″櫒锛岄偅涔堟湇鍔″櫒鎺ユ敹鍒扮殑闊抽娴佷负aac ,瑙嗛涓嶅仛鎺ㄩ�� - ffmpeg -re -stream_loop -1 -i F:\video\H264_AAC_2021-02-10_1080P.mp4 -vn -acodec copy -rtsp_transport tcp -f rtsp rtsp://44.35.33.39:554/music/aac5 - - 2) 姣斿鎺ㄤ竴涓棰戞牸寮忎负h264锛岄煶棰戜负g711A鐨刴p4鏂囦欢涓殑闊抽娴佽繘鍏ユ湇鍔″櫒锛岄偅涔堟湇鍔″櫒鎺ユ敹鍒扮殑闊抽娴佷负g711A ,瑙嗛涓嶅仛鎺ㄩ�� - ffmpeg -re -stream_loop -1 -i F:\video\H264-G711A-92017.mp4 -vn -acodec copy -rtsp_transport tcp -f rtsp rtsp://44.35.33.39:554/music/aac6 - - 3) 姣斿鎺ㄤ竴涓棰戞牸寮忎负h264锛岄煶棰戜负g711U鐨刴p4鏂囦欢涓殑闊抽娴佽繘鍏ユ湇鍔″櫒锛岄偅涔堟湇鍔″櫒鎺ユ敹鍒扮殑闊抽娴佷负g711U ,瑙嗛涓嶅仛鎺ㄩ�� - ffmpeg -re -stream_loop -1 -i F:\video\H264-G711U-56434.mp4 -vn -acodec copy -rtsp_transport tcp -f rtsp rtsp://44.35.33.39:554/music/aac7 - - 缃戠粶鍗忚濯掍綋 杈撳嚭锛� - 琚姩鎷夋祦杈撳嚭 - 1銆乺tsp (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - 2銆乺tmp (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) - 3銆丟B28181鐮佹祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - 4銆乭ttp-flv (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) - 5銆乭ttp-hls (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) - 6銆乭ttp-mp4 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) - 7銆亀ebsocket-flv (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) - 8銆亀ebrtc (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細G711A銆丟711U銆丱PUS) - 9銆佷氦閫氳繍杈撻儴jtt1078 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - - rtsp銆乺tmp銆乬b28181銆乯tt1078 涓诲姩鎺ㄦ祦杈撳嚭锛� - 1銆乺tsp鎺ㄦ祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - 2銆乺tmp鎺ㄦ祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC) - 3銆丟B28181鎺ㄦ祦 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - 4銆佷氦閫氳繍杈撻儴jtt1078 (鏀寔 瑙嗛锛欻264銆丠265 锛岄煶棰戯細AAC銆丟711A銆丟711U) - - -涓夈�佺畝鏄庝娇鐢ㄤ緥瀛� - 1锛� 棣栧厛瑕侀厤缃� ABLMediaServer.ini 閲岄潰鐨� 鏈満鐨処P鍦板潃 localipAddress 銆乺ecordPath 椤广�� - - 1 鏈満鐨処P鍦板潃锛屾渶濂介渶瑕侀厤缃噯纭紙濡傛灉涓嶉厤缃▼搴忎細鑷姩鑾峰彇涓�涓湴鍧�浠f浛锛屽鏋滄湰鏈烘湁澶氫釜鍦板潃鍙兘浼氫笉鍑嗙‘锛屽鏋滈厤缃垯浣跨敤閰嶇疆鐨処P鍦板潃锛岃繖鏍峰氨鍑嗙‘锛夛紝 - 鍥犱负璋冪敤 getMediaList 鑾峰彇鍙敤濯掍綋婧愮殑json涓紝浼氫娇鐢ㄥ埌鏈満鐨処P鍦板潃鏉ユ嫾鎺� rtsp銆乺tmp銆乭ttp-flv銆亀s-flv銆乭ls銆乭ttp-mp4 鐨勬挱鏀緐rl 銆� - 璋冪敤 getMediaList 杩斿洖鐨刯son涓蹭腑鏈夊涓媢rl瀛愰」锛� - "url": { - "rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001", - "rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001", - "http-flv": "http://10.0.0.239:8088/Media/Camera_00001.flv", - "ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001.flv", - "http-mp4": "http://10.0.0.239:5088/Media/Camera_00001.mp4", - "http-hls": "http://10.0.0.239:9088/Media/Camera_00001.m3u8" - } - - 鍏朵腑鐨� 10.0.0.239 灏辨槸鍙互浠� localipAddress 閰嶇疆椤� 绮剧‘鑾峰彇 銆� - - 2銆佸綍鍍忚矾寰勯厤缃� recordPath锛屽鏋滀笉闇�瑕佸綍鍍忥紝鍙互蹇界暐褰曞儚璺緞閰嶇疆 - # 褰曞儚鏂囦欢淇濆瓨璺緞,濡傛灉涓嶉厤缃綍鍍忔枃浠朵繚瀛樺湪搴旂敤绋嬪簭鎵�鍦ㄧ殑璺緞涓嬬殑record瀛愯矾寰勶紝濡傛灉閰嶇疆璺緞鍒欎繚瀛樺湪閰嶇疆鐨勮矾寰勭殑record閲岄潰 - # 娉ㄦ剰锛氬鏋滈渶瑕佸綍鍍忓瓨鍌紝瀛樺偍鐨勭‖鐩樺崈涓囦笉瑕佸垎鍖猴紝鏁翠釜纭洏浣滀负涓�涓尯锛屽洜涓烘湇鍔″櫒娌℃湁鎵ц涓や釜浠ヤ笂鐨勭洏绗︽搷浣溿�� - # 褰曞儚淇濆瓨璺緞閰嶇疆 windows骞冲彴鐨勮矾寰勯厤缃� 姣斿 D:\video ,Linux 骞冲彴閰嶇疆 /home/video - # 褰曞儚璺緞浣跨敤浜嗛粯璁よ矾寰勶紝灏变竴鐩翠娇鐢ㄩ粯璁よ矾寰勶紝濡傛灉浣跨敤浜嗛厤缃矾寰勫氨涓�鐩翠娇鐢ㄩ厤缃矾寰勶紝纭繚浣跨敤鐨勮矾寰勭殑纭洏绌洪棿涓烘渶澶х殑锛屽鏋滈渶瑕佹洿鎹㈣矾寰勶紝瑕佹妸鍘熸潵鐨勫綍鍍忚矾寰勭殑瑙嗛鍏ㄩ儴鍒犻櫎銆� - # 1璺珮娓�5M鐨勬憚鍍忓ご锛屽鏋滃綍鍍忕殑璇濓紝姣忓皬鏃朵骇鐢�2G澶у皬宸﹀彸鐨勫綍鍍忔枃浠躲�傚彲浠ユ牴鎹繖涓潵璁$畻闇�瑕佽喘涔板澶х殑纭洏锛屾帴鍏ュ灏戣矾鎽勫儚澶达紝闇�瑕佽缃綍鍍忔枃浠舵渶澶х殑淇濆瓨鏃堕棿 - - 2锛夈�� 濯掍綋杈撳嚭瑙勫垯锛� [network protocol]://[ip]:[port]/[app]/[stream][.extend] - - 銆愭敞锛氬鏋滆嚜宸变笉鎯虫嫾鎺ユ挱鏀緐rl 锛屽彲浠ヨ皟鐢╤ttp鍑芥暟 /index/api/getMediaList锛岃繑鍥炲彲鎾斁濯� - 浣撴簮涓湁鍚勭鎾斁鍗忚鐨剈rl, 璇﹁涓嬮潰鐨勫嚱鏁� /index/api/getMediaList 銆� - - 璇存槑锛� - [network protocol] 鏈� rtsp銆乺tmp銆乭ttp銆亀s - [ip] 灏辨槸鏈嶅姟鍣ㄦ墍鍦ㄧ殑IP鍦板潃 - [port] 鍚勪釜缃戠粶鍗忚鍒嗕韩鏃惰缃殑绔彛鍙凤紝璇﹁ ABLMediaServer.ini 鐨勯厤缃枃浠讹紝閲岄潰鏈夌浉搴旂殑缃戠粶鍗忚閰嶇疆绔彛 - [app] 鍚勭缃戠粶鍗忚鍙戦�佽繃鏉ヨ缃殑涓�绾у悕瀛� - [stream] 鍚勭缃戠粶鍗忚鍙戦�佽繃鏉ヨ缃殑浜岀骇鍚嶅瓧 - [.extend] 鎵╁睍鍚嶅瓧锛屼富瑕佷负涓轰簡璁块棶鏈嶅姟鍣ㄦ椂锛屾湇鍔″櫒闇�瑕佽瘑鍒綉缁滃崗璁渶瑕佸鎴风鍙戦�佽繃鏉ョ殑鎵╁睍鍚嶃�� - rtsp銆乺tmp 涓嶉渶瑕佹墿灞曞悕锛� - http-flv 銆亀s-flv 鎵╁睍鍚嶄负 .flv - hls 鏂瑰紡璁块棶鏃讹紝 鎵╁睍鍚嶄负 .m3u8 - http-mp4璁块棶鏃� 鎵╁睍鍚嶄负 .mp4 - - 姣斿鏈嶅姟鍣↖P涓� 190.15.240.11 锛宎pp 涓� Media ,stream 涓� Camera_00001 ,鍋囧畾绔彛閮芥槸榛樿 锛岄偅涔堝悇绉嶇綉缁滆闂畊rl濡備笅锛� - rtsp: - rtsp://190.15.240.11:554/Media/Camera_00001 - - rtmp: - rtmp://190.15.240.11:1935/Media/Camera_00001 - - http-flv: - http://190.15.240.11:8088/Media/Camera_00001.flv - - http-mp4: - http://190.15.240.11:5088/Media/Camera_00001.mp4 - - websocket-flv: - ws://190.15.240.11:6088/Media/Camera_00001.flv - - http-hls: - http://190.15.240.11:9088/Media/Camera_00001.m3u8 - - 3锛夈�佷娇鐢╢fmpeg寰� ABLMediaServer 鎺ㄩ�乺tsp 鐮佹祦 銆愬亣瀹� 婧愭憚鍍忔満rtsp RUL涓� rtsp://admin:abldyjh2020@192.168.1.120:554 , ABLMediaServer 鎵�鍦ㄦ湇鍔″櫒鍦板潃涓� 190.15.240.11 銆� - 銆愭帹閫乺tsp鏂瑰紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆� - - ffmpeg -rtsp_transport tcp -i rtsp://admin:abldyjh2020@192.168.1.120:554 -vcodec copy -acodec copy -f rtsp -rtsp_transport tcp rtsp://190.15.240.11:554/Media/Camera_00001 - - 濯掍綋杈撳嚭锛� - rtsp: 銆恟tsp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆� - rtsp://190.15.240.11:554/Media/Camera_00001 - - rtmp: 銆恟tmp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - rtmp://190.15.240.11:1935/Media/Camera_00001 - - http-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - http://190.15.240.11:8088/Media/Camera_00001.flv - - ws-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - ws://190.15.240.11:6088/Media/Camera_00001.flv - - http-hls: 銆恏ttp-hls杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - http://190.15.240.11:9088/Media/Camera_00001.m3u8 - - 4锛夈�佷娇鐢╢fmpeg寰� ABLMediaServer 鎺ㄩ�乺tmp 鐮佹祦 銆愬亣瀹� 婧愭憚鍍忔満rtsp RUL涓� rtsp://admin:abldyjh2020@192.168.1.120:554 , ABLMediaServer 鎵�鍦ㄦ湇鍔″櫒鍦板潃涓� 190.15.240.11 銆� - 銆愭帹閫乺tmp鏂瑰紡璇存槑锛氳棰戞敮鎸� H264 ,闊抽鏀寔AAC 銆� - - ffmpeg -rtsp_transport tcp -i rtsp://admin:abldyjh2020@192.168.1.120:554 -acodec copy -vcodec copy -f flv rtmp://190.15.240.11:1935/Media/Camera_00001 - - rtsp: 銆恟tsp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆� - rtsp://190.15.240.11:554/Media/Camera_00001 - - rtmp: 銆恟tmp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - rtmp://190.15.240.11:1935/Media/Camera_00001 - - http-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - http://190.15.240.11:8088/Media/Camera_00001.flv - - ws-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - ws://190.15.240.11:6088/Media/Camera_00001.flv - - http-hls: 銆恏ttp-hls杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - http://190.15.240.11:9088/Media/Camera_00001.m3u8 - - 5锛夈�佷娇鐢╢fmpeg寰� ABLMediaServer 鎺ㄩ�乺tsp鐨勬枃浠剁爜娴� 銆愬亣瀹氬獟浣撴枃浠朵负锛欶:\video\MP4鏈夊0闊砛H264_AAC_2021-02-10_1080P.mp4 , ABLMediaServer 鎵�鍦ㄦ湇鍔″櫒鍦板潃涓� 190.15.240.11 銆� - 銆愭帹閫乺tsp鏂瑰紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆� - - ffmpeg -re -stream_loop -1 -i F:\video\MP4鏈夊0闊砛H264_AAC_2021-02-10_1080P.mp4 -vcodec copy -acodec copy -rtsp_transport tcp -f rtsp rtsp://190.15.240.11:554/Media/Camera_00001 - - 濯掍綋杈撳嚭锛� - rtsp: 銆恟tsp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC銆丟711A銆丟711U 銆� - rtsp://190.15.240.11:554/Media/Camera_00001 - - rtmp: 銆恟tmp杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - rtmp://190.15.240.11:1935/Media/Camera_00001 - - http-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - http://190.15.240.11:8088/Media/Camera_00001.flv - - ws-flv: 銆恏ttp-flv杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - ws://190.15.240.11:6088/Media/Camera_00001.flv - - http-hls: 銆恏ttp-hls杈撳嚭鏍煎紡璇存槑锛氳棰戞敮鎸� H264銆丠265 ,闊抽鏀寔AAC 銆� - http://190.15.240.11:9088/Media/Camera_00001.m3u8 - - 銆愮壒鍒敞鏄庯細鍙互寰�10000 鐨剈dp绔彛鎺ㄩ�乀S鐮佹祦锛屾帹閫佹垚鍔熷悗锛屽彲浠ヨ皟鐢� http鍑芥暟getMediaList鏉ヨ幏鍙栨帴鍏ョ殑rtp鐮佹祦 銆� - ffmpeg.exe -re -stream_loop -1 -i F:\video\H264_20191021094432.mp4 -vcodec copy -f rtp_mpegts rtp://127.0.0.1:100000 - - - 6锛夈�佹祦濯掍綋杈撳嚭鎾斁楠岃瘉 - 濡傛灉瑙嗛鏄痳tsp鏂瑰紡锛屽彲浠ラ噰鐢╒LC杩涜鎾斁楠岃瘉銆� -銆�銆�銆�銆� 濡傛灉rtmp銆乭ttp-flv 鍗忚锛岃棰戜负h264 ,鍙互閲囩敤VLC鎾斁楠岃瘉銆佹垨鑰匓绔欑殑 flv.js 鎾斁鍣ㄩ獙璇� - 濡傛灉rtmp銆乭ttp-flv 鍗忚锛岃棰戜负h265 ,鍙互閲囩敤EasyPlayer.js 鎾斁鍣ㄩ獙璇侊紝銆愭敞锛歏LC 銆乫lv.js 涓嶆敮鎸丷tmp鐨凥265瑙嗛銆佷篃涓嶆敮鎸乭ttp-flv鐨�265瑙嗛 銆� - - 7锛夈�佺敵璇蜂唬鐞唕tsp銆乺tmp銆乫lv 鎷夋祦 銆佹湰鍦癿p4鏂囦欢 锛岀敵璇峰垹闄や唬鐞嗘媺娴� - 1) 鐢宠浠g悊rtsp銆乺tmp銆乫lv 鎷夋祦銆佹湰鍦癿p4鏂囦欢 - - URL: /index/api/addStreamProxy - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - vhost 姣斿 _defaultVhost_ - app 搴旂敤鍚� 姣斿 Media - stream 濯掍綋娴佸悕 姣斿 Camera_00001 銆�/app/stream 缁勫悎璧锋潵涓嶈兘閲嶅銆� - url 浠g悊鎷夋祦url 姣斿 rtsp://admin:abldyjh2020@192.168.1.120:554 鎴栬�� - rtmp://190.15.240.36:1935/Media/Camera_00001 鎴栬�� - http://190.15.240.36:8088/Media/Camera_00001.flv 鎴栬�� - d:\\video\\xxxx.mp4 (windows骞冲彴) - /home/video/xxxx.mp4 (Linux骞冲彴) - isRtspRecordURL 浠g悊鎷夋祦鐨剈rl鏄惁鏄痳tsp褰曞儚鍥炴斁鐨剈rl 榛樿0 锛�1 鏄�愬彲閫夊弬鏁般�戯紝濡傛灉鏄痳tsp褰曞儚鍥炴斁鐨剈rl锛屽彲浠ヨ繘琛屾帶鍒朵唬鐞嗘媺娴侊紝姣斿 鏆傚仠銆佺户缁�佹帶鍒跺�嶉�熸挱鏀撅紝鎷栧姩鎾斁绛夌瓑 锛屽弬鑰� - 鍑芥暟 /index/api/controlStreamProxy - optionsHeartbeat options蹇冭烦 options 鍛戒护浣滀负蹇冭烦鍖� 銆愬彲閫夊弬鏁般�� 浠g悊rtsp鎷夋祦鎴愬悗锛屾槸鍚﹀紑鍚彂閫� 0 涓嶅紑鍚紝 1 寮�鍚� 锛岄粯璁や笉寮�鍚紝濡傛灉浠� ZLMediaKit 鎷夊彇rtsp娴侊紝寤鸿璁剧疆涓� 1 - enable_mp4 鏄惁褰曞儚 1 褰曞儚锛�0 涓嶅綍鍍� 銆愬彲閫夊弬鏁般�� - enable_hls 鏄惁hls鍒囩墖 1 杩涜hls 鍒囩墖 锛�0 涓嶅垏鐗� 銆愬彲閫夊弬鏁般�� - convertOutWidth 杞爜瀹� 杞爜杈撳嚭瀹� 濡傛灉鎸囧畾瀹姐�侀珮 銆愬彲閫夊弬鏁般�慬1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 灏辫鏄� H265 杩涜杞爜涓� H264 - convertOutHeight 杞爜楂� 杞爜杈撳嚭楂� 濡傛灉鎸囧畾瀹姐�侀珮 銆愬彲閫夊弬鏁般�慬1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 灏辫鏄� H265 杩涜杞爜涓� H264 - H264DecodeEncode_enable H264鏄惁瑙g爜 H264鍒嗚鲸鐜囬珮鍐嶇紪鐮侀檷鍒嗚鲸鐜囷紝銆愬彲閫夊弬鏁般�戞湁鏃跺�欓渶瑕丠264瑙嗛杩涜鍏堣В鐮佸啀閲嶆柊缂栫爜闄嶄綆鍒嗚鲸鐜囷紝鍙互璁剧疆 H264DecodeEncode_enable 涓� 1 锛岄檷涓嬫潵鐨勫垎杈ㄧ巼涓� convertOutWidth 銆� convertOutHeight - disableVideo 鏄惁杩囨护鎺夎棰� 0 涓嶈繃婊� 锛�1 杩囨护瑙嗛 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 - disableAudio 鏄惁杩囨护鎺夐煶棰� 0 涓嶈繃婊� 锛�1 杩囨护闊抽 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽 - - http GET 鏂瑰紡 - 1 璇锋眰rtsp鎷夋祦鏍蜂緥 - http://190.15.240.11:7088/index/api/addStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001&url=rtsp://admin:abldyjh2020@192.168.1.120:554&enable_mp4=0 - - http POST 鏂瑰紡 - 1 璇锋眰rtsp鎷夋祦鏍蜂緥 - http璇锋眰 url 鏍蜂緥 - http://190.15.240.11:7088/index/api/addStreamProxy - body 鍙傛暟 , json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","url":"rtsp://admin:abldyjh2020@192.168.1.120:554","enable_mp4":0} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� - "key": 93 # 鎴愬姛鏃惰繑鍥炲ぇ浜�0鐨勫�硷紝涓轰唬鐞嗘媺娴佺殑Key ,鍒犻櫎浠g悊鎷夋祦鏃堕渶瑕佺敤鐨� - } - - 2) 鎺у埗浠g悊鎷夋祦锛屾瘮濡� 鏆傚仠銆佺户缁�佹帶鍒跺�嶉�熸挱鏀撅紝鎷栧姩鎾斁绛夌瓑 - URL: /index/api/controlStreamProxy - - 鍙傛暟锛� - secret 鏈嶅姟鍣ㄥ瘑鐮� 锛屾瘮濡� 035c73f7-bb6b-4889-a715-d9eb2d1925cc - key 姣斿 93 锛岃皟鐢� addStreamProxy 杩斿洖鐨� key 鐨勫�� - command 姣斿 pause銆乺esume銆乻eek銆乻cale 瀵逛簬瀵瑰簲鎰忔�濓細鏆傚仠銆佺户缁�佹嫋鍔ㄦ挱鏀俱�佸�嶉�熸挱鏀� - value (瀛楃涓�) 姣斿 1銆�2銆�4銆�8銆�16(鍊嶉�熸挱鏀�) 锛宯pt鏂瑰紡锛�360銆�1800銆�3600锛堟嫋鍔ㄦ挱鏀撅級锛宑lock鏂瑰紡锛歝lock=20230625T113000Z-19700101T000001Z锛堟嫋鍔ㄥ埌锛�2023-06-25 11:30:00鎵ц鎾斁锛� - value 涓哄彲閫夊弬鏁帮紝褰� command 涓� pause,resume 鏃讹紝value 涓嶇敤 锛屽綋 command 涓簊eek,sacale - 鏄紝闇�瑕佸~鍐檝alue鐨勫�� - 鍛戒护銆佸�兼牱渚嬪垪琛� - command value 娉ㄩ噴 - pause 涓嶉渶瑕� 鏆傚仠鍥炴斁 - resume 涓嶉渶瑕� 缁х画鍥炴斁 - scale 2 2鍊嶉�熷洖鏀� - seek 360 鎷栨嫿浠庡紑濮嬬偣璁$畻璧峰埌360绉掑鍐嶅洖鏀� 銆恘tp鏂瑰紡鎷栨嫿 锛屼唬琛� 鍗庝负 VCN\3800 銆� - seek clock=20230625T113000Z-19700101T000001Z 鎷栨嫿鍒�20230625T113000Z澶勫啀鍥炴斁 銆恈lock鏂瑰紡鎷栨嫿 锛屼唬琛� 娴峰悍NVR 銆� - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=pause 鏆傚仠 - http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=resume 缁х画 - http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=scale&value=2 2鍊嶉�熷洖鏀� - http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=seek&value=360 鎷栨嫿鍒�360绉掑缁х画鍥炴斁 - http://190.15.240.11:7088/index/api/controlStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93&command=seek&value=clock=20230625T113000Z-19700101T000001Z - - http POST 鏂瑰紡 - http URL : - http://190.15.240.11:7088/index/api/controlStreamProxy - - body 鍙傛暟 Json鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"pause"} - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"resume"} - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"sacale","value":"2"} - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"seek","value":"360"} - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93,"command":"seek","value":"clock=20230625T113000Z-19700101T000001Z"} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� - } - - 銆愭敞锛氬彂閫乭ttp璇锋眰 鍙互浣跨敤curl銆乸ostman銆佹垨鑰呭叾浠栨爣鍑嗙殑http宸ュ叿 銆� - - - 3) 鐢宠鍒犻櫎浠g悊rtsp銆乺tmp銆乫lv 鎷夋祦 - URL: /index/api/delStreamProxy - - 鍙傛暟锛� - secret 鏈嶅姟鍣ㄥ瘑鐮� 锛屾瘮濡� 035c73f7-bb6b-4889-a715-d9eb2d1925cc - key 姣斿 93 锛岃皟鐢� addStreamProxy 杩斿洖鐨� key 鐨勫�� - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/delStreamProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93 - - http POST 鏂瑰紡 - http URL : - http://190.15.240.11:7088/index/api/delStreamProxy - - body 鍙傛暟 Json鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� - } - - 銆愭敞锛氬彂閫乭ttp璇锋眰 鍙互浣跨敤curl銆乸ostman銆佹垨鑰呭叾浠栨爣鍑嗙殑http宸ュ叿 銆� - - - - 8锛夈�佺敵璇蜂唬鐞唕tsp銆乺tmp銆佹帹娴� 銆佺敵璇峰垹闄や唬鐞嗘媺娴� - 1) 鐢宠浠g悊rtsp銆乺tmp 鎺ㄦ祦锛堟敞鎰忥細涓嶆槸鍥芥爣GB28181鎺ㄦ祦锛� - - URL: /index/api/addPushProxy - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 锛� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - vhost 姣斿 _defaultVhost_ - app 搴旂敤鍚� 姣斿 Media - stream 濯掍綋娴佸悕 姣斿 Camera_00001 - url 浠g悊鎺ㄦ祦url 姣斿 rtsp://190.15.240.36:554/Media/Camera_00001 鎴栬�� rtmp://190.15.240.36:1935/Media/Camera_00001 - disableVideo 鏄惁杩囨护鎺夎棰� 0 涓嶈繃婊� 锛�1 杩囨护瑙嗛 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 - disableAudio 鏄惁杩囨护鎺夐煶棰� 0 涓嶈繃婊� 锛�1 杩囨护闊抽 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽 - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/addPushProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001&url=rtsp://190.15.240.36:554/Media/Camera_00001 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/addPushProxy - - http Body 鍙傛暟 (json鏍煎紡) - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","url":"rtsp://190.15.240.36:554/Media/Camera_00001"} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� - "key": 93 # 鎴愬姛鏃惰繑鍥炲ぇ浜�0鐨勫�硷紝涓轰唬鐞嗘帹娴佺殑Key ,鍒犻櫎浠g悊鎺ㄦ祦鏃堕渶瑕佺敤鐨� - } - - 2) 鐢宠鍒犻櫎浠g悊rtsp銆乺tmp 鎺ㄦ祦 - URL: /index/api/delPushProxy - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 锛� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - key 涓婚敭ID 姣斿 93 锛岃皟鐢� /index/api/addPushProxy 杩斿洖鐨� key 鐨勫�� - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/delPushProxy?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/delPushProxy - - http Body json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� - } - - 9锛夈�佸垱寤篏B28181\Jtt1078鎺ユ敹绔彛銆佸垹闄B28181\Jtt1078鎺ユ敹绔彛銆佸浗鏍囨殏鍋溿�佺户缁� - - 1 鍒涘缓GB28181\Jtt1078鎺ユ敹绔彛 - - URL: /index/api/openRtpServer - 鍔熻兘锛� - 鍒涘缓GB28181\Jtt1078鎺ユ敹绔彛锛屽鏋滆绔彛鎺ユ敹瓒呮椂锛屼細鑷姩鍥炴敹锛屼笉鐢ㄨ皟鐢� /index/api/closeRtpServer - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - vhost 姣斿 _defaultVhost_ - app 搴旂敤鍚� 姣斿 gb28181 銆乺tp 绛夌瓑 (鎺ュ叆) - stream_id 濯掍綋娴佸悕 姣斿 44030012343220234234 锛堟渶濂芥槸鍥芥爣缂栧彿锛�( 鎺ュ叆 ) - payload PS璐熻浇鍊� 鍥芥爣SDP閲岄潰PS璐熻浇鍊笺��锛屾瘮濡� 96,98 ,108 ,涓�瀹氳浠庡浗鏍嘢DP閲岄潰鑾峰彇 - port 绔彛鍙� 0 锛岀敱鏈嶅姟鍣ㄨ嚜鍔ㄥ垎閰嶏紝鍒殑鍊� 姣斿 26324 涓烘寚瀹氱鍙� - enable_tcp 鏄惁涓簍cp 0 涓� udp , 1 涓簍cp琚姩鏂瑰紡 锛�2 涓簍cp涓诲姩杩炴帴鏂瑰紡 - dst_url 鐩爣IP 鐩爣IP鍦板潃 銆愬彲閫夊弬鏁� 锛屽綋 enable_tcp 涓� 2 鏃跺繀椤诲~鍐� 銆� - dst_port 鐩爣绔彛 鐩爣绔彛 銆愬彲閫夊弬鏁� 锛屽綋 enable_tcp 涓� 2 鏃跺繀椤诲~鍐欍�� - - enable_mp4 鏄惁褰曞儚 1 褰曞儚锛�0 涓嶅綍鍍� 銆愬彲閫夊弬鏁般�� - enable_hls 鏄惁hls鍒囩墖 1 杩涜hls 鍒囩墖 锛�0 涓嶅垏鐗� 銆愬彲閫夊弬鏁般�� - convertOutWidth 杞爜瀹� 杞爜杈撳嚭瀹� 濡傛灉鎸囧畾瀹姐�侀珮 銆愬彲閫夊弬鏁般�慬1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 灏辫鏄� H265 杩涜杞爜涓� H264 - convertOutHeight 杞爜楂� 杞爜杈撳嚭楂� 濡傛灉鎸囧畾瀹姐�侀珮 銆愬彲閫夊弬鏁般�慬1920 x 1080, 1280 x 720 ,960 x 640 ,800 x 480 ,720 x 576 , 720 x 480 ,640 x 480 ,352 x 288 ] 灏辫鏄� H265 杩涜杞爜涓� H264 - H264DecodeEncode_enable H264鏄惁瑙g爜 H264鍒嗚鲸鐜囬珮鍐嶇紪鐮侀檷鍒嗚鲸鐜囷紝銆愬彲閫夊弬鏁般�戞湁鏃跺�欓渶瑕丠264瑙嗛杩涜鍏堣В鐮佸啀閲嶆柊缂栫爜闄嶄綆鍒嗚鲸鐜囷紝鍙互璁剧疆 H264DecodeEncode_enable 涓� 1 锛岄檷涓嬫潵鐨勫垎杈ㄧ巼涓� convertOutWidth 銆� convertOutHeight - RtpPayloadDataType rtp鎵撳寘鏁版嵁鏍煎紡 rtp鎵撳寘鏁版嵁鏍煎紡 銆愬彲閫夊弬鏁� 锛岄粯璁� 1 銆� [1 PS 鍥芥爣gb28181 ]銆乕 2 ES 瑙嗛鏀寔 H246\H265锛岄煶棰戝彧鏀寔G711A銆丟711U ]銆乕3 XHB (涓�瀹跺叕鍙哥殑鎵撳寘鏍煎紡) 鍙敮鎸佽棰戯紝闊抽涓嶈兘鍔犲叆鎵撳寘 ] [ 4 銆丣t1078锛�2016鐗堟湰锛夌爜娴佹帴鍏� ] - disableVideo 鏄惁杩囨护鎺夎棰� 0 涓嶈繃婊� 锛�1 杩囨护瑙嗛 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 - disableAudio 鏄惁杩囨护鎺夐煶棰� 0 涓嶈繃婊� 锛�1 杩囨护闊抽 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽 - jtt1078_version 鎸囧畾1078鐗堟湰鍙� 2013銆�2016銆�2019 銆愬彲閫夊弬鏁般�� 2013 鎸囧畾涓� 2013鐗堟湰 銆�2016 鎸囧畾涓� 2016鐗堟湰銆� 2019 鎸囧畾涓� 2019 鐗堟湰 - - send_app 搴旂敤鍚� 姣斿 gb28181 銆乺tp 绛夌瓑 銆愬彲閫夊弬鏁般�� 鐢ㄤ簬鎶婃湰鏈嶅姟鍣ㄧ殑鐮佹祦锛坰end_app/send_stream_id锛夊洖澶嶇粰鍙戦�佺 - send_stream_id 濯掍綋娴佸悕 姣斿 44030012343220234234 銆愬彲閫夊弬鏁般�� 鐢ㄤ簬鎶婃湰鏈嶅姟鍣ㄧ殑鐮佹祦锛坰end_app/send_stream_id锛夊洖澶嶇粰鍙戦�佺 - send_disableVideo 鏄惁杩囨护鎺夎棰� 0 涓嶈繃婊� 锛�1 杩囨护瑙嗛 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 - send_disableAudio 鏄惁杩囨护鎺夐煶棰� 0 涓嶈繃婊� 锛�1 杩囨护闊抽 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽 - detectSendAppStream 鏄惁妫�娴嬪彂閫佹祦ID 0 涓嶆娴� 锛�1 妫�娴� 銆愬彲閫夊弬鏁般�� 榛樿 1 鍦ㄩ渶瑕佸洖浼犵爜娴佹椂锛屼簨鍏堟娴� send_app銆乻end_stream_id 鏄惁瀛樺湪銆�0 涓嶆娴嬶紝鍏堟墦寮�鎺ユ敹鎴愬姛鍚庯紝绋嶅悗鍐嶆妸send_app銆乻end_stream_id鎺ュ叆娴佸獟浣擄紝openRtpServer鍑芥暟鑷姩鍥炲缁欎笅绾ф祦濯掍綋銆� - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/openRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=gb28181&stream_id=44030012343220234234&payload=96&port=0&enable_tcp=0&enable_mp4=0 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/openRtpServer - - http 鍙傛暟鍊� - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream_id":"Camera_00001","payload":96,"port":0,"enable_tcp":0,"enable_mp4":0} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "port": 8356, # 绔彛鍙� - "memo": "success", # success 涓烘垚鍔� - "key": 93 # 鎴愬姛鏃惰繑鍥炲ぇ浜�0鐨勫�硷紝GB28181鎺ユ敹瀹炰緥key ,鍏抽棴鏃堕渶瑕� - } - - 2 鍒犻櫎 GB28181\Jtt1078鎺ユ敹绔彛 - URL: /index/api/closeRtpServer - 鍔熻兘锛� - 鍒犻櫎GB28181\Jtt1078鎺ユ敹绔彛 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - key 涓婚敭鍊糏D 姣斿 93 锛� 璋冪敤 /index/api/openRtpServer 杩斿洖鐨� key 鐨勫�� - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/closeRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/closeRtpServer - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� - } - - 3 鏆傚仠 GB28181\Jtt1078鎺ユ敹绔彛锛屽彧鏄笉妫�娴嬫帴鏀剁鍙f槸鍚︽湁鐮佹祦杩涘叆銆� - URL: /index/api/pauseRtpServer - 鍔熻兘锛� - 鏆傚仠GB28181\Jtt1078鎺ユ敹 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - key 涓婚敭鍊糏D 姣斿 93 锛� 璋冪敤 /index/api/openRtpServer 杩斿洖鐨� key 鐨勫�� - - http GET 鏂瑰紡 - http://44.35.33.249:7088/index/api/pauseRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=588 - - http POST 鏂瑰紡 - http URL - http://44.35.33.249:7088/index/api/pauseRtpServer - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":588} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� - } - - 4 缁х画 GB28181\Jtt1078鎺ユ敹绔彛锛屽紑鍚娴嬬鍙f槸鍚︽湁鐮佹祦鍒拌揪锛屽鏋滄椂闀垮埌杈炬渶澶ц秴鏃舵病鏈夌爜娴佽繘鍏ヤ細绔嬪嵆鍒犻櫎鎺ユ敹绔彛 - URL: /index/api/resumeRtpServer - 鍔熻兘锛� - 缁х画GB28181\Jtt1078鎺ユ敹 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - key 涓婚敭鍊糏D 姣斿 93 锛� 璋冪敤 /index/api/openRtpServer 杩斿洖鐨� key 鐨勫�� - - http GET 鏂瑰紡 - http://44.35.33.249:7088/index/api/resumeRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=588 - - http POST 鏂瑰紡 - http URL - http://44.35.33.249:7088/index/api/resumeRtpServer - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":588} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� - } - - 10锛夈�佸垱寤篏B28181\Jtt1078 鍙戦�佺鍙c�佸垹闄B28181\Jtt1078鍙戦�佺鍙� - - 1 鍒涘缓GB28181\Jtt1078鍙戦�佺鍙� - - URL: /index/api/startSendRtp - 鍔熻兘锛� - 鍒涘缓GB28181\Jtt1078鍙戦�佺鍙o紝濡傛灉璇ュ彂閫佺绔彛娌℃湁鏁版嵁鍙戦�侊紝浼氳嚜鍔ㄥ洖鏀讹紝涓嶇敤璋冪敤 /index/api/stopSendRtp - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - vhost 姣斿 _defaultVhost_ - app 搴旂敤鍚� 姣斿 gb28181 銆乺tp 绛夌瓑 (鍙戦�佸嚭鍘�) - stream 濯掍綋娴佸悕 姣斿 44030012343220234234 锛堝彂閫佸嚭鍘伙級 - payload PS璐熻浇鍊� 鍥芥爣SDP閲岄潰PS璐熻浇鍊笺��锛屾瘮濡� 96,98 ,108 ,rtp鎵撳寘鏃堕渶瑕� - ssrc 鍚屾婧� ssrc - src_port 鍙戦�佺缁戝畾鐨勭鍙e彿 鎸囧畾鏈嶅姟鍣ㄥ湪鍙戦�佸浗鏍囨祦鏃剁粦瀹氱殑绔彛鍙凤紝濡傛灉涓� 0 锛岀敱鏈嶅姟鍣ㄨ嚜鍔ㄥ垎閰嶏紝鍒殑鍊� 姣斿 26324 涓烘寚瀹氱鍙� - dst_url 鐩爣IP 鐩爣IP鍦板潃 - dst_port 鐩爣绔彛 鐩爣绔彛 - is_udp 鏄惁璁剧疆udp 0 TCP涓诲姩鏂瑰紡锛�1 udp 鏂瑰紡 锛�2 涓� TCP 琚姩鏂瑰紡 - RtpPayloadDataType rtp鎵撳寘鏁版嵁鏍煎紡 銆愬彲閫夊弬鏁� 锛岄粯璁� 1 銆� [ 1 PS 鍥芥爣gb28181 ]銆乕 2 ES 瑙嗛鏀寔 H246\H265锛岄煶棰戝彧鏀寔G711A銆丟711U ]銆乕3 XHB (涓�瀹跺叕鍙哥殑鎵撳寘鏍煎紡) 鍙敮鎸佽棰戯紝闊抽涓嶈兘鍔犲叆鎵撳寘 ] [ 4 銆丣t1078锛�2016鐗堟湰锛夌爜娴佸彂閫� ] - disableVideo 鏄惁杩囨护鎺夎棰� 0 涓嶈繃婊� 锛�1 杩囨护瑙嗛 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 - disableAudio 鏄惁杩囨护鎺夐煶棰� 0 涓嶈繃婊� 锛�1 杩囨护闊抽 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽 - jtt1078_version 鎸囧畾1078鐗堟湰鍙� 2013銆�2016銆�2019 銆愬彲閫夊弬鏁般�� 2013 鎸囧畾涓� 2013鐗堟湰 銆�2016 鎸囧畾涓� 2016鐗堟湰銆� 2019 鎸囧畾涓� 2019 鐗堟湰 - - recv_app 搴旂敤鍚� 姣斿 gb28181 銆乺tp 绛夌瓑 銆愬彲閫夊弬鏁般�� 鎺ュ叆杩涙潵 閫氳繃鍦ㄥ彂閫佺殑杩炴帴涓帴鏀惰繘鏉ョ殑鐮佹祦 - recv_stream 濯掍綋娴佸悕 姣斿 44030012343220234234 銆愬彲閫夊弬鏁般�� 鎺ュ叆杩涙潵 閫氳繃鍦ㄥ彂閫佺殑杩炴帴涓帴鏀惰繘鏉ョ殑鐮佹祦 - recv_disableVideo 鏄惁杩囨护鎺夎棰� 0 涓嶈繃婊� 锛�1 杩囨护瑙嗛 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊よ棰戯紝鍥藉鐢电綉鍗忚涓渶瑕佹憚鍍忓ご鍜屾憚鍍忓ご鐩存帴闇�瑕佸鎺ワ紝鎽勫儚澶存帹涓婃潵鐨勫獟浣撴祦涓繃婊ゆ帀瑙嗛锛坉isableVideo=1锛夊啀鍙戠粰瀵规柟鎵嶈兘瀹屾垚瀵硅 - recv_disableAudio 鏄惁杩囨护鎺夐煶棰� 0 涓嶈繃婊� 锛�1 杩囨护闊抽 銆愬彲閫夊弬鏁般�� 榛樿 0 涓嶈繃婊ら煶棰戯紝鏈夋椂鍊欎笉闇�瑕侀煶棰戙�佹垨鑰呯敱浜庢晱鎰熷師鍥犵姝㈡敹鍚煶棰戯紝鍙互杩囨护鎺夐煶棰戞祦鎺ュ叆娴佸獟浣撴湇鍔″櫒锛屽彧闇�瑕佽缃� disableAudio = 1鍗冲彲杩囨护闊抽 - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/startSendRtp?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=gb28181&stream=44030012343220234234&payload=96&ssrc=5224&src_port=26324&dst_url=190.15.240.11&dst_port=9824&is_udp=1 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/startSendRtp - - http 鍙傛暟鍊� - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","payload":96,"ssrc":2432,"src_port":26324,"dst_url":"190.15.240.11","dst_port":9824,"is_udp":1} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "port": 8356, # 绔彛鍙� - "memo": "success", # success 涓烘垚鍔� - "key": 93 # 鎴愬姛鏃惰繑鍥炲ぇ浜�0鐨勫�硷紝GB28181鍙戦�佺爜娴佸疄渚媖ey ,鍏抽棴鏃堕渶瑕� - } - - 2 鍒犻櫎 GB28181\Jtt1078鍙戦�佺鍙� - URL: /index/api/stopSendRtp - 鍔熻兘锛� - 鍒犻櫎GB28181\Jtt1078鍙戦�佺鍙� - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - key 涓婚敭鍊糏D 姣斿 93 锛� 璋冪敤 /index/api/startSendRtp 杩斿洖鐨� key 鐨勫�� - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/stopSendRtp?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/stopSendRtp - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� - } - - 11锛夈�佽幏鍙栨祦濯掍綋鏈嶅姟鍣ㄦ墍鏈夊彲鐢ㄧ殑濯掍綋婧� - URL: /index/api/getMediaList - - 鍔熻兘锛� - 鑾峰彇娴佸獟浣撴湇鍔″櫒鎵�鏈夊獟浣撴簮 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - app 搴旂敤鍚� 姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛� 銆愬彲閫夊弬鏁般�� - stream 濯掍綋娴佸悕 姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑 銆愬彲閫夊弬鏁般�� - - 鍙傛暟濉啓鏍蜂緥璇存槑锛� - 鏍蜂緥1锛坅pp銆乻tream 閮戒笉濉啓锛� - secret 035c73f7-bb6b-4889-a715-d9eb2d1925cc - - 杩斿洖鎵�鏈夊湪绾跨殑濯掍綋婧� - - 鏍蜂緥2 锛堝彧濉啓 app 锛� - secret 035c73f7-bb6b-4889-a715-d9eb2d1925cc - app rtp - 杩斿洖 app 绛変簬 rtp 鐨勬墍鏈夊獟浣撴簮 - - 鏍蜂緥3 锛堝~鍐� app = rtp , stream = 44303403343034243200234锛� - secret 035c73f7-bb6b-4889-a715-d9eb2d1925cc - app rtp - stream 44303403343034243200234 - 杩斿洖 app 绛変簬 rtp銆佸苟涓� stream 绛変簬 44303403343034243200234 鐨勬墍鏈夊獟浣撴簮 - - 鏍蜂緥4 锛堝~鍐� stream = 44303403343034243200234锛� - secret 035c73f7-bb6b-4889-a715-d9eb2d1925cc - stream 44303403343034243200234 - 杩斿洖 stream 绛変簬 44303403343034243200234 鐨勬墍鏈夊獟浣撴簮 - - http GET 鏂瑰紡 - http://127.0.0.1:7088/index/api/getMediaList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/getMediaList - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"} - - 杩斿洖Body锛� - { - "code": 0, - "memo": "success", - "mediaList": [ - { - "key": 34, - "app": "Media", - "stream": "Camera_00001", - "sim": "123456789123", 銆�1078鐮佹祦鎺ュ叆杩欎釜瀛楁鐨勫�间笉浼氫负绌猴紝浠h〃璁惧鐨剆im鍗$紪鐮� 銆� - "status": false , 銆� false 灏氭湭褰曞儚锛宼rue 姝e湪褰曞儚 銆� - "enable_hls": false, 銆� false 灏氭湭鍚敤锛宼rue 鍚敤hls鍥炴斁 銆� - "transcodingStatus": false, 銆� false 灏氭湭杞爜锛宼rue 姝e湪杞爜 銆� - "sourceURL": "rtsp://10.0.0.239:554/Media/Camera_00001", - "sourceType": 23, - "readerCount": 0, - "videoCodec": "H264", - "width": 1920, - "height": 1080, - "networkType": 24, - "audioCodec": "AAC", - "audioChannels": 1, - "audioSampleRate": 16000, - "url": { - "rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001", - "rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001", - "http-flv": "http://10.0.0.239:8088/Media/Camera_00001.flv", - "ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001.flv", - "http-mp4": "http://10.0.0.239:5088/Media/Camera_00001.mp4", - "http-hls": "http://10.0.0.239:9088/Media/Camera_00001.m3u8", - "webrtc":"http://10.0.0.239:8892/webrtc-streamer.html?video=/Media/Camera_00001" - } - } - ] - } - - 銆愭敞閲婏細鍙互鏍规嵁 "networkType": 24, 杩欎釜瀛楁鍊煎尯鍒� 濯掍綋鎺ュ叆鐨勭被鍨� 锛屽叿浣撹瑙佺綉缁滅被鍨嬬殑瀵圭収琛� 銆� - - 12) 鍒犻櫎 鏌愪竴涓獟浣撴簮 - URL: /index/api/delMediaStream - 鍔熻兘锛� - 鏌愪竴涓獟浣撴簮锛岃繖濯掍綋婧愶紝鍙互鏄痳tp鎺ㄦ祦銆乺tmp鎺ㄦ祦锛屽悇绉嶆柟寮忎唬鐞嗘媺娴佹帴鍏ョ殑锛屽浗鏍囨帴鍏� 绛夌瓑銆� - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - key 涓婚敭鍊糏D 姣斿 93 锛� 璋冪敤 /index/api/getMediaList 杩斿洖鐨� key 鐨勫�� - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/delMediaStream?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/delMediaStream - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� - } - - 13锛夈�佽幏鍙栨祦濯掍綋鏈嶅姟鍣ㄦ墍鏈夊線澶栭儴杈撳嚭鐮佹祦鍒楄〃锛屽寘鎷閮ㄨ姹傜殑rtsp銆乺tmp銆乭ttp-flv銆亀s-flv銆乭ls 鍒楄〃 - 涔熷寘鎷湇鍔″櫒浠g悊rtsp鎺ㄦ祦銆乺tmp鎺ㄦ祦鍒楄〃 - 涔熷寘鎷湇鍔″櫒浠ュ浗鏍囨柟寮忓線涓婄骇鎺╮tp娴佸垪琛� - 銆愬繀瑕佹椂鍙互璋冪敤 /index/api/delOutList 鎺ュ彛鍒犻櫎鏌愪竴涓垪琛ㄥ璞★紝姣斿鍒犻櫎鏌愪竴璺浗鏍囨帹娴併�佸垹闄ゆ煇涓�璺痳tsp鎺ㄦ祦銆� 鍒犻櫎鏌愪竴璺痳tmp鎺ㄦ祦銆� - URL: /index/api/getOutList - - 鍔熻兘锛� - 鑾峰彇娴佸獟浣撴湇鍔″櫒鎵�鏈夎緭鍑烘祦鍒楄〃 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - - http GET 鏂瑰紡 - http://44.35.33.239:7088/index/api/getOutList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc - - http POST 鏂瑰紡 - http URL - http://44.35.33.239:7088/index/api/getOutList - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"} - - 杩斿洖Body锛� - { - "code": 0, - "memo": "success", - "outList": [ - { - "key": 103, 銆愯姹傚鎴风鐨勬爣璇咺D 锛屽彲浠ヨ皟鐢� /index/api/delOutList 鍒犻櫎 璇ヨ姹傘�� - "app": "Media", - "stream": "Camera_00001", - "sourceURL": "rtsp://44.35.33.239:554/Media/Camera_00001", 銆愯〃绀哄鐣屼互rtsp鏂瑰紡鍚戞湇鍔″櫒璇锋眰鐮佹祦銆� - "videoCodec": "H264", - "audioCodec": "AAC", - "audioChannels": 1, - "audioSampleRate": 16000, - "networkType": 24, 銆愮綉缁滅被鍨嬩负24 锛屾爣璇嗕负rtsp 鏂瑰紡銆� - "dst_url": "44.35.33.39", 銆� 璇锋眰鐮佹祦瀹㈡埛绔疘P 銆� - "dst_port": 43801 銆� 璇锋眰鐮佹祦瀹㈡埛绔鍙� 銆� - }, - { - "key": 85, 銆愯姹傚鎴风鐨勬爣璇咺D 锛屽彲浠ヨ皟鐢� /index/api/delOutList 鍒犻櫎 璇ヨ姹傘�� - "app": "Media", - "stream": "Camera_00001", - "sourceURL": "http://localhost:8088/Media/Camera_00001.flv",銆愯〃绀哄鐣屼互 http-flv 鏂瑰紡鍚戞湇鍔″櫒璇锋眰鐮佹祦銆� - "videoCodec": "H264", - "audioCodec": "AAC", - "audioChannels": 1, - "audioSampleRate": 16000, - "networkType": 25, 銆愮綉缁滅被鍨嬩负25 锛屾爣璇嗕负 http-flv 鏂瑰紡銆� - "dst_url": "44.35.33.39", 銆� 璇锋眰鐮佹祦瀹㈡埛绔疘P 銆� - "dst_port": 43806 銆� 璇锋眰鐮佹祦瀹㈡埛绔鍙� 銆� - } - ] - } - - 銆愭敞閲婏細鍙互鏍规嵁 "networkType": 24, 杩欎釜瀛楁鍊煎尯鍒� 濯掍綋杈撳嚭鐨勭被鍨� 锛屽叿浣撹瑙佺綉缁滅被鍨嬬殑瀵圭収琛� 銆� - - 14) 鍒犻櫎 鏌愪竴涓湇鍔″櫒鎵�鏈夊線澶栭儴杈撳嚭鐮佹祦鍒楄〃 - URL: /index/api/delOutList - 鍔熻兘锛� - 鍒犻櫎鏌愪竴涓祦濯掍綋鏈嶅姟鍣ㄦ墍鏈夊線澶栭儴杈撳嚭鐮佹祦鍒楄〃锛屽寘鎷閮ㄨ姹傜殑rtsp銆乺tmp銆乭ttp-flv銆亀s-flv銆乭ls 鐐规挱 銆傚浗鏍囨帹娴併�乺tsp鎺ㄦ祦銆乺tmp 鎺ㄦ祦 绛夌瓑 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - key 涓婚敭鍊糏D 姣斿 93 锛� 璋冪敤 /index/api/getOutList 杩斿洖鐨� key 鐨勫�� - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/delOutList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=93 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/delOutList - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","key":93} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� ,濡傛灉澶辫触鏄叾浠栧�� - } - - 15锛夋牴鎹潯浠剁粍鍚堬紝鍒犻櫎浠绘剰涓�涓垨涓�缁勬垨鑰呭叏閮ㄥ獟浣撹緭鍏ュ垪琛� - URL: /index/api/close_streams - - 鍔熻兘 - 鍒犻櫎浠绘剰涓�涓垨涓�缁勬垨鑰呭叏閮ㄥ獟浣撹緭鍏ュ垪琛� - - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - vhost 姣斿 _defaultVhost_ 銆愬彲閫夊弬鏁般�� - app 搴旂敤鍚� 姣斿 gb28181 銆乺tp 绛夌瓑 銆愬彲閫夊弬鏁般�� - stream 濯掍綋娴佸悕 姣斿 Camera_00001銆乨safdsafassdafadsfas銆佺瓑绛� 銆愬彲閫夊弬鏁般�� - force 鏄惁寮哄埗鍏抽棴 1 寮哄埗鍏抽棴锛屼笉绠℃槸鍚︽湁浜哄湪瑙傜湅銆�0 闈炲己鍒跺叧闂紝褰撴湁浜鸿鐪嬫椂涓嶅叧闂�� 銆愬繀濉弬鏁般�� - - http GET 鏂瑰紡 - 绀轰緥1锛� http://190.168.24.112:7088/index/api/close_streams?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=live&force=1 - 銆愯〃绀哄己琛屽叧闂� app 绛変簬 live 鐨勭爜娴佹帴鍏ャ�� - 绀轰緥2锛� http://190.168.24.112:7088/index/api/close_streams?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=live&stream=Camera_00001&force=1 - 銆愯〃绀哄己琛屽叧闂� app 绛変簬 live, 骞朵笖 stream 绛変簬 Camera_00001 鐨勭爜娴佹帴鍏� 銆� - 绀轰緥3锛� http://190.168.24.112:7088/index/api/close_streams?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&force=1 - 銆愯〃绀哄己琛屽叧闂� 鎵�鏈夌爜娴侊紙app鍏ㄩ儴銆乻tream鍏ㄩ儴锛� 鎺ュ叆 銆� - - http pos 鏂瑰紡 - 绀轰緥1锛� http URL: - http://190.168.24.112:7088/index/api/close_streams - body: - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","app":"live","force":1} - - 銆愯〃绀哄己琛屽叧闂� app 绛変簬 live 鐨勭爜娴佹帴鍏ャ�� - - 绀轰緥2锛� http URL: - http://190.168.24.112:7088/index/api/close_streams - body: - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","app":"live","stream":"Camera_00001","force":1} - - 銆愯〃绀哄己琛屽叧闂� app 绛変簬 live, 骞朵笖 stream 绛変簬 Camera_00001 鐨勭爜娴佹帴鍏� 銆� - - 绀轰緥3锛� http URL: - http://190.168.24.112:7088/index/api/close_streams - body: - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","force":1} - - 銆� 琛ㄧず寮鸿鍏抽棴 鎵�鏈夌爜娴侊紙app鍏ㄩ儴銆乻tream鍏ㄩ儴锛� 鎺ュ叆 銆� - - 16锛夈�� 寮�濮嬪綍鍍忋�佸仠姝㈠綍鍍� - 1) 鐢宠寮�濮嬪綍鍍� - - URL: /index/api/startRecord - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 锛屾瘮濡� 035c73f7-bb6b-4889-a715-d9eb2d1925cc - vhost 姣斿 _defaultVhost_ - app 搴旂敤鍚� 姣斿 Media - stream 濯掍綋娴佸悕 姣斿 Camera_00001 - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/startRecord?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/startRecord - - http Body 鍙傛暟 (json鏍煎紡) - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001"} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "MediaSource: /Media/Camera_00001 start Record", # "code": 0 涓烘垚鍔� - } - - 2) 鐢宠鍋滄褰曞儚 - URL: /index/api/stopRecord - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 锛屾瘮濡� 035c73f7-bb6b-4889-a715-d9eb2d1925cc - vhost 姣斿 _defaultVhost_ - app 搴旂敤鍚� 姣斿 Media - stream 濯掍綋娴佸悕 姣斿 Camera_00001 - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/stopRecord?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/stopRecord - - http Body 鍙傛暟 (json鏍煎紡) - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001"} - - 杩斿洖Body锛� - { - "code": 0, # 0涓烘搷浣滄垚鍔燂紝鍏朵粬鍊间负鎿嶄綔澶辫触 - "memo": "success", # success 涓烘垚鍔� - } - - 17 鑾峰彇绯荤粺閰嶇疆鍙傛暟 - URL: /index/api/getServerConfig - 鍔熻兘锛� - 鑾峰彇鏈嶅姟鍣ㄧ殑閰嶇疆鍙傛暟 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc - - http GET 鏂瑰紡 - http://190.15.240.11:7088/index/api/getServerConfig?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/getServerConfig - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"} - - 杩斿洖Body锛� - { - "code": 0, - "params": [ - - { - "secret": "035c73f7-bb6b-4889-a715-d9eb2d1925cc", - "memo": "server password", - }, - { - "ServerIP": "44.35.33.239", - "memo": "ABLMediaServer ip address" - }, - { - "rtc.listening-ip": "192.168.2.5", - "memo": "Total number of video playback threads ." - }, - { - "mediaServerID": "ABLMediaServer_00001", - "memo": "media Server ID " - }, - { - "hook_enable": 0, - "memo": "hook_enable = 1 open notice , hook_enable = 0 close notice " - }, - { - "enable_audio": 1, - "memo": "enable_audio = 1 open Audio , enable_audio = 0 Close Audio " - }, - { - "httpServerPort": 7088, - "memo": "http api port " - }, - { - "rtspPort": 554, - "memo": "rtsp port " - }, - { - "rtmpPort": 1935, - "memo": "rtmp port " - }, - { - "httpFlvPort": 8088, - "memo": "http-flv port " - }, - { - "hls_enable": 0, - "memo": "hls whether enable " - }, - { - "hlsPort": 9088, - "memo": "hls port" - }, - { - "wsPort": 6088, - "memo": "websocket flv port" - }, - { - "mp4Port": 5088, - "memo": "http mp4 port" - }, - { - "ps_tsRecvPort": 10000, - "memo": "recv ts , ps Stream port " - }, - { - "hlsCutType": 2, - "memo": "hlsCutType = 1 hls cut to Harddisk,hlsCutType = 2 hls cut Media to memory" - }, - { - "h265CutType": 1, - "memo": " 1 h265 cut TS , 2 cut fmp4 " - }, - { - "RecvThreadCount": 128, - "memo": " RecvThreadCount " - }, - { - "SendThreadCount": 128, - "memo": "SendThreadCount" - }, - { - "GB28181RtpTCPHeadType": 2, - "memo": "rtp Length Type" - }, - { - "ReConnectingCount": 40320, - "memo": "Try reconnections times ." - }, - { - "maxTimeNoOneWatch": 9999999, - "memo": "maxTimeNoOneWatch ." - }, - { - "pushEnable_mp4": 0, - "memo": "pushEnable_mp4 ." - }, - { - "fileSecond": 180, - "memo": "fileSecond ." - }, - { - "fileKeepMaxTime": 1, - "memo": "fileKeepMaxTime ." - }, - { - "httpDownloadSpeed": 6, - "memo": "httpDownloadSpeed ." - }, - { - "RecordReplayThread": 32, - "memo": "Total number of video playback threads ." - } - ] - } - - 18锛夈�佹煡璇㈠綍鍍忓垪琛� - URL: /index/api/queryRecordList - - 鍔熻兘锛� - 鏌ヨ鏌愪竴璺緭鍏ユ簮鐨勫綍鍍忓垪琛�(鍙互鏌ヨ浠g悊鎷夋祦杈撳叆銆佹帹娴佽緭鍏ャ�佸浗鏍囪緭鍏ョ瓑绛� ) - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - vhost 姣斿 _defaultVhost_ 銆愬彲閫夊弬鏁般�� - app 搴旂敤鍚� 姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛� 銆愬繀濉弬鏁般�� - stream 濯掍綋娴佸悕 姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑 銆愬繀濉弬鏁般�� - starttime 寮�濮嬫椂闂� 姣斿 20220116154810 骞存湀鏃ユ椂鍒嗙 銆愬繀濉弬鏁般�� - endtime 缁撴潫鏃堕棿 姣斿 20220116155115 骞存湀鏃ユ椂鍒嗙 銆愬繀濉弬鏁般�� - - 銆愭敞鎰忥細1銆佸紑濮嬫椂闂村繀椤诲皬浜� 褰撳墠鏃堕棿鍑忓幓鍒囩墖鏃堕暱鐨勬椂闂� 2銆佷粠 寮�濮嬫椂闂� 鑷� 缁撴潫鏃堕棿 涓嶈兘瓒呰繃3澶┿�� - - http GET 鏂瑰紡 - http://10.0.0.239:7088/index/api/queryRecordList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=Media&stream=Camera_00001&starttime=20220116154810&endtime=20220116155115 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/queryRecordList - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","starttime":"20220116154810","endtime":"20220116155115"} - - 杩斿洖Body锛� - { - "code": 0, - "app": "Media", - "stream": "Camera_00001", - "starttime": "20220116154810", - "endtime": "20220116155115", - "recordFileList": [ - { - "file": "20220116154810.mp4", - "duration": 300, 褰撳墠褰曞儚鏃堕棿闀垮害锛屽崟浣� 绉� - "url": { - "rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810", - "rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810", - "http-flv": "http://10.0.0.239:8088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.flv", - "ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.flv", - "http-mp4": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.mp4?download_speed=1", - "download": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116154810.mp4?download_speed=6" - } - }, - { - "file": "20220116155110.mp4", - "duration": 256, 褰撳墠褰曞儚鏃堕棿闀垮害锛屽崟浣� 绉� - "url": { - "rtsp": "rtsp://10.0.0.239:554/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110", - "rtmp": "rtmp://10.0.0.239:1935/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110", - "http-flv": "http://10.0.0.239:8088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.flv", - "ws-flv": "ws://10.0.0.239:6088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.flv", - "http-mp4": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.mp4?download_speed=1", - "download": "http://10.0.0.239:5088/Media/Camera_00001__ReplayFMP4RecordFile__20220116155110.mp4?download_speed=6" - } - } - ] - } - 19锛夈�佹秷鎭�氱煡浣跨敤 - 鍔熻兘璇存槑锛氭秷鎭�氱煡鏄祦濯掍綋鏈嶅姟鍣ㄧ殑涓�浜涙秷鎭瘮濡傛棤浜鸿鐪嬨�乫mp4褰曞儚鍒囩墖瀹屾垚銆佹挱鏀炬椂娴佸湴鍧�涓嶅瓨鍦ㄧ瓑绛変俊鎭兘鍙婃椂鐨勯�氱煡鍒板彟澶栦竴涓猦ttp鏈嶅姟鍣ㄤ笂锛岄渶瑕佹鍔熻兘 - 娑堟伅閫氱煡鍔熻兘鐢ㄥ湪浠�涔堝湴鏂癸紝姣斿璇存棤浜鸿鐪嬫秷鎭�氱煡锛屽綋鏀跺埌鏃犱汉瑙傜湅娑堟伅鏃讹紝鍥芥爣鏈嶅姟鍣ㄥ彲浠ュ叧闂浗鏍囧彂娴侊紝鏂紑浠g悊鎷夋祦锛屾柇寮�鎺ㄦ祦绛夌瓑鎿嶄綔 - 瑕佷娇鐢ㄦ鍔熻兘鎶婇厤缃枃浠剁殑鍙傛暟hook_enable 鍊艰缃负 1锛屽悓鏃堕�氱煡鐨刪ttp鏈嶅姟鍣ㄥ湴鍧�銆佺鍙e彿涓�瀹氳璁剧疆瀵癸紝涓嬮潰鍒椾妇鍑洪厤缃枃浠朵腑鐨勭浉鍏冲弬鏁� - - hook_enable=1 #浜嬩欢閫氱煡閮ㄥ垎,褰� hook_enable=1 鏃讹紝寮�鍚簨浠堕�氱煡锛宧ook_enable=0鏃跺叧闂簨浠堕�氱煡 - on_stream_arrive=http://10.0.0.238:7088/index/hook/on_stream_arrive #褰撴煇涓�璺殑鐮佹祦杈惧埌鏃朵細閫氱煡涓�娆� - on_stream_none_reader=http://10.0.0.238:8080/index/hook/on_stream_none_reader #褰撴煇涓�璺祦鏃犱汉瑙傜湅鏃讹紝浼氳Е鍙戣閫氱煡浜嬩欢锛屾帴鏀剁鏀跺埌鍚庡彲浠ヨ繘琛屾柇娴佹搷浣� - on_stream_disconnect=http://10.0.0.238:7088/index/hook/on_stream_disconnect #褰撴煇涓�璺爜娴佹柇寮�鏃朵細閫氱煡涓�娆� - on_stream_not_found=http://10.0.0.238:8080/index/hook/on_stream_not_found #鎾斁鏃讹紝鎵句笉鍒版挱鏀剧殑鐮佹祦锛岄�氳繃閰嶅悎on_stream_none_reader浜嬩欢鍙互瀹屾垚鎸夐渶鎷夋祦 - on_record_mp4=http://10.0.0.238:8080/index/hook/on_record_mp4 #褰曞埗瀹屾瘯涓�娈祄p4鏂囦欢閫氱煡 - - 銆愭敞锛歨ttp url鐨� IP锛岀鍙� 鏄唬琛ㄦ秷鎭帴鏀舵湇鍔″櫒鐨処P锛岀鍙o紝涓�瀹氳濉啓姝g‘锛寀rl 鍦板潃瑕佸悎娉曪紝涓嶈鏈夌┖鏍� 銆� - 1銆佸綋鏌愪竴璺爜娴佸埌杈炬椂浼氬彂閫侀�氱煡锛� - POST /index/hook/on_stream_arrive HTTP/1.1 # 鏍规嵁 /index/hook/on_stream_arrive 杩欎釜鍙互鍒ゆ柇鏄煇涓�璺爜娴佸埌杈� - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 105 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-5.2.9(2022-03-28) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - { - "app":"Media", # app - "stream":"Camera_00001", # stream - "mediaServerId":"ABLMediaServer_00001", # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 - "networkType":23, # 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛� - "key":130, # 濯掍綋娴佹潵婧愮紪鍙凤紝鍙互鏍规嵁杩欎釜key杩涜鍏抽棴娴佸獟浣� 鍙互璋冪敤delMediaStream鎴朿lose_streams 鍑芥暟杩涜鍏抽棴 - "status":true, - "enable_hls":false, - "transcodingStatus":false, - "sourceURL":"rtsp://admin:abldyjh2020@44.35.33.248:554", - "readerCount":0, - "noneReaderDuration":0, - "videoCodec":"H265", - "videoFrameSpeed":25, - "width":1920, - "height":1080, - "videoBitrate":0, - "audioCodec":"AAC", - "audioChannels":1, - "audioSampleRate":8000, - "audioBitrate":0, - "url": - { - "rtsp":"rtsp://44.35.33.249:554/Media/Camera_00001", - "rtmp":"rtmp://44.35.33.249:1935/Media/Camera_00001", - "http-flv":"http://44.35.33.249:8088/Media/Camera_00001.flv", - "ws-flv":"ws://44.35.33.249:6088/Media/Camera_00001.flv", - "http-mp4":"http://44.35.33.249:5088/Media/Camera_00001.mp4", - "http-hls":"http://44.35.33.249:9088/Media/Camera_00001.m3u8" - } - } - - 2銆佹棤浜鸿鐪嬫秷鎭�氱煡鏍蜂緥锛� - POST /index/hook/on_stream_none_reader HTTP/1.1 # 鏍规嵁 /index/hook/on_stream_none_reader 杩欎釜鍙互鍒ゆ柇鏄棤浜鸿鐪嬫秷鎭�氱煡 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 105 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-5.2.9(2022-03-28) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - { - "app":"Media", # app - "stream":"Camera_00001", # stream - "mediaServerId":"ABLMediaServer_00001", # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 - "networkType":23, # 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛� - "key":130 # 濯掍綋娴佹潵婧愮紪鍙凤紝鍙互鏍规嵁杩欎釜key杩涜鍏抽棴娴佸獟浣� 鍙互璋冪敤delMediaStream鎴朿lose_streams 鍑芥暟杩涜鍏抽棴 - } - - 3銆� fmp4褰曞儚鍒囩墖褰曞儚瀹屾垚涓�涓枃浠舵椂浼氬彂閫佷竴涓秷鎭�氱煡 - POST /index/hook/on_record_mp4 HTTP/1.1 # 鏍规嵁 /index/hook/on_record_mp4 杩欎釜鍙互鍒ゆ柇鏄痬p4褰曞儚鍒囩墖瀹屾瘯涓�涓�氱煡 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 127 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-5.2.9(2022-03-28) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - { - "app":"Media", # app - "stream":"Camera_00001", # stream - "mediaServerId":"ABLMediaServer_00001", # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 - "networkType":70, # 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛� - "fileName":"20220312212546.mp4" # 褰曞儚鍒囩墖瀹屾垚鐨勬枃浠跺悕瀛� - } - - 4銆佸綋鏌愪竴璺爜娴佹柇寮�鏃朵細鍙戦�侀�氱煡锛� - POST /index/hook/on_stream_disconnect HTTP/1.1 # 鏍规嵁 /index/hook/on_stream_disconnect 杩欎釜鍙互鍒ゆ柇鏄煇涓�璺爜娴佹柇寮� - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 105 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-5.2.9(2022-03-28) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - { - "app":"Media", # app - "stream":"Camera_00001", # stream - "mediaServerId":"ABLMediaServer_00001", # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 - "networkType":23, # 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛� - "key":130 # 濯掍綋娴佹潵婧愮紪鍙凤紝鍙互鏍规嵁杩欎釜key杩涜鍏抽棴娴佸獟浣� 鍙互璋冪敤delMediaStream鎴朿lose_streams 鍑芥暟杩涜鍏抽棴 - } - - 5銆� 褰撴挱鏀句竴涓猽rl锛屽鏋滀笉瀛樺湪鏃讹紝浼氬彂鍑轰竴涓秷鎭�氱煡 - POST /index/hook/on_stream_not_found HTTP/1.1 # 鏍规嵁 /index/hook/on_stream_not_found 锛孒ttp鎺ユ敹鏈嶅姟鍣ㄥ緱鐭ユ祦涓嶄笉瀛樺湪 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 127 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-5.2.9(2022-03-28) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - { - "app":"Media", # app 涓嶅瓨鍦ㄧ殑app - "stream":"Camera_00001", # stream 涓嶅瓨鍦ㄧ殑stream - "mediaServerId":"ABLMediaServer_00001" # 娴佸獟浣撴湇鍔″櫒缂栧彿 锛屽湪閰嶇疆鏂囦欢鍙互閰嶇疆锛屽鏋滈泦缇ゆ祦濯掍綋鏈嶅姟鍣ㄦ椂锛屽彲浠ョ粰姣忓彴娴佸獟浣撴湇鍔″櫒璧蜂釜缂栧彿 - } - 6銆丄BLMediaServer鍚姩鏃朵細鍙戦�佷笂绾块�氱煡 - POST /index/hook/on_server_started HTTP/1.1 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 105 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-6.3.5(2023-04-30) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - {"localipAddress":"44.35.33.249","mediaServerId":"ABLMediaServer_00001","datetime":"2023-04-18 10:04:37"} - - 7銆佹煇涓�涓爜娴佹帴鍏ユ祦濯掍綋鏈嶅姟鍣ㄦ椂浼氫骇鐢� 鍙戝竷 浜嬩欢閫氱煡 - POST /index/hook/on_publish HTTP/1.1 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 149 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-6.3.5(2023-04-30) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - {"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","networkType":50,"key":470,"ip":"44.35.33.248" ,"port":554,"params":""} - - 8銆佸綋鎾斁娴佸獟浣撴湇鍔″櫒閲岄潰鏌愪竴涓爜娴佹椂锛屼細瑙﹀彂 鎾斁浜嬩欢 锛屽彲浠ラ�氱煡 parmas 鍙傛暟鍊艰繘琛屾挱鏀鹃壌鏉� - POST /index/hook/on_play HTTP/1.1 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 135 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-6.3.5(2023-04-30) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - {"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","networkType":30,"key":472,"ip":"" ,"port":0,"params":"user=admin&password=safsa234234&token=@#$@#$@#ASDFasfdsa@#$23"} - - 9銆佸鏋滄煇涓�涓爜娴佽繘琛孧P4褰曞儚锛坋nable_mp4=1锛夛紝浼氳Е鍙戝綍鍍忚繘搴﹂�氱煡浜嬩欢 - POST /index/hook/on_record_progress HTTP/1.1 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 204 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-6.3.5(2023-04-30) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - {"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","networkType":472,"key":470,"fileName":"20230418100440.mp4","currentFileDuration":49,"TotalVideoDuration":49} - - 10銆佸鏋滄煇涓�涓爜娴佸紑鍚痟ls锛坋nable_hls=1锛夊苟涓旇缃负鍒囩墖鍒扮‖鐩橈紙hlsCutType=1 鍦ㄩ厤缃枃浠朵腑锛� 锛屾瘡褰撳垏鐗囧畬鎴愪竴涓猼s鏂囦欢浼氳Е鍙戣浜嬩欢 - POST /index/hook/on_record_ts HTTP/1.1 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 246 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-6.3.5(2023-04-30) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - {"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","networkType":30,"key":470,"createDateTime":"2023-04-18 10:05:47","currentFileDuration":3,"fileName":"D:\WorkDir\ABLMediaServer\x64\Debug\www\Media\Camera_00001\23.ts"} - - 11銆佹祦濯掍綋鏈嶅姟鍣ㄦ瘡闅�60绉掍細瑙﹀彂蹇冭烦浜嬩欢閫氱煡 - POST /index/hook/on_server_keepalive HTTP/1.1 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 105 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-6.3.5(2023-04-30) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - {"localipAddress":"44.35.33.249","mediaServerId":"ABLMediaServer_00001","datetime":"2023-04-18 10:25:40"} - - 12銆佸綋浠g悊鎷夋祦銆佸浗鏍囨帴鍏ョ瓑绛� 鐮佹祦涓嶅埌杈炬椂浼氬彂鍑� 鐮佹祦涓嶅埌杈剧殑浜嬩欢閫氱煡 - POST /index/hook/on_stream_not_arrive HTTP/1.1 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 155 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-6.3.5(2023-04-30) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - {"mediaServerId":"ABLMediaServer_00001","app":"gb28181","stream":"440300123432202342349","networkType":60,"key":470} - - 13銆佸鏋滄煇涓�涓爜娴佽繘琛孧P4褰曞儚锛坋nable_mp4=1锛夛紝褰撴煇涓狹P4鏂囦欢琚垹闄や細瑙﹀彂璇ヤ簨浠堕�氱煡 - POST /index/hook/on_delete_record_mp4 HTTP/1.1 - Accept: */* - Accept-Language: zh-CN,zh;q=0.8 - Connection: keep-alive - Content-Length: 204 - Content-Type: application/json - Host: 127.0.0.1 - Tools: ABLMediaServer-6.3.5(2023-04-30) - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 - - {"app":"Media","stream":"Camera_00001","mediaServerId":"ABLMediaServer_00001","fileName":"20230418100440.mp4"} - - - - 20) 鍥剧墖鎶撴媿 - URL: /index/api/getSnap - - 鍔熻兘锛� - 鏌ヨ鏌愪竴鎺ュ叆鐨勫獟浣撴簮杩涜鎶撴媿 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - vhost 姣斿 _defaultVhost_ 銆愬彲閫夊弬鏁般�� - app 搴旂敤鍚� 姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛� 銆愬繀濉弬鏁般�� - stream 濯掍綋娴佸悕 姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑 銆愬繀濉弬鏁般�� - timeout_sec 瓒呮椂鏃堕暱 10 鍗虫湰娆℃姄鎷嶆渶澶ц秴鏃舵椂闀� 鍗曚綅 绉� 銆愬繀濉弬鏁般�� - - http GET 鏂瑰紡 - http://127.0.0.1:7088/index/api/getSnap?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=_defaultVhost_&app=Media&stream=Camera_00001&timeout_sec=10 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/getSnap - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","timeout_sec":10} - - 鎶撴媿鎴愬姛杩斿洖锛� - { - "code": 0, - "memo": "success , Catpuring takes time 219 millisecond .", - "url": "http://10.0.0.239:7088/Media/Camera_00001/2022031910034501.jpg" - } - - 21锛夊浘鐗囧垪琛ㄦ煡璇� - URL: /index/api/queryPictureList - - 鍔熻兘锛� - 鏌ヨ鏌愪竴璺緭鍏ユ簮鐨勬姄鎷嶅浘鐗囧垪琛� - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - vhost 姣斿 _defaultVhost_ 銆愬彲閫夊弬鏁般�� - app 搴旂敤鍚� 姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛� 銆愬繀濉弬鏁般�� - stream 濯掍綋娴佸悕 姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑 銆愬繀濉弬鏁般�� - starttime 寮�濮嬫椂闂� 姣斿 20220317081201 骞存湀鏃ユ椂鍒嗙 銆愬繀濉弬鏁般�� - endtime 缁撴潫鏃堕棿 姣斿 20220319231201 骞存湀鏃ユ椂鍒嗙 銆愬繀濉弬鏁般�� - - 銆愭敞鎰忥細1銆佸紑濮嬫椂闂村繀椤诲皬浜� 褰撳墠鏃堕棿鍑忓幓鍒囩墖鏃堕暱鐨勬椂闂� 2銆佷粠 寮�濮嬫椂闂� 鑷� 缁撴潫鏃堕棿 涓嶈兘瓒呰繃7澶┿�� - - http GET 鏂瑰紡 - http://10.0.0.239:7088/index/api/queryPictureList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&app=Media&stream=Camera_00001&starttime=20220317081201&endtime=20220319231201 - - http POST 鏂瑰紡 - http URL - http://190.15.240.11:7088/index/api/queryPictureList - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","vhost":"_defaultVhost_","app":"Media","stream":"Camera_00001","starttime":"20220317081201","endtime":"20220319231201"} - - 鎴愬姛杩斿洖Body鍊� - { - "code": 0, - "app": "Media", - "stream": "Camera_00001", - "starttime": "20220317081201", - "endtime": "20220319231201", - "PictureFileList": [ - { - "file": "2022031816153857.jpg", - "url": "http://10.0.0.239:7088/Media/Camera_00001/2022031816153857.jpg" - }, - { - "file": "2022031816153958.jpg", - "url": "http://10.0.0.239:7088/Media/Camera_00001/2022031816153958.jpg" - }, - { - "file": "2022031816154059.jpg", - "url": "http://10.0.0.239:7088/Media/Camera_00001/2022031816154059.jpg" - }, - ] - } - - 22銆佷慨鏀规煇涓�璺殑姘村嵃鐩稿叧鍙傛暟 - - URL: index/api/setTransFilter - - 鍔熻兘锛� - 淇敼鏌愪竴璺殑姘村嵃鐩稿叧鍙傛暟锛屾瘮姘村嵃鐨勫唴瀹广�侀鑹层�佸瓧浣撳ぇ灏忋�佸瓧浣撲綅缃�佸瓧浣撻�忔槑搴� - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - vhost 姣斿 _defaultVhost_ 銆愬彲閫夊弬鏁般�� - app 搴旂敤鍚� 姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛� 銆愬繀濉弬鏁般�� - stream 濯掍綋娴佸悕 姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑 銆愬繀濉弬鏁般�� - text 姘村嵃鍐呭 姣斿 鏌愭煇甯傛煇鏌愬叕瀹夊眬 銆愬繀濉弬鏁般�� - size 瀛椾綋澶у皬 20銆�30 銆�40 銆�50 銆愬繀濉弬鏁般�� - color 瀛椾綋棰滆壊 red,green,blue,white,black, - alpha 閫忔槑搴� 0.1 ~ 0.9 , - left 姘村嵃x鍧愭爣 姣斿 5 銆� 10 銆�20 - top 姘村嵃y鍧愭爣 姣斿 5 銆� 10 銆� 20 - trans 鏄惁杞崲 鍥哄畾涓� 1 - - http POST 鏂瑰紡 - http://127.0.0.1:7088/index/api/setTransFilter - - Body 鍙傛暟鍐呭涓� - { - "secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc", - "app" : "live", - "stream" : "test", - "text" : "ABL", - "size" : 60, - "color" : "red", - "alpha" : 0.8, - "left" : 40, - "top" : 40, - "trans" : 1 - } - - 23銆佷负浜嗗姛鑳芥洿鏂扮殑闇�瑕侊紝澧炲姞璁剧疆鍙傛暟鍊肩殑鎺ュ彛锛屽彲浠ュ崟鐙缃� ABLMediaServer.ini 鐨勬煇涓�涓�硷紝骞朵笖鏈嶅姟鍣ㄤ笉鐢ㄩ噸鍚紝绔嬪嵆璧锋晥 - - URL: index/api/setConfigParamValue - - 鍔熻兘锛� - 涓轰簡鍔熻兘鏇存柊鐨勯渶瑕侊紝澧炲姞璁剧疆鍙傛暟鍊肩殑鎺ュ彛锛屽彲浠ュ崟鐙缃� ABLMediaServer.ini 鐨勬煇涓�涓�硷紝骞朵笖鏈嶅姟鍣ㄤ笉鐢ㄩ噸鍚紝绔嬪嵆璧锋晥 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - vhost 姣斿 _defaultVhost_ 銆愬彲閫夊弬鏁般�� - key 鍙傛暟鍚� 姣斿 saveGB28181Rtp 锛堜繚瀛樻帴鍏ョ殑鍥芥爣PS娴侊級銆� saveProxyRtspRtp 锛堜繚瀛榬tsp浠g悊鎷夋祦鐨剅tp娴侊級 - 杩樻湁 ABLMediaServer.ini 閲岄潰鐨勯厤缃弬鏁帮紝濡傛灉鍙傛暟鍊间笉濉氨璁剧疆绌猴紝涓嶆槸绌烘牸 - mediaServerID = ABLMediaServer_00001 - secret = 035c73f7-bb6b-4889-a715-d9eb2d1925cc - localipAddress = - maxTimeNoOneWatch = 9999999 - recordPath = - picturePath = - maxSameTimeSnap = 16 - snapOutPictureWidth = 0 - snapOutPictureHeight = 0 - snapObjectDestroy = 1 - snapObjectDuration = 120 - captureReplayType = 1 - pictureMaxCount = 30 - pushEnable_mp4 = 0 - fileSecond = 300 - videoFileFormat = 1 - fileKeepMaxTime = 3 - httpDownloadSpeed = 6 - fileRepeat = 0 - H265ConvertH264_enable = 0 - H265DecodeCpuGpuType = 0 - H264DecodeEncode_enable = 0 - filterVideo_enable = 0 - filterVideo_text = ABL姘村嵃娴嬭瘯123 - FilterFontSize = 30 - FilterFontColor = red - FilterFontLeft = 5 - FilterFontTop = 5 - FilterFontAlpha = 0.6 - convertOutWidth = 720 - convertOutHeight = 480 - convertMaxObject = 26 - convertOutBitrate = 1024 - hook_enable = 0 - noneReaderDuration = 15 - on_server_started = http://10.0.0.238:4088/index/hook/on_server_started - on_server_keepalive = http://10.0.0.238:4088/index/hook/on_server_keepalive - on_stream_arrive = http://10.0.0.238:4088/index/hook/on_stream_arrive - on_stream_not_arrive = http://10.0.0.238:4088/index/hook/on_stream_not_arrive - on_stream_none_reader = http://10.0.0.238:4088/index/hook/on_stream_none_reader - on_stream_disconnect = http://10.0.0.238:4088/index/hook/on_stream_disconnect - on_stream_not_found = - on_record_mp4 = http://10.0.0.238:4088/index/hook/on_record_mp4 - on_delete_record_mp4 = http://10.0.0.238:4088/index/hook/on_delete_record_mp4 - on_record_progress = http://10.0.0.238:4088/index/hook/on_record_progress - on_record_ts = http://10.0.0.238:4088/index/hook/on_record_ts - httpServerPort = 7088 - rtspPort = 554 - rtmpPort = 1935 - httpMp4Port = 5088 - wsFlvPort = 6088 - httpFlvPort = 8088 - ps_tsRecvPort = 10000 - hls_enable = 0 - hlsPort = 9088 - hlsCutTime = 3 - hlsCutType = 2 - h265CutType = 1 - enable_audio = 1 - G711ConvertAAC = 0 - IOContentNumber = 16 - ThreadCountOfIOContent = 8 - RecvThreadCount = 128 - SendThreadCount = 128 - RecordReplayThread = 32 - GB28181RtpTCPHeadType = 2 - ReConnectingCount = 40320 - MaxDiconnectTimeoutSecond = 36 - ForceSendingIFrame = 1 - value 鍙傛暟鍊� 璇﹁ ABLMediaServer.ini 鐨勫弬鏁板�煎強鍙傛暟鍊艰鏄� - - http GET 鏂瑰紡 - 銆� 姣斿锛� - 鎵撳紑淇濆瓨鍥芥爣PS鏍囧織 - 銆�銆� http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveGB28181Rtp&value=1 - 鍏抽棴瀛樺浗鏍嘝S鏍囧織 - 銆�銆� http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveGB28181Rtp&value=0 - - 鎵撳紑淇濆瓨浠g悊鎷夛綊锝旓綋锝愭祦鏍囧織 - 銆�銆� http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveProxyRtspRtp&value=1 - 鍏抽棴淇濆瓨浠g悊鎷夛綊锝旓綋锝愭祦鏍囧織 - 銆�銆� http://44.35.33.239:7088/index/api/setConfigParamValue?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&key=saveProxyRtspRtp&value=0 - - 24锛夊畨鍏ㄥ仠姝㈡湇鍔″櫒 - URL: /index/api/shutdownServer - - 鍔熻兘锛� - 瀹夊叏鍋滄鏈嶅姟鍣紝濡傛灉鏈嶅姟鍣ㄦ鍦ㄥ綍鍍忋�佹姄鎷嶇瓑绛夋搷浣滐紝闇�瑕佽皟鐢ㄨ鍑芥暟瀹夊叏鍋滄鏈嶅姟鍣紝杩欐牱褰曞埗鐨刴p4鎵嶈兘姝e父鎾斁 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - - http GET 鏂瑰紡 - http://127.0.0.1:7088/index/api/shutdownServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc - - http POST 鏂瑰紡 - http URL - http://127.0.0.1:7088/index/api/shutdownServer - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"} - - 杩斿洖Body锛� - { - "code": 0, - "memo": "ABLMediaServer shutdown Successed !" - } - - 25锛夐噸鏂板惎鍔ㄦ湇鍔″櫒 - URL: /index/api/restartServer - - 鍔熻兘锛� - 瀹夊叏閲嶅惎鏈嶅姟鍣紝濡傛灉鏈嶅姟鍣ㄦ鍦ㄥ綍鍍忋�佹姄鎷嶇瓑绛夋搷浣滐紝闇�瑕佽皟鐢ㄨ鍑芥暟瀹夊叏閲嶅惎鏈嶅姟鍣紝杩欐牱褰曞埗鐨刴p4鎵嶈兘姝e父鎾斁 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - - http GET 鏂瑰紡 - http://127.0.0.1:7088/index/api/restartServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc - - http POST 鏂瑰紡 - http URL - http://127.0.0.1:7088/index/api/restartServer - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"} - - 杩斿洖Body锛� - { - "code": 0, - "memo": "ABLMediaServer restartServer Successed ! " - } - - 26锛夎幏鍙栧綋鍓嶈浆鐮佺殑鏁伴噺 - URL: /index/api/getTranscodingCount - - 鍔熻兘锛� - 鑾峰彇褰撳墠姝e湪杞爜鐨勬暟閲� - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - - http GET 鏂瑰紡 - http://127.0.0.1:7088/index/api/getTranscodingCount?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc - - http POST 鏂瑰紡 - http URL - http://127.0.0.1:7088/index/api/getTranscodingCount - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"} - - 杩斿洖Body锛� - { - "code": 0, - "currentTranscodingCount": 2 - } - - 27锛夈�佸垪涓炬祦濯掍綋鏈嶅姟鍣ㄦ墍鏈夊崰鐢ㄧ鍙� - URL: /index/api/listServerPort - - 鍔熻兘锛� - 鍒椾妇娴佸獟浣撴湇鍔″櫒鎵�鏈夊崰鐢ㄧ鍙� - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - app 搴旂敤鍚� 姣斿 rtp銆乬b28181銆丮edia 绛夌瓑 锛岃嚜宸辫捣鐨勫悕瀛� 銆愬彲閫夊弬鏁般�� - stream 濯掍綋娴佸悕 姣斿 Camera_00001銆�44303403343034243200234 绛夌瓑 銆愬彲閫夊弬鏁般�� - - 鍙傛暟濉啓鏍蜂緥璇存槑锛� - 鏍蜂緥1锛坅pp銆乻tream 閮戒笉濉啓锛� - secret 035c73f7-bb6b-4889-a715-d9eb2d1925cc - - 杩斿洖鎵�鏈夊湪绾跨殑濯掍綋婧� - - 鏍蜂緥2 锛堝彧濉啓 app 锛� - secret 035c73f7-bb6b-4889-a715-d9eb2d1925cc - app rtp - 杩斿洖 app 绛変簬 rtp 鐨勬墍鏈夊獟浣撴簮 - - 鏍蜂緥3 锛堝~鍐� app = rtp , stream = 44303403343034243200234锛� - secret 035c73f7-bb6b-4889-a715-d9eb2d1925cc - app rtp - stream 44303403343034243200234 - 杩斿洖 app 绛変簬 rtp銆佸苟涓� stream 绛変簬 44303403343034243200234 鐨勬墍鏈夊獟浣撴簮 - - 鏍蜂緥4 锛堝~鍐� stream = 44303403343034243200234锛� - secret 035c73f7-bb6b-4889-a715-d9eb2d1925cc - stream 44303403343034243200234 - 杩斿洖 stream 绛変簬 44303403343034243200234 鐨勬墍鏈夊獟浣撴簮 - - http GET 鏂瑰紡 - http://127.0.0.1:7088/index/api/listServerPort?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc - - http POST 鏂瑰紡 - http URL - http://127.0.0.1:7088/index/api/listServerPort - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc"} - - 杩斿洖Body锛� - { - "code": 0, - "memo": "success", - "data": [ - { - "key": 478, - "app": "Media", - "stream": "Camera_00003", - "networkType": 23, - "port": 34988 - }, - { - "key": 477, - "app": "Media", - "stream": "Camera_00002", - "networkType": 23, - "port": 34986 - }, - { - "key": 476, - "app": "Media", - "stream": "Camera_00001", - "networkType": 23, - "port": 34984 - }, - { - "key": 456, - "app": "", - "stream": "", - "networkType": 68, - "port": 10000 - } - ] - } - - 銆愭敞閲婏細鍙互鏍规嵁 "networkType": 23, 杩欎釜瀛楁鏍囪瘑瀵硅薄鐨勭綉缁滅被鍨� 锛屽叿浣撹瑙佺綉缁滅被鍨嬬殑瀵圭収琛� 銆� - - 28锛夈�佹壒閲忚缃湇鍔″櫒鐨勯厤缃弬鏁� - URL: /index/api/setServerConfig - - 鍔熻兘锛� - 鎵归噺璁剧疆鏈嶅姟鍣ㄧ殑閰嶇疆鍙傛暟 - - 鍙傛暟锛� 鍙傛暟璇存槑 鍙傛暟鍙傝�冨�� - secret 鏈嶅姟鍣ㄥ瘑鐮� 姣斿 035c73f7-bb6b-4889-a715-d9eb2d1925cc 銆愬繀濉弬鏁般�� - noneReaderDuration 澶氬皯绉掓棤浜鸿鐪嬮�氱煡涓�娆� 20 銆愬彲閫夊弬鏁般�� - on_server_started 鏈嶅姟鍣ㄥ惎鍔ㄩ�氱煡 http://10.0.0.238:4088/index/hook/on_server_started 銆愬彲閫夊弬鏁般�� - iframeArriveNoticCount i甯ц揪鍒伴�氱煡鎬绘暟 30 銆愬彲閫夊弬鏁般�� - - http GET 鏂瑰紡 - http://127.0.0.1:7088/index/api/setServerConfig?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&noneReaderDuration=20&on_server_started=http://10.0.0.238:4088/index/hook/on_server_started&iframeArriveNoticCount=30 - - http POST 鏂瑰紡 - http URL - http://127.0.0.1:7088/index/api/setServerConfig - - http Body 鍙傛暟 json 鏍煎紡 - {"secret":"035c73f7-bb6b-4889-a715-d9eb2d1925cc","noneReaderDuration":20,"iframeArriveNoticCount":30,"on_server_started":"http://10.0.0.238:4088/index/hook/on_server_started"} - - 29锛� 涓轰簡鏂逛究鏌愪簺鐗规畩鍦哄悎锛屾湇鍔″櫒鏀寔udp鐨�10000 绔彛鎺ュ叆鍥芥爣PS鐮佹祦锛屽氨鏄汉浠父璇寸殑鍗曠鍙fā寮忥紝url鐨勫懡鍚嶈鍒欎负 /rtp/ssrc ,鍏朵腑ssrc涓轰笅绾tp鎵撳寘 - 鐨�16杩涘埗鐨勫�艰浆鎹负澶у皬鐨勫瓧绗︿覆锛屽嵆鍙痵printf(url,"rtp/%X",ssrc) ,鍏蜂綋鎺ュ叆鐨剈rl鍚嶅瓧鍙互璋冪敤 getMediaList 鏌ヨ鍑烘帴鍏ョ殑鍥芥爣娴� 銆傞渶瑕佹敞鎰忕殑鏄� - 涓嬬骇 rtp 鎵撳寘鏃舵瘡璺棰戠殑rtp涓殑ssrc涓嶈兘鐩稿悓銆� - - - 30锛� 缃戠粶绫诲瀷鐨勫鐓ц〃 - 1 濯掍綋杈撳叆缃戠粶绫诲瀷瀵圭収琛� - - 鏁村舰鍊� 浠h〃鎰忎箟 - 21 浠tmp鏂瑰紡鎺ㄩ�佹帴鍏ユ祦濯掍綋鏈嶅姟鍣� - 23 浠tsp鏂瑰紡鎺ㄩ�佹帴鍏ユ祦濯掍綋鏈嶅姟鍣� - 30 鏈嶅姟鍣ㄤ互rtsp鏂瑰紡涓诲姩鎷夋祦鎺ュ叆 - 31 鏈嶅姟鍣ㄤ互rtmp鏂瑰紡涓诲姩鎷夋祦鎺ュ叆 - 32 鏈嶅姟鍣ㄤ互flv鏂瑰紡涓诲姩鎷夋祦鎺ュ叆 - 33 鏈嶅姟鍣ㄤ互hls鏂瑰紡涓诲姩鎷夋祦鎺ュ叆 - 50 浠g悊鎷夋祦鎺ュ叆鏈嶅姟鍣� - 60 鏈嶅姟鍣ㄤ互鍥芥爣28181鐨刄DP鏂瑰紡鎺ュ叆 - 61 鏈嶅姟鍣ㄤ互鍥芥爣28181鐨凾CP鏂瑰紡鎺ュ叆 - - 80 鏈嶅姟鍣ㄥ綍鍍忔枃浠剁偣鎾互璇诲彇fmp4鏂囦欢杈撳叆 - 81 鏈嶅姟鍣ㄥ綍鍍忔枃浠剁偣鎾互璇诲彇TS鏂囦欢杈撳叆 - 82 鏈嶅姟鍣ㄥ綍鍍忔枃浠剁偣鎾互璇诲彇PS鏂囦欢杈撳叆 - 83 鏈嶅姟鍣ㄥ綍鍍忔枃浠剁偣鎾互璇诲彇FLV鏂囦欢杈撳叆 - - 2 濯掍綋杈撳嚭缃戠粶绫诲瀷瀵圭収琛� - 鏁村舰鍊� 浠h〃鎰忎箟 - 22 鏈嶅姟鍣ㄤ互rtsp琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 - 24 鏈嶅姟鍣ㄤ互rtmp琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 - 25 鏈嶅姟鍣ㄤ互flv琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 銆佹祻瑙堝櫒鎾斁 - 26 鏈嶅姟鍣ㄤ互hls琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 銆佹祻瑙堝櫒鎾斁 - 27 鏈嶅姟鍣ㄤ互ws-flv琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� ,EasyPlayer.js鎻掍欢鎾斁銆佹祻瑙堝櫒鎾斁 - 28 鏈嶅姟鍣ㄤ互http-mp4琚姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剉lc鐐规挱 銆佹祻瑙堝櫒鎾斁 - - 40 鏈嶅姟鍣ㄤ互rtsp涓诲姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剅tsp鎺ㄦ祦 - 41 鏈嶅姟鍣ㄤ互rtmp涓诲姩鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨剅tmp鎺ㄦ祦 - 65 鏈嶅姟鍣ㄤ互鍥芥爣GB28181涓诲姩UDP鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨勫浗鏍囦互UDP鏂瑰紡寰�涓婄骇鎺ㄦ祦 - 66 鏈嶅姟鍣ㄤ互鍥芥爣GB28181涓诲姩TCP鏂瑰紡寰�澶栧彂閫佺爜娴� 锛屽嵆甯歌鐨勫浗鏍囦互TCP鏂瑰紡寰�涓婄骇鎺ㄦ祦 - \ No newline at end of file diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/abl/ABLRESTfulUtils.java deleted file mode 100755 index 5eca3bf..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/ABLRESTfulUtils.java +++ /dev/null @@ -1,317 +0,0 @@ -package com.genersoft.iot.vmp.media.abl; - -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.genersoft.iot.vmp.media.bean.MediaServer; -import okhttp3.*; -import okhttp3.logging.HttpLoggingInterceptor; -import org.jetbrains.annotations.NotNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.net.ConnectException; -import java.net.SocketTimeoutException; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -@Component -public class ABLRESTfulUtils { - - private final static Logger logger = LoggerFactory.getLogger(ABLRESTfulUtils.class); - - private OkHttpClient client; - - public interface RequestCallback{ - void run(JSONObject response); - } - - private OkHttpClient getClient(){ - return getClient(null); - } - - private OkHttpClient getClient(Integer readTimeOut){ - if (client == null) { - if (readTimeOut == null) { - readTimeOut = 10; - } - OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder(); - //todo 鏆傛椂鍐欐瓒呮椂鏃堕棿 鍧囦负5s - // 璁剧疆杩炴帴瓒呮椂鏃堕棿 - httpClientBuilder.connectTimeout(8,TimeUnit.SECONDS); - // 璁剧疆璇诲彇瓒呮椂鏃堕棿 - httpClientBuilder.readTimeout(readTimeOut,TimeUnit.SECONDS); - // 璁剧疆杩炴帴姹� - httpClientBuilder.connectionPool(new ConnectionPool(16, 5, TimeUnit.MINUTES)); - if (logger.isDebugEnabled()) { - HttpLoggingInterceptor logging = new HttpLoggingInterceptor(message -> { - logger.debug("http璇锋眰鍙傛暟锛�" + message); - }); - logging.setLevel(HttpLoggingInterceptor.Level.BASIC); - // OkHttp閫茶娣诲姞鏀旀埅鍣╨oggingInterceptor - httpClientBuilder.addInterceptor(logging); - } - client = httpClientBuilder.build(); - } - return client; - - } - - public JSONObject sendPost(MediaServer mediaServerItem, String api, Map<String, Object> param, RequestCallback callback) { - return sendPost(mediaServerItem, api, param, callback, null); - } - - - public JSONObject sendPost(MediaServer mediaServerItem, String api, Map<String, Object> param, RequestCallback callback, Integer readTimeOut) { - OkHttpClient client = getClient(readTimeOut); - - if (mediaServerItem == null) { - return null; - } - String url = String.format("http://%s:%s/index/api/%s", mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api); - JSONObject responseJSON = new JSONObject(); - //-2鑷畾涔夋祦濯掍綋 璋冪敤閿欒鐮� - responseJSON.put("code",-2); - responseJSON.put("msg","娴佸獟浣撹皟鐢ㄥけ璐�"); - - FormBody.Builder builder = new FormBody.Builder(); - builder.add("secret",mediaServerItem.getSecret()); - if (param != null && param.keySet().size() > 0) { - for (String key : param.keySet()){ - if (param.get(key) != null) { - builder.add(key, param.get(key).toString()); - } - } - } - - FormBody body = builder.build(); - - Request request = new Request.Builder() - .post(body) - .url(url) - .build(); - if (callback == null) { - try { - Response response = client.newCall(request).execute(); - - if (response.isSuccessful()) { - ResponseBody responseBody = response.body(); - if (responseBody != null) { - String responseStr = responseBody.string(); - responseJSON = JSON.parseObject(responseStr); - } - }else { - System.out.println( 2222); - System.out.println( response.code()); - response.close(); - Objects.requireNonNull(response.body()).close(); - } - }catch (IOException e) { - logger.error(String.format("[ %s ]璇锋眰澶辫触: %s", url, e.getMessage())); - - if(e instanceof SocketTimeoutException){ - //璇诲彇瓒呮椂瓒呮椂寮傚父 - logger.error(String.format("璇诲彇ABL鏁版嵁瓒呮椂澶辫触: %s, %s", url, e.getMessage())); - } - if(e instanceof ConnectException){ - //鍒ゆ柇杩炴帴寮傚父锛屾垜杩欓噷鏄姤Failed to connect to 10.7.5.144 - logger.error(String.format("杩炴帴ABL杩炴帴澶辫触: %s, %s", url, e.getMessage())); - } - - }catch (Exception e){ - logger.error(String.format("璁块棶ABL澶辫触: %s, %s", url, e.getMessage())); - } - }else { - client.newCall(request).enqueue(new Callback(){ - - @Override - public void onResponse(@NotNull Call call, @NotNull Response response){ - if (response.isSuccessful()) { - try { - String responseStr = Objects.requireNonNull(response.body()).string(); - callback.run(JSON.parseObject(responseStr)); - } catch (IOException e) { - logger.error(String.format("[ %s ]璇锋眰澶辫触: %s", url, e.getMessage())); - } - - }else { - response.close(); - Objects.requireNonNull(response.body()).close(); - } - } - - @Override - public void onFailure(@NotNull Call call, @NotNull IOException e) { - logger.error(String.format("杩炴帴ABL澶辫触: %s, %s", call.request().toString(), e.getMessage())); - - if(e instanceof SocketTimeoutException){ - //璇诲彇瓒呮椂瓒呮椂寮傚父 - logger.error(String.format("璇诲彇ABL鏁版嵁澶辫触: %s, %s", call.request().toString(), e.getMessage())); - } - if(e instanceof ConnectException){ - //鍒ゆ柇杩炴帴寮傚父锛屾垜杩欓噷鏄姤Failed to connect to 10.7.5.144 - logger.error(String.format("杩炴帴ABL澶辫触: %s, %s", call.request().toString(), e.getMessage())); - } - } - }); - } - - - - return responseJSON; - } - - public JSONObject sendGet(MediaServer mediaServerItem, String api, Map<String, Object> param) { - OkHttpClient client = getClient(); - - if (mediaServerItem == null) { - return null; - } - JSONObject responseJSON = null; - StringBuilder stringBuffer = new StringBuilder(); - stringBuffer.append(String.format("http://%s:%s/index/api/%s", mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api)); - if (param != null && !param.keySet().isEmpty()) { - stringBuffer.append("?secret=").append(mediaServerItem.getSecret()).append("&"); - int index = 1; - for (String key : param.keySet()){ - if (param.get(key) != null) { - stringBuffer.append(key + "=" + param.get(key)); - if (index < param.size()) { - stringBuffer.append("&"); - } - } - index++; - } - } - String url = stringBuffer.toString(); - logger.info("[璁块棶ABL]锛� {}", url); - Request request = new Request.Builder() - .get() - .url(url) - .build(); - try { - Response response = client.newCall(request).execute(); - if (response.isSuccessful()) { - ResponseBody responseBody = response.body(); - if (responseBody != null) { - String responseStr = responseBody.string(); - responseJSON = JSON.parseObject(responseStr); - } - }else { - response.close(); - Objects.requireNonNull(response.body()).close(); - } - } catch (ConnectException e) { - logger.error(String.format("杩炴帴ABL澶辫触: %s, %s", e.getCause().getMessage(), e.getMessage())); - logger.info("璇锋鏌edia閰嶇疆骞剁‘璁BL宸插惎鍔�..."); - }catch (IOException e) { - logger.error(String.format("[ %s ]璇锋眰澶辫触: %s", url, e.getMessage())); - } - - - - return responseJSON; - } - - public void sendGetForImg(MediaServer mediaServerItem, String api, Map<String, Object> params, String targetPath, String fileName) { - String url = String.format("http://%s:%s/index/api/%s", mediaServerItem.getIp(), mediaServerItem.getHttpPort(), api); - HttpUrl parseUrl = HttpUrl.parse(url); - if (parseUrl == null) { - return; - } - HttpUrl.Builder httpBuilder = parseUrl.newBuilder(); - - httpBuilder.addQueryParameter("secret", mediaServerItem.getSecret()); - if (params != null) { - for (Map.Entry<String, Object> param : params.entrySet()) { - httpBuilder.addQueryParameter(param.getKey(), param.getValue().toString()); - } - } - - Request request = new Request.Builder() - .url(httpBuilder.build()) - .build(); - logger.info(request.toString()); - try { - OkHttpClient client = getClient(); - Response response = client.newCall(request).execute(); - if (response.isSuccessful()) { - if (targetPath != null) { - File snapFolder = new File(targetPath); - if (!snapFolder.exists()) { - if (!snapFolder.mkdirs()) { - logger.warn("{}璺緞鍒涘缓澶辫触", snapFolder.getAbsolutePath()); - } - - } - File snapFile = new File(targetPath + File.separator + fileName); - FileOutputStream outStream = new FileOutputStream(snapFile); - - outStream.write(Objects.requireNonNull(response.body()).bytes()); - outStream.flush(); - outStream.close(); - } else { - logger.error(String.format("[ %s ]璇锋眰澶辫触: %s %s", url, response.code(), response.message())); - } - } else { - logger.error(String.format("[ %s ]璇锋眰澶辫触: %s %s", url, response.code(), response.message())); - } - Objects.requireNonNull(response.body()).close(); - } catch (ConnectException e) { - logger.error(String.format("杩炴帴ABL澶辫触: %s, %s", e.getCause().getMessage(), e.getMessage())); - logger.info("璇锋鏌edia閰嶇疆骞剁‘璁BL宸插惎鍔�..."); - } catch (IOException e) { - logger.error(String.format("[ %s ]璇锋眰澶辫触: %s", url, e.getMessage())); - } - } - - - public Integer openRtpServer(MediaServer mediaServer, String app, String stream, int payload, Integer port, Integer tcpMode, Integer disableAudio) { - Map<String, Object> param = new HashMap<>(); - param.put("vhost", "_defaultVhost_"); - param.put("app", app); - param.put("stream_id", stream); - param.put("payload", payload); - if (port != null) { - param.put("port", port); - } - if (tcpMode != null) { - param.put("enable_tcp", tcpMode); - } - if (disableAudio != null) { - param.put("disableAudio", disableAudio); - } - - JSONObject jsonObject = sendPost(mediaServer, "openRtpServer", param, null); - if (jsonObject.getInteger("code") == 0) { - return jsonObject.getInteger("port"); - }else { - return 0; - } - } - - public JSONObject closeStreams(MediaServer mediaServerItem, String app, String stream) { - Map<String, Object> param = new HashMap<>(); - param.put("vhost", "__defaultVhost__"); - param.put("app", app); - param.put("stream", stream); - param.put("force", 1); - return sendPost(mediaServerItem, "close_streams",param, null); - } - - public JSONObject getServerConfig(MediaServer mediaServerItem){ - return sendPost(mediaServerItem, "getServerConfig",null, null); - } - - public JSONObject setConfigParamValue(MediaServer mediaServerItem, String key, Object value){ - Map<String, Object> param = new HashMap<>(); - param.put("key", key); - param.put("value", value); - return sendGet(mediaServerItem,"setConfigParamValue", param); - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblServerConfig.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblServerConfig.java deleted file mode 100644 index dc0edec..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblServerConfig.java +++ /dev/null @@ -1,812 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean; - -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; - -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.Map; - -public class AblServerConfig { - - @ConfigKeyId("secret") - private String secret; - - @ConfigKeyId("ServerIP") - private String serverIp; - - @ConfigKeyId("mediaServerID") - private String mediaServerId; - - @ConfigKeyId("hook_enable") - private Integer hookEnable; - - @ConfigKeyId("enable_audio") - private Integer enableAudio; - - @ConfigKeyId("httpServerPort") - private Integer httpServerPort; - - @ConfigKeyId("rtspPort") - private Integer rtspPort; - - @ConfigKeyId("rtmpPort") - private Integer rtmpPort; - - @ConfigKeyId("httpFlvPort") - private Integer httpFlvPort; - - @ConfigKeyId("hls_enable") - private Integer hlsEnable; - - @ConfigKeyId("hlsPort") - private Integer hlsPort; - - @ConfigKeyId("wsPort") - private Integer wsPort; - - @ConfigKeyId("mp4Port") - private Integer mp4Port; - - @ConfigKeyId("ps_tsRecvPort") - private Integer psTsRecvPort; - - @ConfigKeyId("hlsCutType") - private Integer hlsCutType; - - @ConfigKeyId("h265CutType") - private Integer h265CutType; - - @ConfigKeyId("RecvThreadCount") - private Integer RecvThreadCount; - - @ConfigKeyId("SendThreadCount") - private Integer SendThreadCount; - - @ConfigKeyId("GB28181RtpTCPHeadType") - private Integer GB28181RtpTCPHeadType; - - @ConfigKeyId("ReConnectingCount") - private Integer ReConnectingCount; - - @ConfigKeyId("maxTimeNoOneWatch") - private Integer maxTimeNoOneWatch; - - @ConfigKeyId("pushEnable_mp4") - private Integer pushEnableMp4; - - @ConfigKeyId("fileSecond") - private Integer fileSecond; - - @ConfigKeyId("fileKeepMaxTime") - private Integer fileKeepMaxTime; - - @ConfigKeyId("httpDownloadSpeed") - private Integer httpDownloadSpeed; - - @ConfigKeyId("RecordReplayThread") - private Integer RecordReplayThread; - - @ConfigKeyId("convertMaxObject") - private Integer convertMaxObject; - - @ConfigKeyId("version") - private String version; - - @ConfigKeyId("recordPath") - private String recordPath; - - @ConfigKeyId("picturePath") - private String picturePath; - - @ConfigKeyId("noneReaderDuration") - private Integer noneReaderDuration; - - @ConfigKeyId("on_server_started") - private String onServerStarted; - - @ConfigKeyId("on_server_keepalive") - private String onServerKeepalive; - - @ConfigKeyId("on_play") - private String onPlay; - - @ConfigKeyId("on_publish") - private String onPublish; - - @ConfigKeyId("on_stream_arrive") - private String onStreamArrive; - - @ConfigKeyId("on_stream_not_arrive") - private String onStreamNotArrive; - - @ConfigKeyId("on_stream_none_reader") - private String onStreamNoneReader; - - @ConfigKeyId("on_stream_disconnect") - private String onStreamDisconnect; - - @ConfigKeyId("on_stream_not_found") - private String onStreamNotFound; - - @ConfigKeyId("on_record_mp4") - private String onRecordMp4; - - @ConfigKeyId("on_delete_record_mp4") - private String onDeleteRecordMp4; - - @ConfigKeyId("on_record_progress") - private String onRecordProgress; - - @ConfigKeyId("on_record_ts") - private String onRecordTs; - - @ConfigKeyId("enable_GetFileDuration") - private Integer enableGetFileDuration; - - @ConfigKeyId("keepaliveDuration") - private Integer keepaliveDuration; - - @ConfigKeyId("captureReplayType") - private Integer captureReplayType; - - @ConfigKeyId("pictureMaxCount") - private Integer pictureMaxCount; - - @ConfigKeyId("videoFileFormat") - private Integer videoFileFormat; - - @ConfigKeyId("MaxDiconnectTimeoutSecond") - private Integer maxDiconnectTimeoutSecond; - - @ConfigKeyId("G711ConvertAAC") - private Integer g711ConvertAAC; - - @ConfigKeyId("filterVideo_enable") - private Integer filterVideoEnable; - - @ConfigKeyId("filterVideo_text") - private String filterVideoText; - - @ConfigKeyId("FilterFontSize") - private Integer filterFontSize; - - @ConfigKeyId("FilterFontColor") - private String filterFontColor; - - @ConfigKeyId("FilterFontLeft") - private Integer filterFontLeft; - - @ConfigKeyId("FilterFontTop") - private Integer filterFontTop; - - @ConfigKeyId("FilterFontAlpha") - private Double filterFontAlpha; - - @ConfigKeyId("convertOutWidth") - private Integer convertOutWidth; - - @ConfigKeyId("convertOutHeight") - private Integer convertOutHeight; - - @ConfigKeyId("convertOutBitrate") - private Integer convertOutBitrate; - - @ConfigKeyId("flvPlayAddMute") - private Integer flvPlayAddMute; - - @ConfigKeyId("gb28181LibraryUse") - private Integer gb28181LibraryUse; - - @ConfigKeyId("rtc.listening-ip") - private String rtcListeningIp; - - @ConfigKeyId("rtc.listening-port") - private Integer rtcListeningIpPort; - - @ConfigKeyId("rtc.external-ip") - private String rtcExternalIp; - - @ConfigKeyId("rtc.realm") - private String rtcRealm; - - @ConfigKeyId("rtc.user") - private String rtcUser; - - @ConfigKeyId("rtc.min-port") - private Integer rtcMinPort; - - @ConfigKeyId("rtc.max-port") - private Integer rtcMaxPort; - - public static AblServerConfig getInstance(JSONArray jsonArray) { - if (jsonArray == null || jsonArray.isEmpty()) { - return null; - } - AblServerConfig ablServerConfig = new AblServerConfig(); - Field[] fields = AblServerConfig.class.getDeclaredFields(); - Map<String, Field> fieldMap = new HashMap<>(); - for (Field field : fields) { - if (field.isAnnotationPresent(ConfigKeyId.class)) { - ConfigKeyId configKeyId = field.getAnnotation(ConfigKeyId.class); - fieldMap.put(configKeyId.value(), field); - } - } - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - if (jsonObject == null) { - continue; - } - for (String key : fieldMap.keySet()) { - if (jsonObject.containsKey(key)) { - Field field = fieldMap.get(key); - field.setAccessible(true); - try { - field.set(ablServerConfig, jsonObject.getObject(key, fieldMap.get(key).getType())); - } catch (IllegalAccessException e) {} - } - } - } - return ablServerConfig; - } - - public String getSecret() { - return secret; - } - - public void setSecret(String secret) { - this.secret = secret; - } - - public String getServerIp() { - return serverIp; - } - - public void setServerIp(String serverIp) { - this.serverIp = serverIp; - } - - public String getMediaServerId() { - return mediaServerId; - } - - public void setMediaServerId(String mediaServerId) { - this.mediaServerId = mediaServerId; - } - - public Integer getHookEnable() { - return hookEnable; - } - - public void setHookEnable(Integer hookEnable) { - this.hookEnable = hookEnable; - } - - public Integer getEnableAudio() { - return enableAudio; - } - - public void setEnableAudio(Integer enableAudio) { - this.enableAudio = enableAudio; - } - - public Integer getHttpServerPort() { - return httpServerPort; - } - - public void setHttpServerPort(Integer httpServerPort) { - this.httpServerPort = httpServerPort; - } - - public Integer getRtspPort() { - return rtspPort; - } - - public void setRtspPort(Integer rtspPort) { - this.rtspPort = rtspPort; - } - - public Integer getRtmpPort() { - return rtmpPort; - } - - public void setRtmpPort(Integer rtmpPort) { - this.rtmpPort = rtmpPort; - } - - public Integer getHttpFlvPort() { - return httpFlvPort; - } - - public void setHttpFlvPort(Integer httpFlvPort) { - this.httpFlvPort = httpFlvPort; - } - - public Integer getHlsEnable() { - return hlsEnable; - } - - public void setHlsEnable(Integer hlsEnable) { - this.hlsEnable = hlsEnable; - } - - public Integer getHlsPort() { - return hlsPort; - } - - public void setHlsPort(Integer hlsPort) { - this.hlsPort = hlsPort; - } - - public Integer getWsPort() { - return wsPort; - } - - public void setWsPort(Integer wsPort) { - this.wsPort = wsPort; - } - - public Integer getMp4Port() { - return mp4Port; - } - - public void setMp4Port(Integer mp4Port) { - this.mp4Port = mp4Port; - } - - public Integer getPsTsRecvPort() { - return psTsRecvPort; - } - - public void setPsTsRecvPort(Integer psTsRecvPort) { - this.psTsRecvPort = psTsRecvPort; - } - - public Integer getHlsCutType() { - return hlsCutType; - } - - public void setHlsCutType(Integer hlsCutType) { - this.hlsCutType = hlsCutType; - } - - public Integer getH265CutType() { - return h265CutType; - } - - public void setH265CutType(Integer h265CutType) { - this.h265CutType = h265CutType; - } - - public Integer getRecvThreadCount() { - return RecvThreadCount; - } - - public void setRecvThreadCount(Integer recvThreadCount) { - RecvThreadCount = recvThreadCount; - } - - public Integer getSendThreadCount() { - return SendThreadCount; - } - - public void setSendThreadCount(Integer sendThreadCount) { - SendThreadCount = sendThreadCount; - } - - public Integer getGB28181RtpTCPHeadType() { - return GB28181RtpTCPHeadType; - } - - public void setGB28181RtpTCPHeadType(Integer GB28181RtpTCPHeadType) { - this.GB28181RtpTCPHeadType = GB28181RtpTCPHeadType; - } - - public Integer getReConnectingCount() { - return ReConnectingCount; - } - - public void setReConnectingCount(Integer reConnectingCount) { - ReConnectingCount = reConnectingCount; - } - - public Integer getMaxTimeNoOneWatch() { - return maxTimeNoOneWatch; - } - - public void setMaxTimeNoOneWatch(Integer maxTimeNoOneWatch) { - this.maxTimeNoOneWatch = maxTimeNoOneWatch; - } - - public Integer getPushEnableMp4() { - return pushEnableMp4; - } - - public void setPushEnableMp4(Integer pushEnableMp4) { - this.pushEnableMp4 = pushEnableMp4; - } - - public Integer getFileSecond() { - return fileSecond; - } - - public void setFileSecond(Integer fileSecond) { - this.fileSecond = fileSecond; - } - - public Integer getFileKeepMaxTime() { - return fileKeepMaxTime; - } - - public void setFileKeepMaxTime(Integer fileKeepMaxTime) { - this.fileKeepMaxTime = fileKeepMaxTime; - } - - public Integer getHttpDownloadSpeed() { - return httpDownloadSpeed; - } - - public void setHttpDownloadSpeed(Integer httpDownloadSpeed) { - this.httpDownloadSpeed = httpDownloadSpeed; - } - - public Integer getRecordReplayThread() { - return RecordReplayThread; - } - - public void setRecordReplayThread(Integer recordReplayThread) { - RecordReplayThread = recordReplayThread; - } - - public Integer getConvertMaxObject() { - return convertMaxObject; - } - - public void setConvertMaxObject(Integer convertMaxObject) { - this.convertMaxObject = convertMaxObject; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getRecordPath() { - return recordPath; - } - - public void setRecordPath(String recordPath) { - this.recordPath = recordPath; - } - - public String getPicturePath() { - return picturePath; - } - - public void setPicturePath(String picturePath) { - this.picturePath = picturePath; - } - - public Integer getNoneReaderDuration() { - return noneReaderDuration; - } - - public void setNoneReaderDuration(Integer noneReaderDuration) { - this.noneReaderDuration = noneReaderDuration; - } - - public String getOnServerStarted() { - return onServerStarted; - } - - public void setOnServerStarted(String onServerStarted) { - this.onServerStarted = onServerStarted; - } - - public String getOnServerKeepalive() { - return onServerKeepalive; - } - - public void setOnServerKeepalive(String onServerKeepalive) { - this.onServerKeepalive = onServerKeepalive; - } - - public String getOnPlay() { - return onPlay; - } - - public void setOnPlay(String onPlay) { - this.onPlay = onPlay; - } - - public String getOnPublish() { - return onPublish; - } - - public void setOnPublish(String onPublish) { - this.onPublish = onPublish; - } - - public String getOnStreamArrive() { - return onStreamArrive; - } - - public void setOnStreamArrive(String onStreamArrive) { - this.onStreamArrive = onStreamArrive; - } - - public String getOnStreamNotArrive() { - return onStreamNotArrive; - } - - public void setOnStreamNotArrive(String onStreamNotArrive) { - this.onStreamNotArrive = onStreamNotArrive; - } - - public String getOnStreamNoneReader() { - return onStreamNoneReader; - } - - public void setOnStreamNoneReader(String onStreamNoneReader) { - this.onStreamNoneReader = onStreamNoneReader; - } - - public String getOnStreamDisconnect() { - return onStreamDisconnect; - } - - public void setOnStreamDisconnect(String onStreamDisconnect) { - this.onStreamDisconnect = onStreamDisconnect; - } - - public String getOnDeleteRecordMp4() { - return onDeleteRecordMp4; - } - - public void setOnDeleteRecordMp4(String onDeleteRecordMp4) { - this.onDeleteRecordMp4 = onDeleteRecordMp4; - } - - public String getOnRecordProgress() { - return onRecordProgress; - } - - public void setOnRecordProgress(String onRecordProgress) { - this.onRecordProgress = onRecordProgress; - } - - public String getOnRecordTs() { - return onRecordTs; - } - - public void setOnRecordTs(String onRecordTs) { - this.onRecordTs = onRecordTs; - } - - public Integer getEnableGetFileDuration() { - return enableGetFileDuration; - } - - public void setEnableGetFileDuration(Integer enableGetFileDuration) { - this.enableGetFileDuration = enableGetFileDuration; - } - - public Integer getKeepaliveDuration() { - return keepaliveDuration; - } - - public void setKeepaliveDuration(Integer keepaliveDuration) { - this.keepaliveDuration = keepaliveDuration; - } - - public Integer getCaptureReplayType() { - return captureReplayType; - } - - public void setCaptureReplayType(Integer captureReplayType) { - this.captureReplayType = captureReplayType; - } - - public Integer getVideoFileFormat() { - return videoFileFormat; - } - - public void setVideoFileFormat(Integer videoFileFormat) { - this.videoFileFormat = videoFileFormat; - } - - public Integer getMaxDiconnectTimeoutSecond() { - return maxDiconnectTimeoutSecond; - } - - public void setMaxDiconnectTimeoutSecond(Integer maxDiconnectTimeoutSecond) { - this.maxDiconnectTimeoutSecond = maxDiconnectTimeoutSecond; - } - - public Integer getG711ConvertAAC() { - return g711ConvertAAC; - } - - public void setG711ConvertAAC(Integer g711ConvertAAC) { - this.g711ConvertAAC = g711ConvertAAC; - } - - public Integer getFilterVideoEnable() { - return filterVideoEnable; - } - - public void setFilterVideoEnable(Integer filterVideoEnable) { - this.filterVideoEnable = filterVideoEnable; - } - - public String getFilterVideoText() { - return filterVideoText; - } - - public void setFilterVideoText(String filterVideoText) { - this.filterVideoText = filterVideoText; - } - - public Integer getFilterFontSize() { - return filterFontSize; - } - - public void setFilterFontSize(Integer filterFontSize) { - this.filterFontSize = filterFontSize; - } - - public String getFilterFontColor() { - return filterFontColor; - } - - public void setFilterFontColor(String filterFontColor) { - this.filterFontColor = filterFontColor; - } - - public Integer getFilterFontLeft() { - return filterFontLeft; - } - - public void setFilterFontLeft(Integer filterFontLeft) { - this.filterFontLeft = filterFontLeft; - } - - public Integer getFilterFontTop() { - return filterFontTop; - } - - public void setFilterFontTop(Integer filterFontTop) { - this.filterFontTop = filterFontTop; - } - - public Double getFilterFontAlpha() { - return filterFontAlpha; - } - - public void setFilterFontAlpha(Double filterFontAlpha) { - this.filterFontAlpha = filterFontAlpha; - } - - public Integer getConvertOutWidth() { - return convertOutWidth; - } - - public void setConvertOutWidth(Integer convertOutWidth) { - this.convertOutWidth = convertOutWidth; - } - - public Integer getConvertOutHeight() { - return convertOutHeight; - } - - public void setConvertOutHeight(Integer convertOutHeight) { - this.convertOutHeight = convertOutHeight; - } - - public Integer getConvertOutBitrate() { - return convertOutBitrate; - } - - public void setConvertOutBitrate(Integer convertOutBitrate) { - this.convertOutBitrate = convertOutBitrate; - } - - public Integer getFlvPlayAddMute() { - return flvPlayAddMute; - } - - public void setFlvPlayAddMute(Integer flvPlayAddMute) { - this.flvPlayAddMute = flvPlayAddMute; - } - - public Integer getGb28181LibraryUse() { - return gb28181LibraryUse; - } - - public void setGb28181LibraryUse(Integer gb28181LibraryUse) { - this.gb28181LibraryUse = gb28181LibraryUse; - } - - public String getRtcListeningIp() { - return rtcListeningIp; - } - - public void setRtcListeningIp(String rtcListeningIp) { - this.rtcListeningIp = rtcListeningIp; - } - - public Integer getRtcListeningIpPort() { - return rtcListeningIpPort; - } - - public void setRtcListeningIpPort(Integer rtcListeningIpPort) { - this.rtcListeningIpPort = rtcListeningIpPort; - } - - public String getRtcExternalIp() { - return rtcExternalIp; - } - - public void setRtcExternalIp(String rtcExternalIp) { - this.rtcExternalIp = rtcExternalIp; - } - - public String getRtcRealm() { - return rtcRealm; - } - - public void setRtcRealm(String rtcRealm) { - this.rtcRealm = rtcRealm; - } - - public String getRtcUser() { - return rtcUser; - } - - public void setRtcUser(String rtcUser) { - this.rtcUser = rtcUser; - } - - public Integer getRtcMinPort() { - return rtcMinPort; - } - - public void setRtcMinPort(Integer rtcMinPort) { - this.rtcMinPort = rtcMinPort; - } - - public Integer getRtcMaxPort() { - return rtcMaxPort; - } - - public void setRtcMaxPort(Integer rtcMaxPort) { - this.rtcMaxPort = rtcMaxPort; - } - - public String getOnRecordMp4() { - return onRecordMp4; - } - - public void setOnRecordMp4(String onRecordMp4) { - this.onRecordMp4 = onRecordMp4; - } - - public Integer getPictureMaxCount() { - return pictureMaxCount; - } - - public void setPictureMaxCount(Integer pictureMaxCount) { - this.pictureMaxCount = pictureMaxCount; - } - - public String getOnStreamNotFound() { - return onStreamNotFound; - } - - public void setOnStreamNotFound(String onStreamNotFound) { - this.onStreamNotFound = onStreamNotFound; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblUrls.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblUrls.java deleted file mode 100644 index 42e05a0..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/AblUrls.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean; - -public class AblUrls { - private String rtsp; - private String rtmp; - private String httpFlv; - private String wsFlv; - private String httpMp4; - private String httpHls; - - public String getRtsp() { - return rtsp; - } - - public void setRtsp(String rtsp) { - this.rtsp = rtsp; - } - - public String getRtmp() { - return rtmp; - } - - public void setRtmp(String rtmp) { - this.rtmp = rtmp; - } - - public String getHttpFlv() { - return httpFlv; - } - - public void setHttpFlv(String httpFlv) { - this.httpFlv = httpFlv; - } - - public String getWsFlv() { - return wsFlv; - } - - public void setWsFlv(String wsFlv) { - this.wsFlv = wsFlv; - } - - public String getHttpMp4() { - return httpMp4; - } - - public void setHttpMp4(String httpMp4) { - this.httpMp4 = httpMp4; - } - - public String getHttpHls() { - return httpHls; - } - - public void setHttpHls(String httpHls) { - this.httpHls = httpHls; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ConfigKeyId.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ConfigKeyId.java deleted file mode 100644 index 244bb94..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/ConfigKeyId.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean; - -import java.lang.annotation.*; - -@Target(ElementType.FIELD) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface ConfigKeyId { - String value(); -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/ABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/ABLHookParam.java deleted file mode 100644 index 796935e..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/ABLHookParam.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean.hook; - -public class ABLHookParam { - private String mediaServerId; - - /** - * 搴旂敤鍚� - */ - private String app; - - /** - * 娴乮d - */ - private String stream; - - /** - * 濯掍綋娴佹潵婧愮紪鍙凤紝鍙互鏍规嵁杩欎釜key杩涜鍏抽棴娴佸獟浣� 鍙互璋冪敤delMediaStream鎴朿lose_streams 鍑芥暟杩涜鍏抽棴 - */ - private String key; - - /** - * 濯掍綋娴佹潵婧愮綉缁滅紪鍙凤紝鍙弬鑰冮檮琛� - */ - private Integer networkType; - - public String getMediaServerId() { - return mediaServerId; - } - - public void setMediaServerId(String mediaServerId) { - this.mediaServerId = mediaServerId; - } - - public String getApp() { - return app; - } - - public void setApp(String app) { - this.app = app; - } - - public String getStream() { - return stream; - } - - public void setStream(String stream) { - this.stream = stream; - } - - public String getKey() { - return key; - } - - public void setKey(String key) { - this.key = key; - } - - public Integer getNetworkType() { - return networkType; - } - - public void setNetworkType(Integer networkType) { - this.networkType = networkType; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnPlayABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnPlayABLHookParam.java deleted file mode 100644 index af18210..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnPlayABLHookParam.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean.hook; - -public class OnPlayABLHookParam extends ABLHookParam{ - private String ip; - private Integer port; - private String params; - - public String getIp() { - return ip; - } - - public void setIp(String ip) { - this.ip = ip; - } - - public Integer getPort() { - return port; - } - - public void setPort(Integer port) { - this.port = port; - } - - public String getParams() { - return params; - } - - public void setParams(String params) { - this.params = params; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnPublishABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnPublishABLHookParam.java deleted file mode 100644 index 11da274..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnPublishABLHookParam.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean.hook; - -public class OnPublishABLHookParam extends ABLHookParam{ - private String ip; - private Integer port; - private String params; - - public String getIp() { - return ip; - } - - public void setIp(String ip) { - this.ip = ip; - } - - public Integer getPort() { - return port; - } - - public void setPort(Integer port) { - this.port = port; - } - - public String getParams() { - return params; - } - - public void setParams(String params) { - this.params = params; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnRecordMp4ABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnRecordMp4ABLHookParam.java deleted file mode 100644 index 0fb819f..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnRecordMp4ABLHookParam.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean.hook; - -public class OnRecordMp4ABLHookParam extends ABLHookParam{ - private String fileName; - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnRecordProgressABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnRecordProgressABLHookParam.java deleted file mode 100644 index 8f70781..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnRecordProgressABLHookParam.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean.hook; - -public class OnRecordProgressABLHookParam extends OnRecordMp4ABLHookParam{ - private Integer currentFileDuration; - private Integer TotalVideoDuration; - - public Integer getCurrentFileDuration() { - return currentFileDuration; - } - - public void setCurrentFileDuration(Integer currentFileDuration) { - this.currentFileDuration = currentFileDuration; - } - - public Integer getTotalVideoDuration() { - return TotalVideoDuration; - } - - public void setTotalVideoDuration(Integer totalVideoDuration) { - TotalVideoDuration = totalVideoDuration; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnServerKeepaliveABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnServerKeepaliveABLHookParam.java deleted file mode 100644 index ea1ac97..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnServerKeepaliveABLHookParam.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean.hook; - -public class OnServerKeepaliveABLHookParam { - private String localipAddress; - private String mediaServerId; - private String datetime; - - - public String getLocalipAddress() { - return localipAddress; - } - - public void setLocalipAddress(String localipAddress) { - this.localipAddress = localipAddress; - } - - public String getMediaServerId() { - return mediaServerId; - } - - public void setMediaServerId(String mediaServerId) { - this.mediaServerId = mediaServerId; - } - - public String getDatetime() { - return datetime; - } - - public void setDatetime(String datetime) { - this.datetime = datetime; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnServerStaredABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnServerStaredABLHookParam.java deleted file mode 100644 index a9ec44c..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnServerStaredABLHookParam.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean.hook; - -public class OnServerStaredABLHookParam { - private String localipAddress; - private String mediaServerId; - private String datetime; - - - public String getLocalipAddress() { - return localipAddress; - } - - public void setLocalipAddress(String localipAddress) { - this.localipAddress = localipAddress; - } - - public String getMediaServerId() { - return mediaServerId; - } - - public void setMediaServerId(String mediaServerId) { - this.mediaServerId = mediaServerId; - } - - public String getDatetime() { - return datetime; - } - - public void setDatetime(String datetime) { - this.datetime = datetime; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnStreamArriveABLHookParam.java b/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnStreamArriveABLHookParam.java deleted file mode 100644 index efe9b12..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/bean/hook/OnStreamArriveABLHookParam.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.bean.hook; - -import com.genersoft.iot.vmp.media.abl.bean.AblUrls; - -/** - * 娴佸埌鏉ョ殑浜嬩欢 - */ -public class OnStreamArriveABLHookParam extends ABLHookParam{ - - - - /** - * 鎺ㄦ祦閴存潈Id - */ - private String callId; - - /** - * 鐘舵�� - */ - private Boolean status; - - - /** - * - */ - private Boolean enableHls; - - - /** - * - */ - private Boolean transcodingStatus; - - - /** - * - */ - private String sourceURL; - - - /** - * - */ - private Integer readerCount; - - - /** - * - */ - private Integer noneReaderDuration; - - - /** - * - */ - private String videoCodec; - - - /** - * - */ - private Integer videoFrameSpeed; - - - /** - * - */ - private Integer width; - - - /** - * - */ - private Integer height; - - - /** - * - */ - private Integer videoBitrate; - - - /** - * - */ - private String audioCodec; - - - /** - * - */ - private Integer audioChannels; - - - /** - * - */ - private Integer audioSampleRate; - - - /** - * - */ - private Integer audioBitrate; - - - private AblUrls url; - - - public String getCallId() { - return callId; - } - - public void setCallId(String callId) { - this.callId = callId; - } - - public Boolean getStatus() { - return status; - } - - public void setStatus(Boolean status) { - this.status = status; - } - - public Boolean getEnableHls() { - return enableHls; - } - - public void setEnableHls(Boolean enableHls) { - this.enableHls = enableHls; - } - - public Boolean getTranscodingStatus() { - return transcodingStatus; - } - - public void setTranscodingStatus(Boolean transcodingStatus) { - this.transcodingStatus = transcodingStatus; - } - - public String getSourceURL() { - return sourceURL; - } - - public void setSourceURL(String sourceURL) { - this.sourceURL = sourceURL; - } - - public Integer getReaderCount() { - return readerCount; - } - - public void setReaderCount(Integer readerCount) { - this.readerCount = readerCount; - } - - public Integer getNoneReaderDuration() { - return noneReaderDuration; - } - - public void setNoneReaderDuration(Integer noneReaderDuration) { - this.noneReaderDuration = noneReaderDuration; - } - - public String getVideoCodec() { - return videoCodec; - } - - public void setVideoCodec(String videoCodec) { - this.videoCodec = videoCodec; - } - - public Integer getVideoFrameSpeed() { - return videoFrameSpeed; - } - - public void setVideoFrameSpeed(Integer videoFrameSpeed) { - this.videoFrameSpeed = videoFrameSpeed; - } - - public Integer getWidth() { - return width; - } - - public void setWidth(Integer width) { - this.width = width; - } - - public Integer getHeight() { - return height; - } - - public void setHeight(Integer height) { - this.height = height; - } - - public Integer getVideoBitrate() { - return videoBitrate; - } - - public void setVideoBitrate(Integer videoBitrate) { - this.videoBitrate = videoBitrate; - } - - public String getAudioCodec() { - return audioCodec; - } - - public void setAudioCodec(String audioCodec) { - this.audioCodec = audioCodec; - } - - public Integer getAudioChannels() { - return audioChannels; - } - - public void setAudioChannels(Integer audioChannels) { - this.audioChannels = audioChannels; - } - - public Integer getAudioSampleRate() { - return audioSampleRate; - } - - public void setAudioSampleRate(Integer audioSampleRate) { - this.audioSampleRate = audioSampleRate; - } - - public Integer getAudioBitrate() { - return audioBitrate; - } - - public void setAudioBitrate(Integer audioBitrate) { - this.audioBitrate = audioBitrate; - } - - public AblUrls getUrl() { - return url; - } - - public void setUrl(AblUrls url) { - this.url = url; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/event/HookAblServerKeepaliveEvent.java b/src/main/java/com/genersoft/iot/vmp/media/abl/event/HookAblServerKeepaliveEvent.java deleted file mode 100644 index 74465e4..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/event/HookAblServerKeepaliveEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.event; - -import com.genersoft.iot.vmp.media.bean.MediaServer; -import org.springframework.context.ApplicationEvent; - -/** - * zlm 蹇冭烦浜嬩欢 - */ -public class HookAblServerKeepaliveEvent extends ApplicationEvent { - - public HookAblServerKeepaliveEvent(Object source) { - super(source); - } - - private MediaServer mediaServerItem; - - public MediaServer getMediaServerItem() { - return mediaServerItem; - } - - public void setMediaServerItem(MediaServer mediaServerItem) { - this.mediaServerItem = mediaServerItem; - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/media/abl/event/HookAblServerStartEvent.java b/src/main/java/com/genersoft/iot/vmp/media/abl/event/HookAblServerStartEvent.java deleted file mode 100644 index 12bdac0..0000000 --- a/src/main/java/com/genersoft/iot/vmp/media/abl/event/HookAblServerStartEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.genersoft.iot.vmp.media.abl.event; - -import com.genersoft.iot.vmp.media.bean.MediaServer; -import org.springframework.context.ApplicationEvent; - -/** - * zlm server_start浜嬩欢 - */ -public class HookAblServerStartEvent extends ApplicationEvent { - - public HookAblServerStartEvent(Object source) { - super(source); - } - - private MediaServer mediaServerItem; - - public MediaServer getMediaServerItem() { - return mediaServerItem; - } - - public void setMediaServerItem(MediaServer mediaServerItem) { - this.mediaServerItem = mediaServerItem; - } -} -- Gitblit v1.8.0