瀏覽代碼

feat:小节评分

Joburgess 4 年之前
父節點
當前提交
06c47fe627

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SoundSocketService.java

@@ -7,5 +7,7 @@ package com.ym.mec.biz.service;
 public interface SoundSocketService {
 
     String COMMOND = "commond";
+    String RECORD_START = "recordStart";
+    String RECORD_END = "recordEnd";
 
 }

+ 18 - 7
mec-teacher/src/main/java/com/ym/mec/teacher/handler/WebSocketHandler.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.dto.WavHeader;
 import com.ym.mec.biz.dal.dto.WebSocketInfo;
 import com.ym.mec.biz.service.SoundService;
 import com.ym.mec.biz.service.SoundSocketService;
+import com.ym.mec.util.date.DateUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -18,7 +19,12 @@ import org.springframework.web.socket.handler.AbstractWebSocketHandler;
 
 import javax.sound.sampled.AudioFormat;
 import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.Clip;
 import java.io.*;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -67,12 +73,16 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
         if(webSocketInfo.getHeader().containsKey(SoundSocketService.COMMOND)){
             commond = webSocketInfo.getHeader().get(SoundSocketService.COMMOND);
         }
-
-        if(message.getPayload().contains("Start")){
-            File file = new File("E:\\Temp\\record"+phone+".wav");
-            userRandomAccessFileMap.put(phone, new RandomAccessFile(file, "rw"));
-        }else if(message.getPayload().contains("End")){
-            createHeader(phone);
+        switch (commond){
+            case SoundSocketService.RECORD_START:
+                File file = new File("E:\\Temp\\record"+phone +"-"+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) +".wav");
+                userRandomAccessFileMap.put(phone, new RandomAccessFile(file, "rw"));
+                break;
+            case SoundSocketService.RECORD_END:
+                createHeader(phone);
+                break;
+            default:
+                break;
         }
     }
 
@@ -82,6 +92,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
         String phone = session.getPrincipal().getName().split(":")[1];
         if(userRandomAccessFileMap.containsKey(phone)){
             userRandomAccessFileMap.get(phone).write(message.getPayload().array());
+            List<byte[]> bytes = Arrays.asList(message.getPayload().array());
         }
         AudioDispatcher dispatcher = AudioDispatcherFactory.fromByteArray(message.getPayload().array(), audioFormat, 256, 128);
         dispatcher.addAudioProcessor(new PitchProcessor(algo, 44100, 256, (pitchDetectionResult, audioEvent) -> {
@@ -89,7 +100,6 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
             float pitch = pitchDetectionResult.getPitch();
 //            LOGGER.info("时间:{},频率:{}", timeStamp, pitch);
         }));
-        dispatcher.run();
     }
 
     @Override
@@ -129,6 +139,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
         }
         RandomAccessFile randomAccessFile = userRandomAccessFileMap.get(phone);
         randomAccessFile.seek(0);
+        LOGGER.info("音频时长:{}", randomAccessFile.length());
         randomAccessFile.write(new WavHeader(new AudioRecordConfig(), randomAccessFile.length()).toBytes());
         randomAccessFile.close();
         userRandomAccessFileMap.remove(phone);