From 889a978bbe3c75a9d76a2a131f0692b89c12b8a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Mon, 14 Apr 2025 09:39:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tuoheng/steam/service/IRecordService.java | 5 +++-- .../com/tuoheng/steam/service/ITaskService.java | 3 +++ .../steam/service/innerService/ProcessService.java | 13 ++++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/tuoheng/steam/service/IRecordService.java b/src/main/java/com/tuoheng/steam/service/IRecordService.java index ded0f48..f33885e 100644 --- a/src/main/java/com/tuoheng/steam/service/IRecordService.java +++ b/src/main/java/com/tuoheng/steam/service/IRecordService.java @@ -5,14 +5,15 @@ import com.tuoheng.steam.service.dos.*; import java.util.Date; import java.util.List; +/** + * 视频回放服务 + */ public interface IRecordService { public List findDaysPath(); public List findInDayRecord(DayRecord dayRecord); - - public void mergeMp4(FlvRecord flvRecord); } diff --git a/src/main/java/com/tuoheng/steam/service/ITaskService.java b/src/main/java/com/tuoheng/steam/service/ITaskService.java index 5bb9882..e799a37 100644 --- a/src/main/java/com/tuoheng/steam/service/ITaskService.java +++ b/src/main/java/com/tuoheng/steam/service/ITaskService.java @@ -2,6 +2,9 @@ package com.tuoheng.steam.service; import com.tuoheng.steam.dos.StreamTask; +/** + * 视频录制服务 + */ public interface ITaskService { public StreamTask startTask(String streamUrl); 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 ef7caba..fe04c50 100644 --- a/src/main/java/com/tuoheng/steam/service/innerService/ProcessService.java +++ b/src/main/java/com/tuoheng/steam/service/innerService/ProcessService.java @@ -14,10 +14,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; @@ -143,9 +140,15 @@ public class ProcessService { public StreamProcess recordStream(String streamUrl) throws IOException { String recordFileName = splitPath+'/'+UUID.randomUUID().toString() +".ts"; + /** + * 如果streamUrl末尾有个_,在实际录制的时候需要将_去除 + */ String command = String.format( ffmpeg+ " -i %s -c copy -f mpegts -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 2 %s", - streamUrl, recordFileName); + Optional.of(streamUrl) + .filter(s -> s.endsWith("_")) + .map(s -> s.substring(0, s.length() - 1)) + .orElse(streamUrl), recordFileName); logger.info("recordStream {}", command); ProcessBuilder pb = new ProcessBuilder(command.split(" ")); pb.redirectErrorStream(true);