海康摄像头视频录制为MP4可以直接播放
最近项目要求需要调用客户本地海康摄像头进行视频录制上传到服务器,于是就对摄像头录制进行了研究 话不多说直接上代码
/**
* 开始录制视频
*
* @param key 摄像头的唯一标识
* @param ip ip地址
* @param port 端口号
* @param username 用户名
* @param pass 密码
* @return
* @author wyh
* 2024-05-09 18:19
*/
ResultBody resultBody = videoRecordEOService.startRecord(key, ipAddress, port, loginName, loginPwd, carNumber);
// startRecord 方法
public ResultBody startRecord(String key, String ip, String port, String username, String pass, String carNumber) {
//首先判断一下摄像头录制对象是否已经存在,如果存在则说明摄像头已经在录制视频了,需要保存视频,重新录制
HkvUtil hkvUtil1 = hkvUtilMap.get(key);
ResultBody resultBody = new ResultBody();
if (Objects.nonNull(hkvUtil1)) {
//如果存在 重新开始录制
reStartRecord(hkvUtil1);
hkvUtil1.jButtonStopSaveData();
}
//默认通道1
String iChannelNum = "1";
String preset = "";//枪机没有预置点位
//参数Map
Map<String, String> paramMap = new HashMap<>();
try {
//初始化
if (HkvUtil.init()) {
log.info("开始初始化, systemParam: {}",systemParam);
// getVideoCaptureTime 录制时间,可以根据自己的需求进行设置
log.info("录制时间, videoCaptureTime: {}",systemParam.getVideoCaptureTime());
int videoCaptureTime =systemParam.getVideoCaptureTime();
HkvUtil hkvUtil = SpringUtil.getObject(HkvUtil.class);
hkvUtil.setM_sDeviceIP(ip);
hkvUtil.setM_sDeviceUsername(username);
hkvUtil.setM_sDevicePassword(pass);
hkvUtil.setM_sDeviceiChannelNum(iChannelNum);
hkvUtil.setM_sDevicePreset(preset);
hkvUtil.setVideoCaptureTime(videoCaptureTime);
hkvUtil.setM_sDevicePort(port);
//开始录制
paramMap = hkvUtil.jButtonStartSaveData();
//如果录制失败
if (StringUtils.equals(paramMap.get(Constant.Global.CODE), "-1")) {
hkvUtilMap.remove(key);
resultBody.setMsg("录制失败