From 2db1aa88e8ab53096a936163d686b90d8e056a99 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Wed, 21 Aug 2024 23:18:33 +0800
Subject: [PATCH] 国土对接返回信息加密
---
src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java | 85 +++++++++++++++++++++++++++++++++---------
1 files changed, 67 insertions(+), 18 deletions(-)
diff --git a/src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java b/src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java
index ca12a9b..474523b 100644
--- a/src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java
+++ b/src/main/java/com/dji/sample/speak/service/serviceImpl/SpeakVoiceServiceImpl.java
@@ -14,6 +14,9 @@
import com.dji.sample.speak.model.enums.VoiceEnums;
import com.dji.sample.speak.service.SpeakVoiceService;
import com.dji.sample.speak.util.MD5Util;
+import com.dji.sample.territory.service.impl.TbFjServiceImpl;
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -21,8 +24,7 @@
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
@@ -54,9 +56,9 @@
fileDto.setName(name);
dto.setPsdk_index(psdk_index);
dto.setFile(fileDto);
-// double time = getAudioDuration(file);
+ double time = getAudioDuration(file);
voiceEntity.setMd5(md5);
-// voiceEntity.setSecond(time);
+ voiceEntity.setSecond(time);
voiceEntity.setUrl(url);
voiceEntity.setName(name);
voiceMapper.insert(voiceEntity);
@@ -66,14 +68,14 @@
@Override
public int restartVoice(String sn, Integer psdk_index) {
- SpeakRestartDto dto=new SpeakRestartDto();
+ SpeakRestartDto dto = new SpeakRestartDto();
dto.setPsdk_index(psdk_index);
return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_REPLAY.getMethod(), dto).getResult();
}
@Override
public int stopVoice(String sn, Integer psdk_index) {
- SpeakStopDto dto=new SpeakStopDto();
+ SpeakStopDto dto = new SpeakStopDto();
dto.setPsdk_index(psdk_index);
return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_PLAY_STOP.getMethod(), dto).getResult();
}
@@ -102,10 +104,10 @@
}
@Override
- public PaginationData<SpeakVoiceEntity> getVoices(Integer pages,Integer page_size) {
+ public PaginationData<SpeakVoiceEntity> getVoices(Integer pages, Integer page_size) {
// Paging Query
Page<SpeakVoiceEntity> page = voiceMapper.selectPage(
- new Page<>(pages,page_size),
+ new Page<>(pages, page_size),
new LambdaQueryWrapper<SpeakVoiceEntity>()
);
// Wrap the results of a paging query into a custom paging object.
@@ -121,10 +123,11 @@
String accessKey = pojo.getAccessKey();
String secretKey = pojo.getSecretKey();
String bucketName = pojo.getBucket();
- String objectName = "/" + fileName + getNowTimeName()+"pcm";
- FileServiceImpl.uploadFile(endpoint, accessKey, secretKey, bucketName, objectName, file, "audio/mpeg");
+ String objectName = "/" + fileName + getNowTimeName();
+ FileServiceImpl.uploadFile(endpoint, accessKey, secretKey, bucketName, objectName, file, "audio/wav");
return endpoint + "/" + bucketName + objectName;
}
+
public static String getNowTimeName() {
LocalDateTime currentTime = LocalDateTime.now();
@@ -132,12 +135,58 @@
return currentTime.format(DateTimeFormatter.ofPattern("MMddHHmm"));
}
-// public static double getAudioDuration(File file) throws UnsupportedAudioFileException, IOException {
-// AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
-// AudioFormat format = audioInputStream.getFormat();
-// long audioFileLength = file.length();
-// int frameSize = format.getFrameSize();
-// float frameRate = format.getFrameRate();
-// return Math.round(audioFileLength / (frameSize * frameRate));
-// }
+ public static double getAudioDuration(File file) {
+ try {
+ AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
+ AudioFormat format = audioInputStream.getFormat();
+ long audioFileLength = file.length();
+ int frameSize = format.getFrameSize();
+ float frameRate = format.getFrameRate();
+ return Math.round(audioFileLength / (frameSize * frameRate));
+ } catch (Exception e) {
+ return 0.0;
+ }
+ }
+
+ public int takeVoices(String sn, Integer psdk_index, String name, String url) {
+ SpeakVoiceEntity voiceEntity = new SpeakVoiceEntity();
+ SpeakVoiceStartDto dto = new SpeakVoiceStartDto();
+ SpeakVoiceFileDto fileDto = new SpeakVoiceFileDto();
+ SpeakVolumeDto volumeDto = new SpeakVolumeDto();
+ File file = TbFjServiceImpl.downloadFile(url);
+ String md5 = MD5Util.getMD5Checksum(file);
+ volumeDto.setPsdk_index(psdk_index);
+ volumeDto.setPlay_volume(100);
+ String names = name + ".wav";
+ fileDto.setUrl(url);
+ fileDto.setMd5(md5);
+ fileDto.setFormat(FormatEnum.PCM);
+ fileDto.setName(name);
+ dto.setPsdk_index(psdk_index);
+ dto.setFile(fileDto);
+ voiceEntity.setMd5(md5);
+ voiceEntity.setUrl(url);
+ voiceEntity.setName(names);
+ voiceMapper.insert(voiceEntity);
+ messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_PLAY_VOLUME_SET.getMethod(), volumeDto);
+ return messageSenderService.publishServicesTopic(sn, VoiceEnums.SPEAKER_AUDIO_PLAY_START.getMethod(), dto).getResult();
+ }
+
+ public void saveFileToLocal(File file, String destinationPath) throws IOException {
+ // 创建目标文件对象
+ File destinationFile = new File(destinationPath);
+
+ // 确保目标文件的父目录存在
+ destinationFile.getParentFile().mkdirs();
+
+ // 将文件内容写入目标文件
+ try (FileOutputStream outputStream = new FileOutputStream(destinationFile);
+ InputStream inputStream = new FileInputStream(file)) {
+ byte[] buffer = new byte[1024];
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ }
+ }
}
--
Gitblit v1.9.3