视频拉流

This commit is contained in:
tangzh 2025-06-11 15:39:54 +08:00
parent d5c3d62d95
commit 7fd765d4b7
8 changed files with 49 additions and 78 deletions

View File

@ -52,7 +52,6 @@
<el-dialog :visible.sync="qrCodeVisible" width="500px"> <el-dialog :visible.sync="qrCodeVisible" width="500px">
<div style="text-align: center"><img :src="baseApi + '/file/image/' + qrCodeUrl" /></div> <div style="text-align: center"><img :src="baseApi + '/file/image/' + qrCodeUrl" /></div>
<div style="text-align: center;"><h4 style="text-align: center;">可以截图保存有效期只有一小时</h4></div>
</el-dialog> </el-dialog>
<!--表格渲染--> <!--表格渲染-->

View File

@ -17,20 +17,6 @@
</properties> </properties>
<dependencies> <dependencies>
<!-- FFmpeg 包装器 -->
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-all-deps</artifactId>
<version>3.3.1</version>
</dependency>
<!-- 视频流处理 -->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.6</version>
</dependency>
<!-- 代码生成模块 --> <!-- 代码生成模块 -->
<dependency> <dependency>
<groupId>me.zhengjie</groupId> <groupId>me.zhengjie</groupId>
@ -44,16 +30,9 @@
</exclusions> </exclusions>
</dependency> </dependency>
<!-- &lt;!&ndash; tools 模块包含了 common 和 logging 模块 &ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>me.zhengjie</groupId>-->
<!-- <artifactId>eladmin-tools</artifactId>-->
<!-- <version>1.1</version>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>me.zhengjie</groupId> <groupId>me.zhengjie</groupId>
<artifactId>eladmin-logging</artifactId> <artifactId>eladmin-flv</artifactId>
<version>1.1</version> <version>1.1</version>
</dependency> </dependency>

View File

@ -20,7 +20,7 @@ package me.zhengjie.modules.security.config.enums;
*/ */
public enum ErrorStatusEnum { public enum ErrorStatusEnum {
SDCP_PRINT_ERROR_DEFAULT(-1, "默认"), SDCP_PRINT_ERROR_DEFAULT(-1, "默认/断开"),
SDCP_PRINT_ERROR_NONE(0 ,"正常"), SDCP_PRINT_ERROR_NONE(0 ,"正常"),
SDCP_PRINT_ERROR_CHECKFILE(1 ,"文件校验失败"), SDCP_PRINT_ERROR_CHECKFILE(1 ,"文件校验失败"),
SDCP_PRINT_ERROR_DEVICE(2 ,"设备或加密出错"), SDCP_PRINT_ERROR_DEVICE(2 ,"设备或加密出错"),

View File

@ -5,7 +5,7 @@ package me.zhengjie.modules.security.config.enums;
*/ */
public enum PrintInfoStatusEnum { public enum PrintInfoStatusEnum {
SDCP_PRINT_STATUS_DEFAULT(-1, "默认"), SDCP_PRINT_STATUS_DEFAULT(-1, "默认/断开"),
SDCP_PRINT_STATUS_IDLE(0, "空闲"), SDCP_PRINT_STATUS_IDLE(0, "空闲"),
SDCP_PRINT_STATUS_HOMING(1,"归零中"), SDCP_PRINT_STATUS_HOMING(1,"归零中"),
SDCP_PRINT_STATUS_DROPPING(2,"下降中"), SDCP_PRINT_STATUS_DROPPING(2,"下降中"),

View File

@ -69,13 +69,13 @@ public class BusDevice implements Serializable {
@ApiModelProperty(value = "放置位置") @ApiModelProperty(value = "放置位置")
private String location; private String location;
@ApiModelProperty(value = "设备状态-1=默认/断开0=空闲1=任务中2=准备中3=铲件中)") @ApiModelProperty(value = "设备状态(-1默认/断开0空闲1任务中2准备中3铲件中)")
private Integer status; private Integer status;
@ApiModelProperty(value = "打印状态(-1默认0空闲1归零中2下降中3曝光中4抬升中5正在执行暂停动作中6已暂停7正在执行停止动作中8已停止9打印完成10文件检测中11加液中12铲件中)") @ApiModelProperty(value = "打印状态(-1默认/断开0空闲1归零中2下降中3曝光中4抬升中5正在执行暂停动作中6已暂停7正在执行停止动作中8已停止9打印完成10文件检测中11加液中12铲件中)")
private Integer printStatus; private Integer printStatus;
@ApiModelProperty(value = "异常状态(-1默认0正常1文件校验失败2设备或加密错误3打印准备过程出错4打印出错5加液失败6铲件失败7图片异物)") @ApiModelProperty(value = "异常状态(-1默认/断开0正常1文件校验失败2设备或加密错误3打印准备过程出错4打印出错5加液失败6铲件失败7图片异物)")
private Integer errorStatus; private Integer errorStatus;
@ApiModelProperty(value = "备注") @ApiModelProperty(value = "备注")

View File

@ -137,6 +137,8 @@ public class WebSocketSdcpServiceImpl extends WebSocketService {
return; return;
} }
WebSocketResDTO resDTO = JSON.parseObject(message, WebSocketResDTO.class); WebSocketResDTO resDTO = JSON.parseObject(message, WebSocketResDTO.class);
Map<String, Object> commandResult = new HashMap<>();
commandResult.put("deviceSn", deviceSn);
if (method == MethodEnum.response) { if (method == MethodEnum.response) {
// 指令响应消息 // 指令响应消息
WebSocketResData data = param.getData(); WebSocketResData data = param.getData();
@ -144,21 +146,16 @@ public class WebSocketSdcpServiceImpl extends WebSocketService {
// 指令-获取图片 // 指令-获取图片
if (cmd.equals(385)) { if (cmd.equals(385)) {
JSONObject cData = JSON.parseObject(data.getData().toString()); JSONObject cData = JSON.parseObject(data.getData().toString());
Map<String, Object> commandResult = new HashMap<>();
int Ack = Integer.parseInt(cData.get("Ack").toString()); int Ack = Integer.parseInt(cData.get("Ack").toString());
if (Ack == 0) { if (Ack == 0) {
commandResult.put("deviceSn", deviceSn);
commandResult.put("imageType", cData.get("ImageType")); commandResult.put("imageType", cData.get("ImageType"));
commandResult.put("imageData", cData.get("ImageData")); commandResult.put("imageData", cData.get("ImageData"));
sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "指令响应成功", MsgEnum.INFO))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "指令响应成功", MsgEnum.INFO)));
} else if (Ack == 1) { } else if (Ack == 1) {
commandResult.put("deviceSn", deviceSn);
sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "图片获取失败", MsgEnum.ERROR))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "图片获取失败", MsgEnum.ERROR)));
} else if (Ack == 2) { } else if (Ack == 2) {
commandResult.put("deviceSn", deviceSn);
sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "不支持该类型图片", MsgEnum.ERROR))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "不支持该类型图片", MsgEnum.ERROR)));
} else if (Ack == 3) { } else if (Ack == 3) {
commandResult.put("deviceSn", deviceSn);
sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "未知错误", MsgEnum.ERROR))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "未知错误", MsgEnum.ERROR)));
} }
} }
@ -166,19 +163,14 @@ public class WebSocketSdcpServiceImpl extends WebSocketService {
else if (cmd.equals(386)) { else if (cmd.equals(386)) {
JSONObject cData = JSON.parseObject(data.getData().toString()); JSONObject cData = JSON.parseObject(data.getData().toString());
int Ack = Integer.parseInt(cData.get("Ack").toString()); int Ack = Integer.parseInt(cData.get("Ack").toString());
Map<String, Object> commandResult = new HashMap<>();
if (Ack == 0) { if (Ack == 0) {
commandResult.put("deviceSn", deviceSn);
commandResult.put("videoUrl", cData.get("VideoUrl")); commandResult.put("videoUrl", cData.get("VideoUrl"));
sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "指令响应成功", MsgEnum.INFO))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "指令响应成功", MsgEnum.INFO)));
} else if (Ack == 1) { } else if (Ack == 1) {
commandResult.put("deviceSn", deviceSn);
sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "超过最大同时拉流限制", MsgEnum.ERROR))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "超过最大同时拉流限制", MsgEnum.ERROR)));
} else if (Ack == 2) { } else if (Ack == 2) {
commandResult.put("deviceSn", deviceSn);
sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "摄像头不存在", MsgEnum.ERROR))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "摄像头不存在", MsgEnum.ERROR)));
} else if (Ack == 3) { } else if (Ack == 3) {
commandResult.put("deviceSn", deviceSn);
sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "未知错误", MsgEnum.ERROR))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "未知错误", MsgEnum.ERROR)));
} }
} }
@ -192,7 +184,7 @@ public class WebSocketSdcpServiceImpl extends WebSocketService {
ErrorStatusEnum.SDCP_PRINT_ERROR_NONE, ErrorStatusEnum.SDCP_PRINT_ERROR_NONE,
null null
); );
sendVueMessage(JSON.toJSONString(new SocketMsg(deviceSn, MsgEnum.INFO))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "状态更新", MsgEnum.INFO)));
} else if (method == MethodEnum.attributes) { } else if (method == MethodEnum.attributes) {
WebSocketResAttributes attributes = resDTO.getAttributes(); WebSocketResAttributes attributes = resDTO.getAttributes();
// String[] capabilities = attributes.getCapabilities(); // String[] capabilities = attributes.getCapabilities();
@ -220,7 +212,7 @@ public class WebSocketSdcpServiceImpl extends WebSocketService {
ErrorStatusEnum.SDCP_PRINT_ERROR_NONE, ErrorStatusEnum.SDCP_PRINT_ERROR_NONE,
null null
); );
sendVueMessage(JSON.toJSONString(new SocketMsg(deviceSn, MsgEnum.ERROR))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, "设备发生异常", MsgEnum.ERROR)));
} else if (method == MethodEnum.notice) { } else if (method == MethodEnum.notice) {
} else if (method == MethodEnum.close || method == MethodEnum.disconnect) { } else if (method == MethodEnum.close || method == MethodEnum.disconnect) {
@ -233,7 +225,7 @@ public class WebSocketSdcpServiceImpl extends WebSocketService {
ErrorStatusEnum.SDCP_PRINT_ERROR_DEFAULT, ErrorStatusEnum.SDCP_PRINT_ERROR_DEFAULT,
msg msg
); );
sendVueMessage(JSON.toJSONString(new SocketMsg(msg, en))); sendVueMessage(JSON.toJSONString(new SocketMsg(commandResult, msg, en)));
} }
} }

View File

@ -1,37 +1,37 @@
/* ///*
* Copyright 2019-2020 the original author or authors. // * Copyright 2019-2020 the original author or authors.
* // *
* Licensed under the Apache License, Version 2.0 (the "License"); // * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. // * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at // * You may obtain a copy of the License at
* // *
* http://www.apache.org/licenses/LICENSE-2.0 // * http://www.apache.org/licenses/LICENSE-2.0
* // *
* Unless required by applicable law or agreed to in writing, software // * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, // * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and // * See the License for the specific language governing permissions and
* limitations under the License. // * limitations under the License.
*/ // */
package me.zhengjie.sysrunner; //package me.zhengjie.sysrunner;
//
import lombok.RequiredArgsConstructor; //import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments; //import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; //import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
//
/** ///**
* @author Tz // * @author Tz
* @description 程序启动后处理数据 // * @description 程序启动后处理数据
* @date 2025-01-13 // * @date 2025-01-13
**/ // **/
@Slf4j //@Slf4j
@Component //@Component
@RequiredArgsConstructor //@RequiredArgsConstructor
public class SystemRunner implements ApplicationRunner { //public class SystemRunner implements ApplicationRunner {
//
@Override // @Override
public void run(ApplicationArguments args) { // public void run(ApplicationArguments args) {
} // }
} //}

View File

@ -12,6 +12,7 @@
<module>eladmin-logging</module> <module>eladmin-logging</module>
<module>eladmin-system</module> <module>eladmin-system</module>
<module>eladmin-generator</module> <module>eladmin-generator</module>
<module>eladmin-flv</module>
</modules> </modules>
<name>后台管理</name> <name>后台管理</name>