From 71919393ef5fe141dc9efc1cfcafbc643fbff373 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Mon, 4 Aug 2025 15:24:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=9A=E6=97=B6=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/innerService/ProcessService.java | 37 ++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) 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 ea4d177..17c9ff1 100644 --- a/src/main/java/com/tuoheng/steam/service/innerService/ProcessService.java +++ b/src/main/java/com/tuoheng/steam/service/innerService/ProcessService.java @@ -152,21 +152,20 @@ public class ProcessService { public StreamProcess takePic(String streamUrl) throws IOException { String outFileName = targetPath + "/" +UUID.randomUUID().toString() +".jpg"; - + String command = String.format( + ffmpeg+ " -i %s -vf fps=1 -frames:v 1 -q:v 2 %s", + streamUrl, outFileName); + +// -rw_timeout 5 + List listCommand = new ArrayList<>(); listCommand.add(ffmpeg); // ffmpeg 路径 - - // 添加重连和超时参数 - listCommand.add("-reconnect"); - listCommand.add("1"); - listCommand.add("-reconnect_streamed"); - listCommand.add("1"); - listCommand.add("-reconnect_delay_max"); - listCommand.add("5"); - listCommand.add("-rw_timeout"); - listCommand.add("10000000"); // 10秒读取超时 - +// listCommand.add("-timeout"); +// listCommand.add("3000000"); +// listCommand.add("-rw_timeout"); +// listCommand.add("5000000"); listCommand.add("-i"); + // listCommand.add(" -timeout 3000000 -rw_timeout 5000000 -i "); listCommand.add(streamUrl); // 流地址 listCommand.add("-vf"); listCommand.add("fps=1"); @@ -174,23 +173,19 @@ public class ProcessService { listCommand.add("1"); listCommand.add("-q:v"); listCommand.add("2"); - listCommand.add("-y"); // 覆盖输出文件 listCommand.add(outFileName); // 输出文件名 - logger.info("takePic {}", listCommand); ProcessBuilder pb = new ProcessBuilder(listCommand); pb.redirectErrorStream(true); Process process = pb.start(); - - // 增加超时时间到60秒 try { - if (!process.waitFor(60, TimeUnit.SECONDS)) { + if (!process.waitFor(30, TimeUnit.SECONDS)) { process.destroyForcibly(); - logger.warn("takePic {} 超时60秒", listCommand); + // 处理超时逻辑 + logger.info("takePic {} 超时", listCommand); } - }catch (Exception e) { - logger.error("takePic 等待进程异常", e); + }catch (Exception ignore) { } loggingService.execute(new Runnable() { @@ -200,7 +195,7 @@ public class ProcessService { new InputStreamReader(process.getInputStream()))) { String line; while ((line = reader.readLine()) != null) { - logger.info("takePic-------- {}",line); + logger.info("recordStream-------- {}",line); } } catch (IOException e) { logger.info("takePic-------- Over");