AudioSocketServer.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package com.ruoyi.bd.socket.wsctl;
  2. import com.ruoyi.bd.service.impl.FFMpegService;
  3. import org.springframework.messaging.MessageHeaders;
  4. import org.springframework.messaging.handler.annotation.MessageMapping;
  5. import org.springframework.messaging.handler.annotation.Payload;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import javax.annotation.Resource;
  8. import java.io.File;
  9. import java.io.FileOutputStream;
  10. import java.io.IOException;
  11. import java.util.Map;
  12. import java.util.concurrent.ExecutorService;
  13. import java.util.concurrent.Executors;
  14. @RestController
  15. public class AudioSocketServer {
  16. @Resource
  17. private FFMpegService ffmpegService;
  18. private final ExecutorService executorService = Executors.newSingleThreadExecutor();
  19. private static final String TEMP_FILE_PREFIX = "uploaded_audio_%s";
  20. @MessageMapping("/audio/stream")
  21. public void handleSendMessage(@Payload byte[] message, MessageHeaders messageHeaders) throws IOException {
  22. // String sessionId = (String) headerAccessor.getSessionAttributes().get("HTTP_SESSION_ID");
  23. Map map = messageHeaders.get("nativeHeaders", Map.class);
  24. // System.out.println("sessionId = " + message + ",map" + MapUtil.get(map, "camera", ArrayList.class).get(0));
  25. // 使用 sessionId 处理消息
  26. // 可以通过 sessionManager 获取用户信息
  27. byte[] audioData = message;
  28. File tempFile = File.createTempFile(String.format(TEMP_FILE_PREFIX, "1111"), ".g711");
  29. try (FileOutputStream fos = new FileOutputStream(tempFile)) {
  30. fos.write(audioData);
  31. ffmpegService.writeToRtsp(tempFile.getAbsolutePath());
  32. } catch (IOException | InterruptedException e) {
  33. e.printStackTrace();
  34. } finally {
  35. // tempFile.delete();
  36. }
  37. // executorService.submit(() -> {
  38. // try {
  39. //// System.out.println("tempFile.getAbsolutePath()" + tempFile.getAbsolutePath());
  40. //// ffmpegService.writeToRtsp(tempFile.getAbsolutePath());
  41. //// } catch (IOException | InterruptedException e) {
  42. //// e.printStackTrace();
  43. //// } finally {
  44. //// tempFile.delete();
  45. //// }
  46. // });
  47. }
  48. }