From 0ba76855f004495cc9f6ee93d722f2a8331dbdbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Thu, 25 Dec 2025 13:08:13 +0800 Subject: [PATCH] dashuju --- .../tuoheng/steam/controller/StreamRecordController.java | 4 ++-- src/main/java/com/tuoheng/steam/service/ITaskService.java | 2 +- src/main/java/com/tuoheng/steam/service/TaskService.java | 4 ++-- .../tuoheng/steam/service/innerService/ProcessService.java | 6 +++++- src/main/resources/application.properties | 3 +++ 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tuoheng/steam/controller/StreamRecordController.java b/src/main/java/com/tuoheng/steam/controller/StreamRecordController.java index 1bc73d3..d1b7982 100644 --- a/src/main/java/com/tuoheng/steam/controller/StreamRecordController.java +++ b/src/main/java/com/tuoheng/steam/controller/StreamRecordController.java @@ -64,14 +64,14 @@ public class StreamRecordController { } @GetMapping({"start"}) - public Response startRecording(@RequestParam String streamUrl,@RequestParam String transaction) { + public Response startRecording(@RequestParam String streamUrl) { logger.info("启动录制 :" + streamUrl); streamUrl = this.streamSwitch(streamUrl); logger.info("启动录制_ :" + streamUrl); if (Objects.isNull(streamUrl)) { return Response.fail(-1); } else { - Response response = Response.success(this.taskService.startTask(streamUrl,transaction)); + Response response = Response.success(this.taskService.startTask(streamUrl)); logger.info("启动录制返回 :" + JSON.toJSONString(response)); return response; } diff --git a/src/main/java/com/tuoheng/steam/service/ITaskService.java b/src/main/java/com/tuoheng/steam/service/ITaskService.java index b91b4f2..e799a37 100644 --- a/src/main/java/com/tuoheng/steam/service/ITaskService.java +++ b/src/main/java/com/tuoheng/steam/service/ITaskService.java @@ -7,7 +7,7 @@ import com.tuoheng.steam.dos.StreamTask; */ public interface ITaskService { - public StreamTask startTask(String streamUrl,String transaction); + public StreamTask startTask(String streamUrl); public String startPic(String streamUrl); diff --git a/src/main/java/com/tuoheng/steam/service/TaskService.java b/src/main/java/com/tuoheng/steam/service/TaskService.java index 910bf0b..6286d57 100644 --- a/src/main/java/com/tuoheng/steam/service/TaskService.java +++ b/src/main/java/com/tuoheng/steam/service/TaskService.java @@ -145,12 +145,12 @@ public class TaskService implements ITaskService { } } - public StreamTask startTask(String streamUrl,String transaction) { + public StreamTask startTask(String streamUrl) { if (this.runningTasks.containsKey(streamUrl)) { return (StreamTask)this.runningTasks.get(streamUrl); } else { StreamTask taskInstance = new StreamTask(streamUrl); - taskInstance.setTransaction(transaction); +// taskInstance.setTransaction(transaction); if (this.runningTasks.putIfAbsent(streamUrl, taskInstance) == null) { logger.info("streamUrl {} startTask {} transaction {}", streamUrl, taskInstance.getTaskId(), taskInstance.getTransaction()); this.startTask(streamUrl, taskInstance); diff --git a/src/main/java/com/tuoheng/steam/service/innerService/ProcessService.java b/src/main/java/com/tuoheng/steam/service/innerService/ProcessService.java index a529692..4eeaf53 100644 --- a/src/main/java/com/tuoheng/steam/service/innerService/ProcessService.java +++ b/src/main/java/com/tuoheng/steam/service/innerService/ProcessService.java @@ -37,6 +37,10 @@ public class ProcessService { private String targetPath; @Value("${recordPath}") private String recordPath; + @Value("${video.bitrate:2000k}") + private String videoBitrate; + @Value("${audio.bitrate:128k}") + private String audioBitrate; private static final Logger logger = LoggerFactory.getLogger(ProcessService.class); ExecutorService loggingService = Executors.newCachedThreadPool(); @@ -144,7 +148,7 @@ public class ProcessService { public StreamProcess recordStream(String streamUrl) throws IOException { String var10000 = this.splitPath; String recordFileName = var10000 + "/" + UUID.randomUUID().toString() + ".ts"; - String command = String.format(this.ffmpeg + " -i %s -c copy -f mpegts -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 2 %s", Optional.of(streamUrl).filter((s) -> s.endsWith("_")).map((s) -> s.substring(0, s.length() - 1)).orElse(streamUrl), recordFileName); + String command = String.format(this.ffmpeg + " -i %s -c:v libx264 -b:v %s -c:a aac -b:a %s -f mpegts -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 2 %s", Optional.of(streamUrl).filter((s) -> s.endsWith("_")).map((s) -> s.substring(0, s.length() - 1)).orElse(streamUrl), this.videoBitrate, this.audioBitrate, recordFileName); logger.info("recordStream {}", command); ProcessBuilder pb = new ProcessBuilder(command.split(" ")); pb.redirectErrorStream(true); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index b8727be..ffd838e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -17,6 +17,9 @@ ffmpeg=ffmpeg recordPath=/data/java/srs/srs/trunk/objs/nginx/html/record livedates=8 cangneiwai=true +# 录制码率配置 (单位: kbps, 2000k = 2Mbps) +video.bitrate=4000k +audio.bitrate=128k #本地测试 #spring.application.name=stream_server