package com.dji.sample.manage.service.impl;
|
|
import com.dji.sample.manage.model.dto.DeviceDTO;
|
import com.dji.sample.manage.model.dto.LiveProperty;
|
import com.dji.sample.manage.model.param.DeviceQueryParam;
|
import com.dji.sample.manage.model.receiver.CapacityDeviceReceiver;
|
import com.dji.sample.manage.service.ICapacityCameraService;
|
import com.dji.sample.manage.service.IDeviceService;
|
import com.dji.sdk.cloudapi.device.DeviceDomainEnum;
|
import com.dji.sdk.cloudapi.livestream.*;
|
import com.dji.sdk.cloudapi.livestream.api.AbstractLivestreamService;
|
import com.dji.sdk.mqtt.state.TopicStateRequest;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.messaging.MessageHeaders;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
import static com.dji.sdk.cloudapi.livestream.UrlTypeEnum.RTMP;
|
|
/**
|
* @author sean
|
* @version 1.7
|
* @date 2023/7/6
|
*/
|
@Service
|
public class SDKLivestreamService extends AbstractLivestreamService {
|
|
@Autowired
|
private ICapacityCameraService capacityCameraService;
|
|
@Autowired
|
private ObjectMapper objectMapper;
|
@Autowired
|
private IDeviceService deviceService;
|
|
@Override
|
public void dockLivestreamAbilityUpdate(TopicStateRequest<DockLivestreamAbilityUpdate> request, MessageHeaders headers) {
|
saveLiveCapacity(request.getData().getLiveCapacity().getDeviceList());
|
|
}
|
|
@Override
|
public void rcLivestreamAbilityUpdate(TopicStateRequest<RcLivestreamAbilityUpdate> request, MessageHeaders headers) {
|
saveLiveCapacity(request.getData().getLiveCapacity().getDeviceList());
|
saveLiveParam(request.getData().getLiveCapacity().getDeviceList());
|
}
|
|
private void saveLiveCapacity(Object data) {
|
List<CapacityDeviceReceiver> LivableDevices = objectMapper.convertValue(
|
data, new TypeReference<List<CapacityDeviceReceiver>>() {});
|
|
for (CapacityDeviceReceiver capacityDeviceReceiver : LivableDevices) {
|
capacityCameraService.saveCapacityCameraReceiverList(
|
capacityDeviceReceiver.getCameraList(), capacityDeviceReceiver.getSn());
|
}
|
}
|
|
private void saveLiveParam(List<RcLiveCapacityDevice> data) {
|
|
List<DeviceDTO> devices = deviceService.getDevicesByParams(DeviceQueryParam.builder().build());
|
for (DeviceDTO device : devices) {
|
for (RcLiveCapacityDevice capacityDevice : data) {
|
if(device.getDeviceSn().equals(capacityDevice.getSn())){
|
device.setLiveUrl(LiveProperty.getRtmpUrl()+capacityDevice.getSn());
|
String sn = capacityDevice.getSn();
|
String camera_index = capacityDevice.getCameraList().get(0).getCameraIndex().toString();
|
String video_index = capacityDevice.getCameraList().get(0).getVideoList().get(0).getVideoIndex();
|
|
device.setLiveVideoId(sn+"/"+camera_index+"/"+video_index);
|
deviceService.updateDevice(device);
|
}
|
}
|
}
|
}
|
}
|