This commit is contained in:
孙小云 2025-12-25 13:08:13 +08:00
parent 15ce14f117
commit 0ba76855f0
5 changed files with 13 additions and 6 deletions

View File

@ -64,14 +64,14 @@ public class StreamRecordController {
}
@GetMapping({"start"})
public Response<StreamTask> startRecording(@RequestParam String streamUrl,@RequestParam String transaction) {
public Response<StreamTask> startRecording(@RequestParam String streamUrl) {
logger.info("启动录制 :" + streamUrl);
streamUrl = this.streamSwitch(streamUrl);
logger.info("启动录制_ :" + streamUrl);
if (Objects.isNull(streamUrl)) {
return Response.fail(-1);
} else {
Response<StreamTask> response = Response.success(this.taskService.startTask(streamUrl,transaction));
Response<StreamTask> response = Response.success(this.taskService.startTask(streamUrl));
logger.info("启动录制返回 :" + JSON.toJSONString(response));
return response;
}

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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