123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package com.ruoyi.bd.socket.wsctl;
- import com.ruoyi.bd.service.impl.FFMpegService;
- import org.springframework.messaging.MessageHeaders;
- import org.springframework.messaging.handler.annotation.MessageMapping;
- import org.springframework.messaging.handler.annotation.Payload;
- import org.springframework.web.bind.annotation.RestController;
- import javax.annotation.Resource;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.Map;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- @RestController
- public class AudioSocketServer {
- @Resource
- private FFMpegService ffmpegService;
- private final ExecutorService executorService = Executors.newSingleThreadExecutor();
- private static final String TEMP_FILE_PREFIX = "uploaded_audio_%s";
- @MessageMapping("/audio/stream")
- public void handleSendMessage(@Payload byte[] message, MessageHeaders messageHeaders) throws IOException {
- // String sessionId = (String) headerAccessor.getSessionAttributes().get("HTTP_SESSION_ID");
- Map map = messageHeaders.get("nativeHeaders", Map.class);
- // System.out.println("sessionId = " + message + ",map" + MapUtil.get(map, "camera", ArrayList.class).get(0));
- // 使用 sessionId 处理消息
- // 可以通过 sessionManager 获取用户信息
- byte[] audioData = message;
- File tempFile = File.createTempFile(String.format(TEMP_FILE_PREFIX, "1111"), ".g711");
- try (FileOutputStream fos = new FileOutputStream(tempFile)) {
- fos.write(audioData);
- ffmpegService.writeToRtsp(tempFile.getAbsolutePath());
- } catch (IOException | InterruptedException e) {
- e.printStackTrace();
- } finally {
- // tempFile.delete();
- }
- // executorService.submit(() -> {
- // try {
- //// System.out.println("tempFile.getAbsolutePath()" + tempFile.getAbsolutePath());
- //// ffmpegService.writeToRtsp(tempFile.getAbsolutePath());
- //// } catch (IOException | InterruptedException e) {
- //// e.printStackTrace();
- //// } finally {
- //// tempFile.delete();
- //// }
- // });
- }
- }
|