| | |
| | | |
| | | alter table wvp_stream_proxy |
| | | add stream_key varying(255) |
| | | |
| | | create table wvp_cloud_record ( |
| | | id serial primary key, |
| | | app character varying(255), |
| | | stream character varying(255), |
| | | call_id character varying(255), |
| | | start_time integer, |
| | | end_time integer, |
| | | media_server_id character varying(50), |
| | | file_name character varying(50), |
| | | folder character varying(50), |
| | | file_path character varying(255), |
| | | file_size integer, |
| | | time_len integer, |
| | | constraint uk_stream_push_app_stream_path unique (app, stream, file_path) |
| | | ); |
| | |
| | | self bool default false, |
| | | constraint uk_stream_push_app_stream unique (app, stream) |
| | | ); |
| | | create table wvp_cloud_record ( |
| | | id serial primary key, |
| | | app character varying(255), |
| | | stream character varying(255), |
| | | call_id character varying(255), |
| | | start_time integer, |
| | | end_time integer, |
| | | mediaServerId character varying(50), |
| | | file_name character varying(50), |
| | | folder character varying(50), |
| | | file_path character varying(255), |
| | | file_size integer, |
| | | time_len integer, |
| | | constraint uk_stream_push_app_stream_path unique (app, stream, file_path) |
| | | ); |
| | | |
| | | create table wvp_user ( |
| | | id serial primary key, |
| | |
| | | return HookResult.SUCCESS(); |
| | | } |
| | | |
| | | /** |
| | | * å½å宿äºä»¶ |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping(value = "/on_record_mp4", produces = "application/json;charset=UTF-8") |
| | | public HookResult onRecordMp4(HttpServletRequest request, @RequestBody OnRecordMp4HookParam param) { |
| | | logger.info("[ZLM HOOK] å½å宿äºä»¶ï¼{}->{}", param.getMediaServerId(), param.getFile_path()); |
| | | |
| | | taskExecutor.execute(() -> { |
| | | |
| | | }); |
| | | |
| | | return HookResult.SUCCESS(); |
| | | } |
| | | |
| | | private Map<String, String> urlParamToMap(String params) { |
| | | HashMap<String, String> map = new HashMap<>(); |
| | | if (ObjectUtils.isEmpty(params)) { |
New file |
| | |
| | | package com.genersoft.iot.vmp.media.zlm.dto.hook; |
| | | |
| | | /** |
| | | * zlm hookäºä»¶ä¸çon_rtp_server_timeoutäºä»¶çåæ° |
| | | * @author lin |
| | | */ |
| | | public class OnRecordMp4HookParam extends HookParam{ |
| | | private String app; |
| | | private String stream; |
| | | private String file_name; |
| | | private String file_path; |
| | | private String file_size; |
| | | private String folder; |
| | | private String url; |
| | | private String vhost; |
| | | private long start_time; |
| | | private long time_len; |
| | | |
| | | public String getApp() { |
| | | return app; |
| | | } |
| | | |
| | | public void setApp(String app) { |
| | | this.app = app; |
| | | } |
| | | |
| | | public String getStream() { |
| | | return stream; |
| | | } |
| | | |
| | | public void setStream(String stream) { |
| | | this.stream = stream; |
| | | } |
| | | |
| | | public String getFile_name() { |
| | | return file_name; |
| | | } |
| | | |
| | | public void setFile_name(String file_name) { |
| | | this.file_name = file_name; |
| | | } |
| | | |
| | | public String getFile_path() { |
| | | return file_path; |
| | | } |
| | | |
| | | public void setFile_path(String file_path) { |
| | | this.file_path = file_path; |
| | | } |
| | | |
| | | public String getFile_size() { |
| | | return file_size; |
| | | } |
| | | |
| | | public void setFile_size(String file_size) { |
| | | this.file_size = file_size; |
| | | } |
| | | |
| | | public String getFolder() { |
| | | return folder; |
| | | } |
| | | |
| | | public void setFolder(String folder) { |
| | | this.folder = folder; |
| | | } |
| | | |
| | | public String getUrl() { |
| | | return url; |
| | | } |
| | | |
| | | public void setUrl(String url) { |
| | | this.url = url; |
| | | } |
| | | |
| | | public String getVhost() { |
| | | return vhost; |
| | | } |
| | | |
| | | public void setVhost(String vhost) { |
| | | this.vhost = vhost; |
| | | } |
| | | |
| | | public long getStart_time() { |
| | | return start_time; |
| | | } |
| | | |
| | | public void setStart_time(long start_time) { |
| | | this.start_time = start_time; |
| | | } |
| | | |
| | | public long getTime_len() { |
| | | return time_len; |
| | | } |
| | | |
| | | public void setTime_len(long time_len) { |
| | | this.time_len = time_len; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "OnRecordMp4HookParam{" + |
| | | "app='" + app + '\'' + |
| | | ", stream='" + stream + '\'' + |
| | | ", file_name='" + file_name + '\'' + |
| | | ", file_path='" + file_path + '\'' + |
| | | ", file_size='" + file_size + '\'' + |
| | | ", folder='" + folder + '\'' + |
| | | ", url='" + url + '\'' + |
| | | ", vhost='" + vhost + '\'' + |
| | | ", start_time=" + start_time + |
| | | ", time_len=" + time_len + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package com.genersoft.iot.vmp.service; |
| | | |
| | | import com.genersoft.iot.vmp.service.bean.CloudRecordItem; |
| | | import com.github.pagehelper.PageInfo; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * äºç«¯å½å管ç |
| | | * @author lin |
| | | */ |
| | | public interface ICloudRecordService { |
| | | |
| | | /** |
| | | * å页åå»äºç«¯å½åå表 |
| | | */ |
| | | PageInfo<CloudRecordItem> getList(int page, int count, String startTime, String endTime); |
| | | |
| | | /** |
| | | * è·åææçæ¥æ |
| | | */ |
| | | List<String> getDateList(Integer year, Integer month, String app, String stream); |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | ResourceBaseInfo getOverview(); |
| | | |
| | | } |
New file |
| | |
| | | package com.genersoft.iot.vmp.service.bean; |
| | | |
| | | /** |
| | | * äºç«¯å½åæ°æ® |
| | | */ |
| | | public class CloudRecordItem { |
| | | /** |
| | | * ä¸»é® |
| | | */ |
| | | private int id; |
| | | |
| | | /** |
| | | * åºç¨å |
| | | */ |
| | | private String app; |
| | | |
| | | /** |
| | | * æµ |
| | | */ |
| | | private String stream; |
| | | |
| | | /** |
| | | * å¥å
¨ID |
| | | */ |
| | | private String callId; |
| | | |
| | | /** |
| | | * å¼å§æ¶é´ |
| | | */ |
| | | private long startTime; |
| | | |
| | | /** |
| | | * ç»ææ¶é´ |
| | | */ |
| | | private long endTime; |
| | | |
| | | /** |
| | | * ZLM Id |
| | | */ |
| | | private String mediaServerId; |
| | | |
| | | /** |
| | | * æä»¶åç§° |
| | | */ |
| | | private String fileName; |
| | | |
| | | /** |
| | | * æä»¶è·¯å¾ |
| | | */ |
| | | private String filePath; |
| | | |
| | | /** |
| | | * æä»¶å¤¹ |
| | | */ |
| | | private String folder; |
| | | |
| | | /** |
| | | * æ¶èç±»åï¼æ¶èçæä»¶ä¸ç§»é¤ |
| | | */ |
| | | private String collectType; |
| | | |
| | | /** |
| | | * æä»¶å¤§å° |
| | | */ |
| | | private long fileSize; |
| | | |
| | | /** |
| | | * æä»¶æ¶é¿ |
| | | */ |
| | | private long timeLen; |
| | | |
| | | public int getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(int id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getApp() { |
| | | return app; |
| | | } |
| | | |
| | | public void setApp(String app) { |
| | | this.app = app; |
| | | } |
| | | |
| | | public String getStream() { |
| | | return stream; |
| | | } |
| | | |
| | | public void setStream(String stream) { |
| | | this.stream = stream; |
| | | } |
| | | |
| | | public String getCallId() { |
| | | return callId; |
| | | } |
| | | |
| | | public void setCallId(String callId) { |
| | | this.callId = callId; |
| | | } |
| | | |
| | | public long getStartTime() { |
| | | return startTime; |
| | | } |
| | | |
| | | public void setStartTime(long startTime) { |
| | | this.startTime = startTime; |
| | | } |
| | | |
| | | public long getEndTime() { |
| | | return endTime; |
| | | } |
| | | |
| | | public void setEndTime(long endTime) { |
| | | this.endTime = endTime; |
| | | } |
| | | |
| | | public String getMediaServerId() { |
| | | return mediaServerId; |
| | | } |
| | | |
| | | public void setMediaServerId(String mediaServerId) { |
| | | this.mediaServerId = mediaServerId; |
| | | } |
| | | |
| | | public String getFileName() { |
| | | return fileName; |
| | | } |
| | | |
| | | public void setFileName(String fileName) { |
| | | this.fileName = fileName; |
| | | } |
| | | |
| | | public String getFilePath() { |
| | | return filePath; |
| | | } |
| | | |
| | | public void setFilePath(String filePath) { |
| | | this.filePath = filePath; |
| | | } |
| | | |
| | | public String getFolder() { |
| | | return folder; |
| | | } |
| | | |
| | | public void setFolder(String folder) { |
| | | this.folder = folder; |
| | | } |
| | | |
| | | public long getFileSize() { |
| | | return fileSize; |
| | | } |
| | | |
| | | public void setFileSize(long fileSize) { |
| | | this.fileSize = fileSize; |
| | | } |
| | | |
| | | public long getTimeLen() { |
| | | return timeLen; |
| | | } |
| | | |
| | | public void setTimeLen(long timeLen) { |
| | | this.timeLen = timeLen; |
| | | } |
| | | |
| | | public String getCollectType() { |
| | | return collectType; |
| | | } |
| | | |
| | | public void setCollectType(String collectType) { |
| | | this.collectType = collectType; |
| | | } |
| | | } |
| | |
| | | param.put("hook.on_server_keepalive",String.format("%s/on_server_keepalive", hookPrex)); |
| | | param.put("hook.on_send_rtp_stopped",String.format("%s/on_send_rtp_stopped", hookPrex)); |
| | | param.put("hook.on_rtp_server_timeout",String.format("%s/on_rtp_server_timeout", hookPrex)); |
| | | if (mediaServerItem.getRecordAssistPort() > 0) { |
| | | param.put("hook.on_record_mp4",String.format("http://127.0.0.1:%s/api/record/on_record_mp4", mediaServerItem.getRecordAssistPort())); |
| | | }else { |
| | | param.put("hook.on_record_mp4",""); |
| | | } |
| | | param.put("hook.on_record_mp4",String.format("%s/on_record_mp4", hookPrex)); |
| | | // if (mediaServerItem.getRecordAssistPort() > 0) { |
| | | // param.put("hook.on_record_mp4",String.format("http://127.0.0.1:%s/api/record/on_record_mp4", mediaServerItem.getRecordAssistPort())); |
| | | // }else { |
| | | // param.put("hook.on_record_mp4",""); |
| | | // } |
| | | param.put("hook.timeoutSec","20"); |
| | | // æ¨æµæå¼åå¯ä»¥å¨è¶
æ¶æ¶é´å
éæ°è¿æ¥ä¸ç»§ç»æ¨æµï¼è¿æ ·ææ¾å¨ä¼æ¥çææ¾ã |
| | | // ç½®0å
³éæ¤ç¹æ§(æ¨æµæå¼ä¼å¯¼è´ç«å³æå¼ææ¾å¨) |