panlinlin
2021-04-23 d551c82d34618ca31e2a15b5bc0c51f727084466
优化点播体验, 优化tcp被动的sdp
4个文件已修改
33 ■■■■■ 已修改文件
pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -11,6 +11,7 @@
    <groupId>com.genersoft</groupId>
    <artifactId>wvp</artifactId>
    <version>2.0.0</version>
    <name>web video platform</name>
    <repositories>
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -91,6 +91,9 @@
    @Value("${media.autoApplyPlay}")
    private boolean autoApplyPlay;
    @Value("${userSettings.waitTrack}")
    private boolean waitTrack;
    @Autowired
    private ZLMHttpHookSubscribe subscribe;
@@ -376,7 +379,7 @@
            subscribeKey.put("regist", true);
            subscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey, json->{
                if (json.getJSONArray("tracks") == null) return;
                if (waitTrack && json.getJSONArray("tracks") == null) return;
                event.response(json);
                subscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_stream_changed, subscribeKey);
            });
@@ -426,19 +429,12 @@
                content.append("a=rtpmap:96 PS/90000\r\n");
                content.append("a=rtpmap:98 H264/90000\r\n");
                content.append("a=rtpmap:97 MPEG4/90000\r\n");
                if("TCP-PASSIVE".equals(streamMode)) { // tcp被动模式
                if ("TCP-PASSIVE".equals(streamMode)) { // tcp被动模式
                    content.append("a=setup:passive\r\n");
                    content.append("a=recvonly\r\n");
                    content.append("a=rtpmap:96 PS/90000\r\n");
                    content.append("a=rtpmap:98 H264/90000\r\n");
                    content.append("a=rtpmap:97 MPEG4/90000\r\n");
                    if ("TCP-PASSIVE".equals(streamMode)) { // tcp被动模式
                        content.append("a=setup:passive\r\n");
                        content.append("a=connection:new\r\n");
                    } else if ("TCP-ACTIVE".equals(streamMode)) { // tcp主动模式
                        content.append("a=setup:active\r\n");
                        content.append("a=connection:new\r\n");
                    }
                    content.append("a=connection:new\r\n");
                } else if ("TCP-ACTIVE".equals(streamMode)) { // tcp主动模式
                    content.append("a=setup:active\r\n");
                    content.append("a=connection:new\r\n");
                }
            }
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -22,6 +22,7 @@
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.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.async.DeferredResult;
@@ -58,6 +59,9 @@
    @Autowired
    private VideoStreamSessionManager streamSession;
    @Value("${userSettings.playTimeout}")
    private long playTimeout;
    @Override
    public PlayResult play(String deviceId, String channelId, ZLMHttpHookSubscribe.Event hookEvent, SipSubscribe.Event errorEvent) {
@@ -67,7 +71,7 @@
        playResult.setDevice(device);
        UUID uuid = UUID.randomUUID();
        playResult.setUuid(uuid.toString());
        DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>();
        DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(playTimeout);
        playResult.setResult(result);
        // 录像查询以channelId作为deviceId查询
        resultHolder.put(DeferredResultHolder.CALLBACK_CMD_PlAY + uuid, result);
src/main/resources/application-dev.yml
@@ -100,6 +100,10 @@
userSettings:
    # 保存移动位置历史轨迹:true:保留历史数据,false:仅保留最后的位置(默认)
    savePositionHistory: false
    # 点播等待超时时间,单位:毫秒
    playTimeout: 3000
    # 等待音视频编码信息再返回, true: 可以根据编码选择合适的播放器,false: 可以更快点播
    waitTrack: false
# 在线文档: swagger-ui(生产环境建议关闭)
springfox: