From cebea64d36bac571aa72b0f19cf3d7955175e959 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期六, 19 十二月 2020 22:07:54 +0800
Subject: [PATCH] update readme
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 77 +++++++++++++++++++++++++++-----------
1 files changed, 55 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index 96b4af2..03031f0 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -4,13 +4,16 @@
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.MediaServerConfig;
+import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import com.genersoft.iot.vmp.utils.IpUtil;
+import com.genersoft.iot.vmp.vmanager.service.IPlayService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -44,10 +47,19 @@
private SIPCommander cmder;
@Autowired
+ private IPlayService playService;
+
+ @Autowired
private IVideoManagerStorager storager;
@Autowired
private ZLMRESTfulUtils zlmresTfulUtils;
+
+ @Autowired
+ private ZLMHttpHookSubscribe subscribe;
+
+ @Value("${media.autoApplyPlay}")
+ private boolean autoApplyPlay;
@Value("${media.ip}")
private String mediaIp;
@@ -129,19 +141,9 @@
String app = json.getString("app");
String streamId = json.getString("id");
+ ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_publish, json);
+ if (subscribe != null) subscribe.response(json);
-// String ssrc = String.format("%10d", Integer.parseInt(streamId, 16)); // ZLM 瑕佹眰澶у啓涓旈浣嶈ˉ闆�
- String ssrc = new DecimalFormat("0000000000").format(Integer.parseInt(streamId, 16));
- StreamInfo streamInfo = storager.queryPlayBySSRC(ssrc);
- if ("rtp".equals(app) && streamInfo != null ) {
- MediaServerConfig mediaInfo = storager.getMediaInfo();
- streamInfo.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));
- streamInfo.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));
- streamInfo.setRtmp(String.format("rtmp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtmpPort(), streamId));
- streamInfo.setHls(String.format("http://%s:%s/rtp/%s/hls.m3u8", mediaInfo.getLocalIP(), mediaInfo.getHttpPort(), streamId));
- streamInfo.setRtsp(String.format("rtsp://%s:%s/rtp/%s", mediaInfo.getLocalIP(), mediaInfo.getRtspPort(), streamId));
- storager.startPlay(streamInfo);
- }
// TODO Auto-generated method stub
@@ -247,11 +249,14 @@
String app = json.getString("app");
String streamId = json.getString("stream");
boolean regist = json.getBoolean("regist");
-// String ssrc = String.format("%10d", Integer.parseInt(streamId, 16)); // ZLM 瑕佹眰澶у啓涓旈浣嶈ˉ闆�
- String ssrc = new DecimalFormat("0000000000").format(Integer.parseInt(streamId, 16));
- StreamInfo streamInfo = storager.queryPlayBySSRC(ssrc);
+ StreamInfo streamInfo = storager.queryPlayByStreamId(streamId);
if ("rtp".equals(app) && !regist ) {
- storager.stopPlay(streamInfo);
+ if (streamInfo!=null){
+ storager.stopPlay(streamInfo);
+ }else{
+ streamInfo = storager.queryPlaybackByStreamId(streamId);
+ storager.stopPlayback(streamInfo);
+ }
}
@@ -273,11 +278,16 @@
logger.debug("ZLM HOOK on_stream_none_reader API璋冪敤锛屽弬鏁帮細" + json.toString());
}
- BigInteger bigint=new BigInteger(json.getString("stream"), 16);
- int numb=bigint.intValue();
- String ssrc = String.format("%010d", numb);
-
- cmder.streamByeCmd(ssrc);
+ String streamId = json.getString("stream");
+
+ cmder.streamByeCmd(streamId);
+ StreamInfo streamInfo = storager.queryPlayByStreamId(streamId);
+ if (streamInfo!=null){
+ storager.stopPlay(streamInfo);
+ }else{
+ streamInfo = storager.queryPlaybackByStreamId(streamId);
+ storager.stopPlayback(streamInfo);
+ }
JSONObject ret = new JSONObject();
ret.put("code", 0);
@@ -297,7 +307,30 @@
logger.debug("ZLM HOOK on_stream_not_found API璋冪敤锛屽弬鏁帮細" + json.toString());
}
// TODO Auto-generated method stub
-
+
+ if (autoApplyPlay) {
+ String app = json.getString("app");
+ String streamId = json.getString("stream");
+ if ("rtp".equals(app) && streamId.indexOf("gb_play") > -1) {
+ String[] s = streamId.split("_");
+ if (s.length == 4) {
+ String deviceId = s[2];
+ String channelId = s[3];
+ Device device = storager.queryVideoDevice(deviceId);
+ if (device != null) {
+ UUID uuid = UUID.randomUUID();
+ cmder.playStreamCmd(device, channelId, (JSONObject response) -> {
+ logger.info("鏀跺埌璁㈤槄娑堟伅锛� " + response.toJSONString());
+ playService.onPublishHandlerForPlay(response, deviceId, channelId, uuid.toString());
+ });
+ }
+
+ }
+
+ }
+
+ }
+
JSONObject ret = new JSONObject();
ret.put("code", 0);
ret.put("msg", "success");
--
Gitblit v1.8.0