package com.dji.sample.speak.service.serviceImpl;
|
|
import com.dji.sample.component.mqtt.service.IMessageSenderService;
|
import com.dji.sample.media.model.MinioPojo;
|
import com.dji.sample.media.service.impl.FileServiceImpl;
|
import com.dji.sample.speak.model.dto.PsdkModelDto;
|
import com.dji.sample.speak.model.dto.SpeakVoiceFileDto;
|
import com.dji.sample.speak.model.dto.SpeakVoiceStartDto;
|
import com.dji.sample.speak.model.dto.SpeakVolumeDto;
|
import com.dji.sample.speak.model.enums.FormatEnum;
|
import com.dji.sample.speak.model.enums.PsdkModelEnum;
|
import com.dji.sample.speak.model.enums.VoiceEnums;
|
import com.dji.sample.speak.model.param.SpeakVoiceStartParam;
|
import com.dji.sample.speak.service.SpeakVoiceService;
|
import com.dji.sample.speak.util.MD5Util;
|
import lombok.extern.log4j.Log4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.io.File;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
|
@Service
|
|
public class SpeakVoiceServiceImpl implements SpeakVoiceService {
|
@Autowired
|
private IMessageSenderService messageSenderService;
|
@Autowired
|
private MinioPojo pojo;
|
|
@Override
|
public int takeVoice( String sn , Integer psdk_index, String name, File file) {
|
SpeakVoiceStartDto dto = new SpeakVoiceStartDto();
|
SpeakVoiceFileDto fileDto = new SpeakVoiceFileDto();
|
String url = upMinio(file, name);
|
fileDto.setUrl(url);
|
fileDto.setMd5(MD5Util.getMD5Checksum(file));
|
fileDto.setFormat(FormatEnum.PCM);
|
fileDto.setName(name);
|
dto.setPsdk_index(psdk_index);
|
dto.setFile(fileDto);
|
return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_AUDIO_PLAY_START.getMethod(), dto).getResult();
|
}
|
|
@Override
|
public int restartVoice(String sn, Integer psdk_index) {
|
return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_REPLAY.getMethod(), psdk_index).getResult();
|
}
|
|
@Override
|
public int stopVoice(String sn, Integer psdk_index) {
|
return messageSenderService.publishServicesTopic(sn,VoiceEnums.SPEAKER_PLAY_STOP.getMethod(), psdk_index).getResult();
|
}
|
|
@Override
|
public int setVoiceMode(String sn,PsdkModelDto dto) {
|
return messageSenderService.publishServicesTopic(sn,VoiceEnums.SPEAKER_PLAY_MODE_SET.getMethod(), dto).getResult();
|
}
|
|
@Override
|
public int setVoiceVolume(SpeakVolumeDto dto, String sn) {
|
return messageSenderService.publishServicesTopic(sn,VoiceEnums.SPEAKER_PLAY_VOLUME_SET.getMethod(), dto).getResult();
|
}
|
|
public String upMinio(File file, String fileName) {
|
String endpoint = pojo.getEndpoint();
|
String accessKey = pojo.getAccessKey();
|
String secretKey = pojo.getSecretKey();
|
String bucketName = pojo.getBucket();
|
String objectName = "/" + fileName + getNowTimeName();
|
FileServiceImpl.uploadFile(endpoint, accessKey, secretKey, bucketName, objectName, file, "audio/mpeg");
|
return endpoint + "/" + bucketName + objectName;
|
}
|
|
public static String getNowTimeName() {
|
LocalDateTime currentTime = LocalDateTime.now();
|
// 格式化时间,生成当前时间
|
return currentTime.format(DateTimeFormatter.ofPattern("MMddHHmm"));
|
}
|
}
|