Kaynağa Gözat

feat:小节评分

Joburgess 4 yıl önce
ebeveyn
işleme
12e53485dc

+ 22 - 17
mec-biz/src/main/java/com/ym/mec/biz/handler/WebSocketHandler.java

@@ -154,20 +154,24 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
         if(Objects.nonNull(userSoundInfoMap.get(phone).getAccessFile())){
             userSoundInfoMap.get(phone).getAccessFile().write(message.getPayload().array());
         }
-        LOGGER.info(JSON.toJSONString(message.getPayload().array()));
-
-//        List<MusicPitchDetailDto> recordInfo = new ArrayList<>();
-//        AudioDispatcher dispatcher = AudioDispatcherFactory.fromByteArray(message.getPayload().array(), audioFormat, simpleSize, 128);
-//        dispatcher.addAudioProcessor(new PitchProcessor(algo, simpleRate, simpleSize, (pitchDetectionResult, audioEvent) -> {
-//            int timeStamp = (int) (userSoundInfoMap.get(phone).getMeasureStartTime() + audioEvent.getTimeStamp()*1000);
-//            float pitch = pitchDetectionResult.getPitch();
-////            LOGGER.info("频率:{}, {}", timeStamp, pitch);
-//            recordInfo.add(new MusicPitchDetailDto(timeStamp, pitch));
-//        }));
-//        dispatcher.run();
-//        if(Objects.isNull(userSoundInfoMap.get(phone).getAccessFile())){
-//            return;
-//        }
+
+        byte[] bytes = new byte[message.getPayloadLength()];
+        userSoundInfoMap.get(phone).getAccessFile().seek(0);
+        userSoundInfoMap.get(phone).getAccessFile().readFully(bytes);
+        bytes = message.getPayload().array();
+
+        List<MusicPitchDetailDto> recordInfo = new ArrayList<>();
+        AudioDispatcher dispatcher = AudioDispatcherFactory.fromByteArray(bytes, audioFormat, simpleSize, 128);
+        dispatcher.addAudioProcessor(new PitchProcessor(algo, simpleRate, simpleSize, (pitchDetectionResult, audioEvent) -> {
+            int timeStamp = (int) (userSoundInfoMap.get(phone).getMeasureStartTime() + audioEvent.getTimeStamp()*1000);
+            float pitch = pitchDetectionResult.getPitch();
+            LOGGER.info("频率:{}, {}", timeStamp, pitch);
+            recordInfo.add(new MusicPitchDetailDto(timeStamp, pitch));
+        }));
+        dispatcher.run();
+        if(Objects.isNull(userSoundInfoMap.get(phone).getAccessFile())){
+            return;
+        }
 
         double recordTime = userSoundInfoMap.get(phone).getAccessFile().length()/(audioFormat.getFrameSize()*audioFormat.getFrameRate())*1000;
 
@@ -178,7 +182,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
             if(recordTime>(userMeasureEndTimeMapEntry.getValue().getEndTimeStamp()+ot)){
                 LOGGER.info("频分开始{}:{}", recordTime, userSoundInfoMap.get(phone).getAccessFile().length());
 //                measureCompare(phone, userMeasureEndTimeMapEntry.getKey());
-                measureCompare2(phone, userMeasureEndTimeMapEntry.getValue());
+//                measureCompare2(phone, userMeasureEndTimeMapEntry.getValue());
                 userSoundInfoMap.get(phone).getMeasureEndTime().remove(userMeasureEndTimeMapEntry.getKey());
                 break;
             }
@@ -417,8 +421,9 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
 
         List<MusicPitchDetailDto> recordInfo = new ArrayList<>();
         byte[] bytes = new byte[measureByteNum];
-        userSoundInfoMap.get(phone).getAccessFile().seek((userSoundInfoMap.get(phone).getAccessFile().length()-measureByteNum));
-        userSoundInfoMap.get(phone).getAccessFile().readFully(bytes);
+//        userSoundInfoMap.get(phone).getAccessFile().seek((userSoundInfoMap.get(phone).getAccessFile().length()-measureByteNum));
+        userSoundInfoMap.get(phone).getAccessFile().seek(0);
+        userSoundInfoMap.get(phone).getAccessFile().read(bytes);
 
         userSoundInfoMap.get(phone).getAccessFile().seek(userSoundInfoMap.get(phone).getAccessFile().length());