Lawrence
2020-11-07 f68cfd8de2cf6e516e220d1a706cecabb2b185aa
优化播放程序,缩短播放加载时间
3个文件已修改
21 ■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/channelList.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_src/src/components/gb28181/devicePlayer.vue 2 ●●● 补丁 | 查看 | 原始文档 | 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音频