| | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.util.StringUtils; |
| | |
| | | @Autowired |
| | | private ZLMRESTfulUtils zlmresTfulUtils; |
| | | |
| | | @Value("${media.closeWaitRTPInfo}") |
| | | private boolean closeWaitRTPInfo; |
| | | |
| | | @GetMapping("/playback/{deviceId}/{channelId}") |
| | | public ResponseEntity<String> play(@PathVariable String deviceId,@PathVariable String channelId, String startTime, String endTime){ |
| | | public ResponseEntity<String> play(@PathVariable String deviceId, @PathVariable String channelId, String startTime, |
| | | String endTime) { |
| | | |
| | | if (logger.isDebugEnabled()) { |
| | | logger.debug(String.format("设备回放 API调用,deviceId:%s ,channelId:%s",deviceId, channelId)); |
| | |
| | | } |
| | | |
| | | // }else { |
| | | // String streamId = String.format("%08x", Integer.parseInt(streamInfo.getSsrc())).toUpperCase(); |
| | | // String streamId = String.format("%08x", |
| | | // Integer.parseInt(streamInfo.getSsrc())).toUpperCase(); |
| | | // JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(streamId); |
| | | // if (rtpInfo.getBoolean("exist")) { |
| | | // return new ResponseEntity<String>(JSON.toJSONString(streamInfo),HttpStatus.OK); |
| | | // return new |
| | | // ResponseEntity<String>(JSON.toJSONString(streamInfo),HttpStatus.OK); |
| | | // }else { |
| | | // storager.stopPlayback(streamInfo); |
| | | // streamInfo = cmder.playbackStreamCmd(device, channelId, startTime, endTime); |
| | |
| | | long lockStartTime = System.currentTimeMillis(); |
| | | JSONObject rtpInfo = null; |
| | | |
| | | if (closeWaitRTPInfo) { |
| | | String flv = storager.getMediaInfo().getWanIp() + ":" + storager.getMediaInfo().getHttpPort() + "/rtp/" |
| | | + streamId + ".flv"; |
| | | streamInfo.setFlv("http://" + flv); |
| | | streamInfo.setWs_flv("ws://" + flv); |
| | | storager.startPlayback(streamInfo); |
| | | } else { |
| | | while (lockFlag) { |
| | | try { |
| | | if (System.currentTimeMillis() - lockStartTime > 75 * 1000) { |
| | |
| | | logger.info("查询RTP推流信息..."); |
| | | rtpInfo = zlmresTfulUtils.getRtpInfo(streamId); |
| | | } |
| | | if (rtpInfo != null && rtpInfo.getBoolean("exist") && streamInfo != null && streamInfo.getFlv() != null){ |
| | | if (rtpInfo != null && rtpInfo.getBoolean("exist") && streamInfo != null |
| | | && streamInfo.getFlv() != null) { |
| | | logger.info("查询流编码信息:"+streamInfo.getFlv()); |
| | | rtpPushed = true; |
| | | Thread.sleep(2000); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | if(streamInfo!=null) { |
| | | return new ResponseEntity<String>(JSON.toJSONString(streamInfo),HttpStatus.OK); |
| | | } else { |