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 16 @Schema(description = "流ID")
17 17 private String stream;
18 18 @Schema(description = "流媒体服务ID")
19   - private String media_server_id;
  19 + private String mediaServerId;
20 20 @Schema(description = "拉流地址")
21 21 private String url;
22 22 @Schema(description = "拉流地址")
23   - private String src_url;
  23 + private String srcUrl;
24 24 @Schema(description = "目标地址")
25   - private String dst_url;
  25 + private String dstUrl;
26 26 @Schema(description = "超时时间")
27   - private int timeout_ms;
  27 + private int timeoutMs;
28 28 @Schema(description = "ffmpeg模板KEY")
29   - private String ffmpeg_cmd_key;
  29 + private String ffmpegCmdKey;
30 30 @Schema(description = "rtsp拉流时,拉流方式,0:tcp,1:udp,2:组播")
31   - private String rtp_type;
  31 + private String rtpType;
32 32 @Schema(description = "是否启用")
33 33 private boolean enable;
34 34 @Schema(description = "是否启用音频")
35   - private boolean enable_audio;
  35 + private boolean enableAudio;
36 36 @Schema(description = "是否启用MP4")
37   - private boolean enable_mp4;
  37 + private boolean enableMp4;
38 38 @Schema(description = "是否 无人观看时删除")
39   - private boolean enable_remove_none_reader;
  39 + private boolean enableRemoveNoneReader;
40 40  
41 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 44 public String getType() {
47 45 return type;
... ... @@ -73,12 +71,12 @@ public class StreamProxyItem extends GbStream {
73 71  
74 72 @Override
75 73 public String getMediaServerId() {
76   - return media_server_id;
  74 + return mediaServerId;
77 75 }
78 76  
79 77 @Override
80 78 public void setMediaServerId(String mediaServerId) {
81   - this.media_server_id = mediaServerId;
  79 + this.mediaServerId = mediaServerId;
82 80 }
83 81  
84 82 public String getUrl() {
... ... @@ -90,43 +88,43 @@ public class StreamProxyItem extends GbStream {
90 88 }
91 89  
92 90 public String getSrcUrl() {
93   - return src_url;
  91 + return srcUrl;
94 92 }
95 93  
96 94 public void setSrcUrl(String src_url) {
97   - this.src_url = src_url;
  95 + this.srcUrl = src_url;
98 96 }
99 97  
100 98 public String getDstUrl() {
101   - return dst_url;
  99 + return dstUrl;
102 100 }
103 101  
104 102 public void setDstUrl(String dst_url) {
105   - this.dst_url = dst_url;
  103 + this.dstUrl = dst_url;
106 104 }
107 105  
108 106 public int getTimeoutMs() {
109   - return timeout_ms;
  107 + return timeoutMs;
110 108 }
111 109  
112 110 public void setTimeoutMs(int timeout_ms) {
113   - this.timeout_ms = timeout_ms;
  111 + this.timeoutMs = timeout_ms;
114 112 }
115 113  
116 114 public String getFfmpegCmdKey() {
117   - return ffmpeg_cmd_key;
  115 + return ffmpegCmdKey;
118 116 }
119 117  
120 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 122 public String getRtpType() {
125   - return rtp_type;
  123 + return rtpType;
126 124 }
127 125  
128 126 public void setRtpType(String rtp_type) {
129   - this.rtp_type = rtp_type;
  127 + this.rtpType = rtp_type;
130 128 }
131 129  
132 130 public boolean isEnable() {
... ... @@ -138,44 +136,36 @@ public class StreamProxyItem extends GbStream {
138 136 }
139 137  
140 138 public boolean isEnableMp4() {
141   - return enable_mp4;
  139 + return enableMp4;
142 140 }
143 141  
144 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 146 public boolean isEnableRemoveNoneReader() {
159   - return enable_remove_none_reader;
  147 + return enableRemoveNoneReader;
160 148 }
161 149  
162 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 154 public boolean isEnableDisableNoneReader() {
167   - return enable_disable_none_reader;
  155 + return enableDisableNoneReader;
168 156 }
169 157  
170 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 162 public boolean isEnableAudio() {
175   - return enable_audio;
  163 + return enableAudio;
176 164 }
177 165  
178 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 13  
14 14 @Insert("INSERT INTO wvp_stream_proxy (type, name, app, stream,media_server_id, url, src_url, dst_url, " +
15 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 19 int add(StreamProxyItem streamProxyDto);
20 20  
21 21 @Update("UPDATE wvp_stream_proxy " +
... ... @@ -25,17 +25,17 @@ public interface StreamProxyMapper {
25 25 "stream=#{stream}," +
26 26 "url=#{url}, " +
27 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 34 "enable=#{enable}, " +
35 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 39 "WHERE app=#{app} AND stream=#{stream}")
40 40 int update(StreamProxyItem streamProxyDto);
41 41  
... ...
web_src/src/components/StreamProxyList.vue
... ... @@ -22,8 +22,8 @@
22 22 {{scope.row.url}}
23 23 </el-tag>
24 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 27 </el-tag>
28 28 </div>
29 29 </template>
... ... @@ -197,7 +197,7 @@
197 197 this.$refs.onvifEdit.openDialog(res.data.data, (url)=>{
198 198 if (url != null) {
199 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 203 }else {
... ...
web_src/src/components/dialog/StreamProxyEdit.vue
... ... @@ -33,13 +33,13 @@
33 33 <el-form-item label="拉流地址" prop="url" v-if="proxyParam.type=='default'">
34 34 <el-input v-model="proxyParam.url" clearable></el-input>
35 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 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 41 </el-form-item>
42   - <el-form-item label="节点选择" prop="rtp_type">
  42 + <el-form-item label="节点选择" prop="rtpType">
43 43 <el-select
44 44 v-model="proxyParam.mediaServerId"
45 45 @change="mediaServerIdChange"
... ... @@ -54,10 +54,9 @@
54 54 </el-option>
55 55 </el-select>
56 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 58 <el-select
60   - v-model="proxyParam.ffmpeg_cmd_key"
  59 + v-model="proxyParam.ffmpegCmdKey"
61 60 style="width: 100%"
62 61 placeholder="请选择FFmpeg命令模板"
63 62 >
... ... @@ -72,9 +71,9 @@
72 71 <el-form-item label="国标编码" prop="gbId">
73 72 <el-input v-model="proxyParam.gbId" placeholder="设置国标编码可推送到国标" clearable></el-input>
74 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 75 <el-select
77   - v-model="proxyParam.rtp_type"
  76 + v-model="proxyParam.rtpType"
78 77 style="width: 100%"
79 78 placeholder="请选择拉流方式"
80 79 >
... ... @@ -83,10 +82,10 @@
83 82 <el-option label="组播" value="2"></el-option>
84 83 </el-select>
85 84 </el-form-item>
86   - <el-form-item label="无人观看" prop="rtp_type" >
  85 + <el-form-item label="无人观看" prop="rtpType" >
87 86 <el-select
88 87 @change="noneReaderHandler"
89   - v-model="proxyParam.none_reader"
  88 + v-model="proxyParam.noneReader"
90 89 style="width: 100%"
91 90 placeholder="请选择无人观看的处理方式"
92 91 >
... ... @@ -98,8 +97,8 @@
98 97 <el-form-item label="其他选项">
99 98 <div style="float: left;">
100 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 102 </div>
104 103  
105 104 </el-form-item>
... ... @@ -155,17 +154,17 @@ export default {
155 154 app: null,
156 155 stream: null,
157 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 160 gbId: null,
162   - rtp_type: null,
  161 + rtpType: null,
163 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 168 platformGbId: null,
170 169 mediaServerId: null,
171 170 },
... ... @@ -177,9 +176,9 @@ export default {
177 176 app: [{ required: true, message: "请输入应用名", trigger: "blur" }],
178 177 stream: [{ required: true, message: "请输入流ID", trigger: "blur" }],
179 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 188 this.listChangeCallback = callback;
190 189 if (proxyParam != null) {
191 190 this.proxyParam = proxyParam;
192   - this.proxyParam.none_reader = null;
  191 + this.proxyParam.noneReader = null;
193 192 }
194 193  
195 194 let that = this;
... ... @@ -218,7 +217,7 @@ export default {
218 217 }
219 218 }).then(function (res) {
220 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 221 }).catch(function (error) {
223 222 console.log(error);
224 223 });
... ... @@ -275,15 +274,15 @@ export default {
275 274 }
276 275 },
277 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 },
... ...