无人机项目后端代码
guoshilong
2023-09-18 d175a7fe7d6e96c0e6abfe3954eefed539bb6e3c
src/main/java/com/dji/sample/manage/service/impl/LiveStreamServiceImpl.java
@@ -15,10 +15,7 @@
import com.dji.sample.manage.model.param.DeviceQueryParam;
import com.dji.sample.manage.model.receiver.CapacityDeviceReceiver;
import com.dji.sample.manage.model.receiver.LiveCapacityReceiver;
import com.dji.sample.manage.service.ICapacityCameraService;
import com.dji.sample.manage.service.IDeviceService;
import com.dji.sample.manage.service.ILiveStreamService;
import com.dji.sample.manage.service.IWorkspaceService;
import com.dji.sample.manage.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -52,6 +49,9 @@
    @Autowired
    private IMessageSenderService messageSender;
    @Autowired
    private IDeviceRedisService deviceRedisService;
    @Override
    public List<CapacityDeviceDTO> getLiveCapacity(String workspaceId) {
@@ -64,7 +64,7 @@
        // Query the live capability of each drone.
        return devicesList.stream()
                .filter(device -> RedisOpsUtils.checkExist(RedisConst.DEVICE_ONLINE_PREFIX + device.getDeviceSn()))
                .filter(device -> deviceRedisService.checkDeviceOnline(device.getDeviceSn()))
                .map(device -> CapacityDeviceDTO.builder()
                        .name(Objects.requireNonNullElse(device.getNickname(), device.getDeviceName()))
                        .sn(device.getDeviceSn())
@@ -90,6 +90,11 @@
    @Override
    public ResponseResult liveStart(LiveTypeDTO liveParam) {
//        String streamId_2 = liveParam.getVideoId().replace("/","_");
//        String streamId_1 = liveParam.getVideoId().replace("_","/");
//        liveParam.setVideoId(streamId_2);
        // Check if this lens is available live.
        ResponseResult responseResult = this.checkBeforeLive(liveParam.getVideoId());
        if (ResponseResult.CODE_SUCCESS != responseResult.getCode()) {
@@ -100,7 +105,14 @@
        // target topic
        String respTopic = THING_MODEL_PRE + PRODUCT +
                data.getDeviceSn() + SERVICES_SUF;
        ServiceReply receiveReply = this.publishLiveStart(respTopic, liveParam);
        if(receiveReply.getResult() == 513003) {
            LiveDTO live = new LiveDTO();
            live.setUrl(liveParam.getUrl().replace("rtmp", "https").replace("735","700") + ".flv");
            return ResponseResult.success(live);
        }
        if (ResponseResult.CODE_SUCCESS != receiveReply.getResult()) {
            return ResponseResult.error(LiveErrorEnum.find(receiveReply.getResult()));
@@ -111,7 +123,8 @@
        switch (urlType) {
            case RTMP:
                live.setUrl(liveParam.getUrl().replace("rtmp", "webrtc"));
//                live.setUrl(liveParam.getUrl().replace("rtmp", "webrtc"));
                live.setUrl(liveParam.getUrl().replace("rtmp", "https").replace("735","700") + ".flv");
                break;
            case GB28181:
                LiveUrlGB28181DTO gb28181 = urlToGB28181(liveParam.getUrl());
@@ -125,8 +138,8 @@
                        .toString());
                break;
            case RTSP:
                Object url = Objects.requireNonNullElse(receiveReply.getOutput(), receiveReply.getInfo());
                this.resolveUrlUser(String.valueOf(url), live);
                String url = receiveReply.getOutput().toString();
                this.resolveUrlUser(url, live);
                break;
            case UNKNOWN:
                return ResponseResult.error(LiveErrorEnum.URL_TYPE_NOT_SUPPORTED);
@@ -143,6 +156,8 @@
        }
        String respTopic = THING_MODEL_PRE + PRODUCT + responseResult.getData().getDeviceSn() + SERVICES_SUF;
        videoId = videoId.replace("_","/");
        ServiceReply receiveReply = this.publishLiveStop(respTopic, videoId);
        if (receiveReply.getResult() != 0) {
@@ -207,7 +222,7 @@
        response.setMethod(LiveStreamMethodEnum.LIVE_LENS_CHANGE.getMethod());
        response.setData(liveParam);
        return messageSender.publishWithReply(respTopic, response);
        return messageSender.publishWithReply(ServiceReply.class, respTopic, response);
    }
    /**
@@ -304,7 +319,7 @@
        response.setData(liveParam);
        response.setMethod(LiveStreamMethodEnum.LIVE_START_PUSH.getMethod());
        return messageSender.publishWithReply(topic, response);
        return messageSender.publishWithReply(ServiceReply.class, topic, response);
    }
    /**
@@ -323,7 +338,7 @@
        response.setMethod(LiveStreamMethodEnum.LIVE_SET_QUALITY.getMethod());
        response.setData(data);
        return messageSender.publishWithReply(respTopic, response);
        return messageSender.publishWithReply(ServiceReply.class, respTopic, response);
    }
    /**
@@ -340,7 +355,7 @@
        response.setData(data);
        response.setMethod(LiveStreamMethodEnum.LIVE_STOP_PUSH.getMethod());
        return messageSender.publishWithReply(topic, response);
        return messageSender.publishWithReply(ServiceReply.class, topic, response);
    }
}