Explorar el Código

dev to suda 2023-04-14

donggaosheng hace 2 años
padre
commit
af411b6d98

+ 66 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/bean/MediaStream.java

@@ -0,0 +1,66 @@
+package com.zd.alg.iot.vmp.gb28181.bean;
+
+import com.zd.common.core.utils.StringUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+/**
+ * <p>媒体流参数模型类</p>
+ *
+ * @author linft
+ * @version 1.0
+ * @date 2/7/2023
+ */
+public class MediaStream {
+
+
+    /**
+     * 视频描述f参数
+     * @param dpi
+     * @return
+     */
+    public static String getMediaStreamF(Integer dpi){
+        if (dpi == null || StringUtils.isEmpty(mediaStreamFParams.get(dpi))) {
+            return mediaStreamFParams.get(720);
+        }
+        return mediaStreamFParams.get(dpi);
+    }
+
+    /**
+     * 按分辨率获取码流(主码流、子码流、第三码流)
+     * @param dpi
+     * @return
+     */
+    public static String getMediaStreamA(Integer dpi){
+        if (dpi != null) {
+            if (dpi > 720) {
+                return "stream:0";
+            } else if (dpi < 720){
+                return "stream:2";
+            }
+        }
+        return "stream:1";
+    }
+
+    /**
+     * GB/T28181视频流f参数
+     * f字段:f=v/码格式/分辨率/帧数/码率类型/码率大小 a/编码格式/码率大小/采样率
+     * v(video)后为视频参数
+     *  --编码格式:1-MPEG-4, 2-H.264, 3-SVAV, 4-3GP
+     *  --分辨率:1-QCIF(176×144), 2-CIF(352×288), 3-4CIF(704×576), 4-D1(720*576), 5-720P, 6-1080P/I
+     *  --帧数:0~99 (海康:0~25)
+     *  --码率类型:1-固定码率, 2-可变码率
+     *  --码率大小(Kbps): 0~100000 (海康:256~16384)
+     * a(aud) 后为音频参数
+     *  --编码格式:1-G.711, 2-G.723.1, 3-G729, 4-722.1
+     *  --码率大小:
+     *  --编码码率:1-5.3kbps, 2-6.3kbps, 3-8kbps, 4-16kbps
+     */
+    protected static Map<Integer,String> mediaStreamFParams = new HashMap<Integer,String>(){{
+        put(288,"v/2/2/20/1/256 a///");
+        put(480,"v/2/3/18/1/256 a///");
+        put(576,"v/2/4/18/1/512 a///");
+        put(720,"v/2/5/16/1/512 a///");
+        put(1080,"v/2/6/15/1/1024 a///");
+    }};
+}

+ 3 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java

@@ -91,7 +91,7 @@ public interface ISIPCommander {
 	 * @param device  视频设备
 	 * @param channelId  预览通道
 	 */
-	void playStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent);
+	void playStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent,Integer dpi);
 
 	/**
 	 * 请求回放视频流
@@ -101,7 +101,7 @@ public interface ISIPCommander {
 	 * @param startTime 开始时间,格式要求:yyyy-MM-dd HH:mm:ss
 	 * @param endTime 结束时间,格式要求:yyyy-MM-dd HH:mm:ss
 	 */
-	void playbackStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInf, Device device, String channelId, String startTime, String endTime, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent);
+	void playbackStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInf, Device device, String channelId, String startTime, String endTime, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent,Integer dpi);
 
 	/**
 	 * 请求历史媒体下载
@@ -112,7 +112,7 @@ public interface ISIPCommander {
 	 * @param endTime 结束时间,格式要求:yyyy-MM-dd HH:mm:ss
 	 * @param downloadSpeed 下载倍速参数
 	 */
-	void downloadStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, String startTime, String endTime, String downloadSpeed, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent);
+	void downloadStreamCmd(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, String startTime, String endTime, String downloadSpeed, ZLMHttpHookSubscribe.Event event, SipSubscribe.Event errorEvent,Integer dpi);
 
 	/**
 	 * 视频流停止

+ 1 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java

@@ -3,6 +3,7 @@ package com.zd.alg.iot.vmp.gb28181.transmit.cmd.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.zd.alg.iot.vmp.conf.SipConfig;
 import com.zd.alg.iot.vmp.conf.UserSetup;
+import com.zd.alg.iot.vmp.gb28181.bean.MediaStream;
 import com.zd.alg.iot.vmp.service.IMediaServerService;
 import com.zd.alg.iot.vmp.service.bean.SSRCInfo;
 import com.zd.alg.iot.vmp.storager.IRedisCatchStorage;