src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
web_src/src/components/channelList.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
web_src/src/components/gb28181/devicePlayer.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
@@ -39,7 +39,8 @@ private ZLMRESTfulUtils zlmresTfulUtils; @GetMapping("/play/{deviceId}/{channelId}") public ResponseEntity<String> play(@PathVariable String deviceId, @PathVariable String channelId) { public ResponseEntity<String> play(@PathVariable String deviceId, @PathVariable String channelId, Integer getEncoding) { Device device = storager.queryVideoDevice(deviceId); StreamInfo streamInfo = storager.queryPlayByDevice(deviceId, channelId); @@ -64,6 +65,7 @@ long startTime = System.currentTimeMillis(); JSONObject rtpInfo = null; if (getEncoding == 1) { while (lockFlag) { try { if (System.currentTimeMillis() - startTime > 60 * 1000) { @@ -76,7 +78,8 @@ 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); @@ -99,6 +102,13 @@ e.printStackTrace(); } } } else { String flv = storager.getMediaInfo().getLocalIP() + ":" + storager.getMediaInfo().getHttpPort() + "/rtp/" + streamId + ".flv"; streamInfo.setFlv("http://" + flv); streamInfo.setWs_flv("ws://" + flv); storager.startPlay(streamInfo); } if (logger.isDebugEnabled()) { logger.debug(String.format("设备预览 API调用,deviceId:%s ,channelId:%s", deviceId, channelId)); web_src/src/components/channelList.vue
@@ -197,11 +197,12 @@ let deviceId = this.deviceId; this.isLoging = true; let channelId = itemData.channelId; console.log("通知设备推流1:" + deviceId + " : " + channelId); let getEncoding = itemData.hasAudio ? '1' : '0' console.log("通知设备推流1:" + deviceId + " : " + channelId + ":" + getEncoding); let that = this; this.$axios({ method: 'get', url: '/api/play/' + deviceId + '/' + channelId url: '/api/play/' + deviceId + '/' + channelId + '?getEncoding=' + getEncoding }).then(function (res) { console.log(res.data) let ssrc = res.data.ssrc; web_src/src/components/gb28181/devicePlayer.vue
@@ -223,7 +223,7 @@ play: function (streamInfo, hasAudio) { this.hasaudio = hasAudio; // 根据媒体流信息二次判断 if (!!streamInfo.tracks && streamInfo.tracks.length > 0) { if (!!streamInfo.tracks && streamInfo.tracks.length > 0 && hasAudio) { var realHasAudio = false; for (let i = 0; i < streamInfo.tracks.length; i++) { if (streamInfo.tracks[i].codec_type == 1 && streamInfo.tracks[i].codec_id_name == "CodecAAC") { // 判断为AAC音频