Commit 2ef411129756224061b9d44f3fd998a73db8b0a8

Authored by 648540858
1 parent b7d85a27

修复拉流代理的ffmpeg代理方式

src/main/java/com/genersoft/iot/vmp/media/zlm/dto/StreamProxyItem.java
@@ -16,32 +16,30 @@ public class StreamProxyItem extends GbStream { @@ -16,32 +16,30 @@ public class StreamProxyItem extends GbStream {
16 @Schema(description = "流ID") 16 @Schema(description = "流ID")
17 private String stream; 17 private String stream;
18 @Schema(description = "流媒体服务ID") 18 @Schema(description = "流媒体服务ID")
19 - private String media_server_id; 19 + private String mediaServerId;
20 @Schema(description = "拉流地址") 20 @Schema(description = "拉流地址")
21 private String url; 21 private String url;
22 @Schema(description = "拉流地址") 22 @Schema(description = "拉流地址")
23 - private String src_url; 23 + private String srcUrl;
24 @Schema(description = "目标地址") 24 @Schema(description = "目标地址")
25 - private String dst_url; 25 + private String dstUrl;
26 @Schema(description = "超时时间") 26 @Schema(description = "超时时间")
27 - private int timeout_ms; 27 + private int timeoutMs;
28 @Schema(description = "ffmpeg模板KEY") 28 @Schema(description = "ffmpeg模板KEY")
29 - private String ffmpeg_cmd_key; 29 + private String ffmpegCmdKey;
30 @Schema(description = "rtsp拉流时,拉流方式,0:tcp,1:udp,2:组播") 30 @Schema(description = "rtsp拉流时,拉流方式,0:tcp,1:udp,2:组播")
31 - private String rtp_type; 31 + private String rtpType;
32 @Schema(description = "是否启用") 32 @Schema(description = "是否启用")
33 private boolean enable; 33 private boolean enable;
34 @Schema(description = "是否启用音频") 34 @Schema(description = "是否启用音频")
35 - private boolean enable_audio; 35 + private boolean enableAudio;
36 @Schema(description = "是否启用MP4") 36 @Schema(description = "是否启用MP4")
37 - private boolean enable_mp4; 37 + private boolean enableMp4;
38 @Schema(description = "是否 无人观看时删除") 38 @Schema(description = "是否 无人观看时删除")
39 - private boolean enable_remove_none_reader; 39 + private boolean enableRemoveNoneReader;
40 40
41 @Schema(description = "是否 无人观看时自动停用") 41 @Schema(description = "是否 无人观看时自动停用")
42 - private boolean enable_disable_none_reader;  
43 - @Schema(description = "创建时间")  
44 - private String create_time; 42 + private boolean enableDisableNoneReader;
45 43
46 public String getType() { 44 public String getType() {
47 return type; 45 return type;
@@ -73,12 +71,12 @@ public class StreamProxyItem extends GbStream { @@ -73,12 +71,12 @@ public class StreamProxyItem extends GbStream {
73 71
74 @Override 72 @Override
75 public String getMediaServerId() { 73 public String getMediaServerId() {
76 - return media_server_id; 74 + return mediaServerId;
77 } 75 }
78 76
79 @Override 77 @Override
80 public void setMediaServerId(String mediaServerId) { 78 public void setMediaServerId(String mediaServerId) {
81 - this.media_server_id = mediaServerId; 79 + this.mediaServerId = mediaServerId;
82 } 80 }
83 81
84 public String getUrl() { 82 public String getUrl() {
@@ -90,43 +88,43 @@ public class StreamProxyItem extends GbStream { @@ -90,43 +88,43 @@ public class StreamProxyItem extends GbStream {
90 } 88 }
91 89
92 public String getSrcUrl() { 90 public String getSrcUrl() {
93 - return src_url; 91 + return srcUrl;
94 } 92 }
95 93
96 public void setSrcUrl(String src_url) { 94 public void setSrcUrl(String src_url) {
97 - this.src_url = src_url; 95 + this.srcUrl = src_url;
98 } 96 }
99 97
100 public String getDstUrl() { 98 public String getDstUrl() {
101 - return dst_url; 99 + return dstUrl;
102 } 100 }
103 101
104 public void setDstUrl(String dst_url) { 102 public void setDstUrl(String dst_url) {
105 - this.dst_url = dst_url; 103 + this.dstUrl = dst_url;
106 } 104 }
107 105
108 public int getTimeoutMs() { 106 public int getTimeoutMs() {
109 - return timeout_ms; 107 + return timeoutMs;
110 } 108 }
111 109
112 public void setTimeoutMs(int timeout_ms) { 110 public void setTimeoutMs(int timeout_ms) {
113 - this.timeout_ms = timeout_ms; 111 + this.timeoutMs = timeout_ms;
114 } 112 }
115 113
116 public String getFfmpegCmdKey() { 114 public String getFfmpegCmdKey() {
117 - return ffmpeg_cmd_key; 115 + return ffmpegCmdKey;
118 } 116 }
119 117
120 public void setFfmpegCmdKey(String ffmpeg_cmd_key) { 118 public void setFfmpegCmdKey(String ffmpeg_cmd_key) {
121 - this.ffmpeg_cmd_key = ffmpeg_cmd_key; 119 + this.ffmpegCmdKey = ffmpeg_cmd_key;
122 } 120 }
123 121
124 public String getRtpType() { 122 public String getRtpType() {
125 - return rtp_type; 123 + return rtpType;
126 } 124 }
127 125
128 public void setRtpType(String rtp_type) { 126 public void setRtpType(String rtp_type) {
129 - this.rtp_type = rtp_type; 127 + this.rtpType = rtp_type;
130 } 128 }
131 129
132 public boolean isEnable() { 130 public boolean isEnable() {
@@ -138,44 +136,36 @@ public class StreamProxyItem extends GbStream { @@ -138,44 +136,36 @@ public class StreamProxyItem extends GbStream {
138 } 136 }
139 137
140 public boolean isEnableMp4() { 138 public boolean isEnableMp4() {
141 - return enable_mp4; 139 + return enableMp4;
142 } 140 }
143 141
144 public void setEnableMp4(boolean enable_mp4) { 142 public void setEnableMp4(boolean enable_mp4) {
145 - this.enable_mp4 = enable_mp4;  
146 - }  
147 -  
148 - @Override  
149 - public String getCreateTime() {  
150 - return create_time;  
151 - }  
152 -  
153 - @Override  
154 - public void setCreateTime(String create_time) {  
155 - this.create_time = create_time; 143 + this.enableMp4 = enable_mp4;
156 } 144 }
157 145
158 public boolean isEnableRemoveNoneReader() { 146 public boolean isEnableRemoveNoneReader() {
159 - return enable_remove_none_reader; 147 + return enableRemoveNoneReader;
160 } 148 }
161 149
162 public void setEnableRemoveNoneReader(boolean enable_remove_none_reader) { 150 public void setEnableRemoveNoneReader(boolean enable_remove_none_reader) {
163 - this.enable_remove_none_reader = enable_remove_none_reader; 151 + this.enableRemoveNoneReader = enable_remove_none_reader;
164 } 152 }
165 153
166 public boolean isEnableDisableNoneReader() { 154 public boolean isEnableDisableNoneReader() {
167 - return enable_disable_none_reader; 155 + return enableDisableNoneReader;
168 } 156 }
169 157
170 public void setEnableDisableNoneReader(boolean enable_disable_none_reader) { 158 public void setEnableDisableNoneReader(boolean enable_disable_none_reader) {
171 - this.enable_disable_none_reader = enable_disable_none_reader; 159 + this.enableDisableNoneReader = enable_disable_none_reader;
172 } 160 }
173 161
174 public boolean isEnableAudio() { 162 public boolean isEnableAudio() {
175 - return enable_audio; 163 + return enableAudio;
176 } 164 }
177 165
178 public void setEnableAudio(boolean enable_audio) { 166 public void setEnableAudio(boolean enable_audio) {
179 - this.enable_audio = enable_audio; 167 + this.enableAudio = enable_audio;
180 } 168 }
  169 +
  170 +
181 } 171 }
src/main/java/com/genersoft/iot/vmp/storager/dao/StreamProxyMapper.java
@@ -13,9 +13,9 @@ public interface StreamProxyMapper { @@ -13,9 +13,9 @@ public interface StreamProxyMapper {
13 13
14 @Insert("INSERT INTO wvp_stream_proxy (type, name, app, stream,media_server_id, url, src_url, dst_url, " + 14 @Insert("INSERT INTO wvp_stream_proxy (type, name, app, stream,media_server_id, url, src_url, dst_url, " +
15 "timeout_ms, ffmpeg_cmd_key, rtp_type, enable_audio, enable_mp4, enable, status, enable_remove_none_reader, enable_disable_none_reader, create_time) VALUES" + 15 "timeout_ms, ffmpeg_cmd_key, rtp_type, enable_audio, enable_mp4, enable, status, enable_remove_none_reader, enable_disable_none_reader, create_time) VALUES" +
16 - "(#{type}, #{name}, #{app}, #{stream}, #{mediaServerId}, #{url}, #{src_url}, #{dst_url}, " +  
17 - "#{timeout_ms}, #{ffmpeg_cmd_key}, #{rtp_type}, #{enable_audio}, #{enable_mp4}, #{enable}, #{status}, " +  
18 - "#{enable_remove_none_reader}, #{enable_disable_none_reader}, #{createTime} )") 16 + "(#{type}, #{name}, #{app}, #{stream}, #{mediaServerId}, #{url}, #{srcUrl}, #{dstUrl}, " +
  17 + "#{timeoutMs}, #{ffmpegCmdKey}, #{rtpType}, #{enableAudio}, #{enableMp4}, #{enable}, #{status}, " +
  18 + "#{enableRemoveNoneReader}, #{enableDisableNoneReader}, #{createTime} )")
19 int add(StreamProxyItem streamProxyDto); 19 int add(StreamProxyItem streamProxyDto);
20 20
21 @Update("UPDATE wvp_stream_proxy " + 21 @Update("UPDATE wvp_stream_proxy " +
@@ -25,17 +25,17 @@ public interface StreamProxyMapper { @@ -25,17 +25,17 @@ public interface StreamProxyMapper {
25 "stream=#{stream}," + 25 "stream=#{stream}," +
26 "url=#{url}, " + 26 "url=#{url}, " +
27 "media_server_id=#{mediaServerId}, " + 27 "media_server_id=#{mediaServerId}, " +
28 - "src_url=#{src_url}," +  
29 - "dst_url=#{dst_url}, " +  
30 - "timeout_ms=#{timeout_ms}, " +  
31 - "ffmpeg_cmd_key=#{ffmpeg_cmd_key}, " +  
32 - "rtp_type=#{rtp_type}, " +  
33 - "enable_audio=#{enable_audio}, " + 28 + "src_url=#{srcUrl}," +
  29 + "dst_url=#{dstUrl}, " +
  30 + "timeout_ms=#{timeoutMs}, " +
  31 + "ffmpeg_cmd_key=#{ffmpegCmdKey}, " +
  32 + "rtp_type=#{rtpType}, " +
  33 + "enable_audio=#{enableAudio}, " +
34 "enable=#{enable}, " + 34 "enable=#{enable}, " +
35 "status=#{status}, " + 35 "status=#{status}, " +
36 - "enable_remove_none_reader=#{enable_remove_none_reader}, " +  
37 - "enable_disable_none_reader=#{enable_disable_none_reader}, " +  
38 - "enable_mp4=#{enable_mp4} " + 36 + "enable_remove_none_reader=#{enableRemoveNoneReader}, " +
  37 + "enable_disable_none_reader=#{enableDisableNoneReader}, " +
  38 + "enable_mp4=#{enableMp4} " +
39 "WHERE app=#{app} AND stream=#{stream}") 39 "WHERE app=#{app} AND stream=#{stream}")
40 int update(StreamProxyItem streamProxyDto); 40 int update(StreamProxyItem streamProxyDto);
41 41
web_src/src/components/StreamProxyList.vue
@@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@
22 {{scope.row.url}} 22 {{scope.row.url}}
23 </el-tag> 23 </el-tag>
24 <el-tag size="medium" v-if="scope.row.type != 'default'"> 24 <el-tag size="medium" v-if="scope.row.type != 'default'">
25 - <i class="cpoy-btn el-icon-document-copy" title="点击拷贝" v-clipboard="scope.row.src_url" @success="$message({type:'success', message:'成功拷贝到粘贴板'})"></i>  
26 - {{scope.row.src_url}} 25 + <i class="cpoy-btn el-icon-document-copy" title="点击拷贝" v-clipboard="scope.row.srcUrl" @success="$message({type:'success', message:'成功拷贝到粘贴板'})"></i>
  26 + {{scope.row.srcUrl}}
27 </el-tag> 27 </el-tag>
28 </div> 28 </div>
29 </template> 29 </template>
@@ -197,7 +197,7 @@ @@ -197,7 +197,7 @@
197 this.$refs.onvifEdit.openDialog(res.data.data, (url)=>{ 197 this.$refs.onvifEdit.openDialog(res.data.data, (url)=>{
198 if (url != null) { 198 if (url != null) {
199 this.$refs.onvifEdit.close(); 199 this.$refs.onvifEdit.close();
200 - this.$refs.streamProxyEdit.openDialog({type: "default", url: url, src_url: url}, this.initData()) 200 + this.$refs.streamProxyEdit.openDialog({type: "default", url: url, srcUrl: url}, this.initData())
201 } 201 }
202 }) 202 })
203 }else { 203 }else {
web_src/src/components/dialog/StreamProxyEdit.vue
@@ -33,13 +33,13 @@ @@ -33,13 +33,13 @@
33 <el-form-item label="拉流地址" prop="url" v-if="proxyParam.type=='default'"> 33 <el-form-item label="拉流地址" prop="url" v-if="proxyParam.type=='default'">
34 <el-input v-model="proxyParam.url" clearable></el-input> 34 <el-input v-model="proxyParam.url" clearable></el-input>
35 </el-form-item> 35 </el-form-item>
36 - <el-form-item label="拉流地址" prop="src_url" v-if="proxyParam.type=='ffmpeg'">  
37 - <el-input v-model="proxyParam.src_url" clearable></el-input> 36 + <el-form-item label="拉流地址" prop="srcUrl" v-if="proxyParam.type=='ffmpeg'">
  37 + <el-input v-model="proxyParam.srcUrl" clearable></el-input>
38 </el-form-item> 38 </el-form-item>
39 - <el-form-item label="超时时间:毫秒" prop="timeout_ms" v-if="proxyParam.type=='ffmpeg'">  
40 - <el-input v-model="proxyParam.timeout_ms" clearable></el-input> 39 + <el-form-item label="超时时间:毫秒" prop="timeoutMs" v-if="proxyParam.type=='ffmpeg'">
  40 + <el-input v-model="proxyParam.timeoutMs" clearable></el-input>
41 </el-form-item> 41 </el-form-item>
42 - <el-form-item label="节点选择" prop="rtp_type"> 42 + <el-form-item label="节点选择" prop="rtpType">
43 <el-select 43 <el-select
44 v-model="proxyParam.mediaServerId" 44 v-model="proxyParam.mediaServerId"
45 @change="mediaServerIdChange" 45 @change="mediaServerIdChange"
@@ -54,10 +54,9 @@ @@ -54,10 +54,9 @@
54 </el-option> 54 </el-option>
55 </el-select> 55 </el-select>
56 </el-form-item> 56 </el-form-item>
57 - <el-form-item label="FFmpeg命令模板" prop="ffmpeg_cmd_key" v-if="proxyParam.type=='ffmpeg'">  
58 -<!-- <el-input v-model="proxyParam.ffmpeg_cmd_key" clearable></el-input>--> 57 + <el-form-item label="FFmpeg命令模板" prop="ffmpegCmdKey" v-if="proxyParam.type=='ffmpeg'">
59 <el-select 58 <el-select
60 - v-model="proxyParam.ffmpeg_cmd_key" 59 + v-model="proxyParam.ffmpegCmdKey"
61 style="width: 100%" 60 style="width: 100%"
62 placeholder="请选择FFmpeg命令模板" 61 placeholder="请选择FFmpeg命令模板"
63 > 62 >
@@ -72,9 +71,9 @@ @@ -72,9 +71,9 @@
72 <el-form-item label="国标编码" prop="gbId"> 71 <el-form-item label="国标编码" prop="gbId">
73 <el-input v-model="proxyParam.gbId" placeholder="设置国标编码可推送到国标" clearable></el-input> 72 <el-input v-model="proxyParam.gbId" placeholder="设置国标编码可推送到国标" clearable></el-input>
74 </el-form-item> 73 </el-form-item>
75 - <el-form-item label="拉流方式" prop="rtp_type" v-if="proxyParam.type=='default'"> 74 + <el-form-item label="拉流方式" prop="rtpType" v-if="proxyParam.type=='default'">
76 <el-select 75 <el-select
77 - v-model="proxyParam.rtp_type" 76 + v-model="proxyParam.rtpType"
78 style="width: 100%" 77 style="width: 100%"
79 placeholder="请选择拉流方式" 78 placeholder="请选择拉流方式"
80 > 79 >
@@ -83,10 +82,10 @@ @@ -83,10 +82,10 @@
83 <el-option label="组播" value="2"></el-option> 82 <el-option label="组播" value="2"></el-option>
84 </el-select> 83 </el-select>
85 </el-form-item> 84 </el-form-item>
86 - <el-form-item label="无人观看" prop="rtp_type" > 85 + <el-form-item label="无人观看" prop="rtpType" >
87 <el-select 86 <el-select
88 @change="noneReaderHandler" 87 @change="noneReaderHandler"
89 - v-model="proxyParam.none_reader" 88 + v-model="proxyParam.noneReader"
90 style="width: 100%" 89 style="width: 100%"
91 placeholder="请选择无人观看的处理方式" 90 placeholder="请选择无人观看的处理方式"
92 > 91 >
@@ -98,8 +97,8 @@ @@ -98,8 +97,8 @@
98 <el-form-item label="其他选项"> 97 <el-form-item label="其他选项">
99 <div style="float: left;"> 98 <div style="float: left;">
100 <el-checkbox label="启用" v-model="proxyParam.enable" ></el-checkbox> 99 <el-checkbox label="启用" v-model="proxyParam.enable" ></el-checkbox>
101 - <el-checkbox label="开启音频" v-model="proxyParam.enable_audio" ></el-checkbox>  
102 - <el-checkbox label="录制" v-model="proxyParam.enable_mp4" ></el-checkbox> 100 + <el-checkbox label="开启音频" v-model="proxyParam.enableAudio" ></el-checkbox>
  101 + <el-checkbox label="录制" v-model="proxyParam.enableMp4" ></el-checkbox>
103 </div> 102 </div>
104 103
105 </el-form-item> 104 </el-form-item>
@@ -155,17 +154,17 @@ export default { @@ -155,17 +154,17 @@ export default {
155 app: null, 154 app: null,
156 stream: null, 155 stream: null,
157 url: "", 156 url: "",
158 - src_url: null,  
159 - timeout_ms: null,  
160 - ffmpeg_cmd_key: null, 157 + srcUrl: null,
  158 + timeoutMs: null,
  159 + ffmpegCmdKey: null,
161 gbId: null, 160 gbId: null,
162 - rtp_type: null, 161 + rtpType: null,
163 enable: true, 162 enable: true,
164 - enable_audio: true,  
165 - enable_mp4: false,  
166 - none_reader: null,  
167 - enable_remove_none_reader: false,  
168 - enable_disable_none_reader: false, 163 + enableAudio: true,
  164 + enableMp4: false,
  165 + noneReader: null,
  166 + enableRemoveNoneReader: false,
  167 + enableDisableNoneReader: false,
169 platformGbId: null, 168 platformGbId: null,
170 mediaServerId: null, 169 mediaServerId: null,
171 }, 170 },
@@ -177,9 +176,9 @@ export default { @@ -177,9 +176,9 @@ export default {
177 app: [{ required: true, message: "请输入应用名", trigger: "blur" }], 176 app: [{ required: true, message: "请输入应用名", trigger: "blur" }],
178 stream: [{ required: true, message: "请输入流ID", trigger: "blur" }], 177 stream: [{ required: true, message: "请输入流ID", trigger: "blur" }],
179 url: [{ required: true, message: "请输入要代理的流", trigger: "blur" }], 178 url: [{ required: true, message: "请输入要代理的流", trigger: "blur" }],
180 - src_url: [{ required: true, message: "请输入要代理的流", trigger: "blur" }],  
181 - timeout_ms: [{ required: true, message: "请输入FFmpeg推流成功超时时间", trigger: "blur" }],  
182 - ffmpeg_cmd_key: [{ required: false, message: "请输入FFmpeg命令参数模板(可选)", trigger: "blur" }], 179 + srcUrl: [{ required: true, message: "请输入要代理的流", trigger: "blur" }],
  180 + timeoutMs: [{ required: true, message: "请输入FFmpeg推流成功超时时间", trigger: "blur" }],
  181 + ffmpegCmdKey: [{ required: false, message: "请输入FFmpeg命令参数模板(可选)", trigger: "blur" }],
183 }, 182 },
184 }; 183 };
185 }, 184 },
@@ -189,7 +188,7 @@ export default { @@ -189,7 +188,7 @@ export default {
189 this.listChangeCallback = callback; 188 this.listChangeCallback = callback;
190 if (proxyParam != null) { 189 if (proxyParam != null) {
191 this.proxyParam = proxyParam; 190 this.proxyParam = proxyParam;
192 - this.proxyParam.none_reader = null; 191 + this.proxyParam.noneReader = null;
193 } 192 }
194 193
195 let that = this; 194 let that = this;
@@ -218,7 +217,7 @@ export default { @@ -218,7 +217,7 @@ export default {
218 } 217 }
219 }).then(function (res) { 218 }).then(function (res) {
220 that.ffmpegCmdList = res.data.data; 219 that.ffmpegCmdList = res.data.data;
221 - that.proxyParam.ffmpeg_cmd_key = Object.keys(res.data.data)[0]; 220 + that.proxyParam.ffmpegCmdKey = Object.keys(res.data.data)[0];
222 }).catch(function (error) { 221 }).catch(function (error) {
223 console.log(error); 222 console.log(error);
224 }); 223 });
@@ -275,15 +274,15 @@ export default { @@ -275,15 +274,15 @@ export default {
275 } 274 }
276 }, 275 },
277 noneReaderHandler: function() { 276 noneReaderHandler: function() {
278 - if (this.proxyParam.none_reader === null || this.proxyParam.none_reader === "0") {  
279 - this.proxyParam.enable_disable_none_reader = false;  
280 - this.proxyParam.enable_remove_none_reader = false;  
281 - }else if (this.proxyParam.none_reader === "1"){  
282 - this.proxyParam.enable_disable_none_reader = true;  
283 - this.proxyParam.enable_remove_none_reader = false;  
284 - }else if (this.proxyParam.none_reader ==="2"){  
285 - this.proxyParam.enable_disable_none_reader = false;  
286 - this.proxyParam.enable_remove_none_reader = true; 277 + if (this.proxyParam.noneReader === null || this.proxyParam.noneReader === "0") {
  278 + this.proxyParam.enableDisableNoneReader = false;
  279 + this.proxyParam.enableRemoveNoneReader = false;
  280 + }else if (this.proxyParam.noneReader === "1"){
  281 + this.proxyParam.enableDisableNoneReader = true;
  282 + this.proxyParam.enableRemoveNoneReader = false;
  283 + }else if (this.proxyParam.noneReader ==="2"){
  284 + this.proxyParam.enableDisableNoneReader = false;
  285 + this.proxyParam.enableRemoveNoneReader = true;
287 } 286 }
288 }, 287 },
289 }, 288 },