下载 收流参数调整
修复 下载不完整问题 调整 Gb28181DownloadService.AsyncContext 默认超时时间
This commit is contained in:
parent
bff7ad1b37
commit
0de97d39a8
@ -21,7 +21,7 @@ public class FfmpegSupportService {
|
||||
public Executor downloadToStream(String input, long time, TimeUnit unit, ExecuteStreamHandler streamHandler, ExecuteResultHandler executeResultHandler) {
|
||||
FfmpegConfig.Rtp rtp = ffmpegConfig.getRtp();
|
||||
FfmpegConfig.Debug debug = ffmpegConfig.getDebug();
|
||||
String inputParam = debug.getInput() ? rtp.getInput() : StringUtils.joinWith(" ", rtp.getInput(), input);
|
||||
String inputParam = debug.getDownload() ? rtp.getDownload() : StringUtils.joinWith(" ", rtp.getDownload(), input);
|
||||
log.info("视频输入参数 {}", inputParam);
|
||||
|
||||
String outputParam = debug.getOutput() ? rtp.getOutput() : StringUtils.joinWith(" ", rtp.getOutput(), "-");
|
||||
@ -34,7 +34,7 @@ public class FfmpegSupportService {
|
||||
public Executor ffmpegExecutor(String inputParam,String outputParam, long time, TimeUnit unit,ExecuteStreamHandler streamHandler,ExecuteResultHandler executeResultHandler){
|
||||
FfmpegConfig.Rtp rtp = ffmpegConfig.getRtp();
|
||||
String logLevelParam = StringUtils.joinWith(" ","-loglevel", rtp.getLogLevel());
|
||||
String command = StringUtils.joinWith(" ", ffmpegConfig.getFfmpeg(), inputParam, outputParam, logLevelParam);
|
||||
String command = StringUtils.joinWith(" ", ffmpegConfig.getFfmpeg(), logLevelParam, inputParam, outputParam);
|
||||
CommandLine commandLine = CommandLine.parse(command);
|
||||
log.info("{}", commandLine);
|
||||
Executor executor = new DefaultExecutor();
|
||||
|
@ -125,6 +125,7 @@ public class Gb28181DownloadService {
|
||||
@SneakyThrows
|
||||
public void video(HttpServletRequest request, HttpServletResponse response, String deviceCode, Date startTime, Date endTime, Boolean fileHeader) {
|
||||
AsyncContext asyncContext = request.startAsync();
|
||||
asyncContext.setTimeout(0);
|
||||
asyncContext.start(()->{
|
||||
HttpServletResponse asyncResponse = (HttpServletResponse)asyncContext.getResponse();
|
||||
try{
|
||||
|
@ -1,5 +1,8 @@
|
||||
package cn.skcks.docking.gb28181.wvp.service.video;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.skcks.docking.gb28181.wvp.config.WvpProxyConfig;
|
||||
import cn.skcks.docking.gb28181.wvp.service.ffmpeg.FfmpegSupportService;
|
||||
import jakarta.servlet.AsyncContext;
|
||||
@ -160,6 +163,7 @@ public class VideoService {
|
||||
ByteArrayOutputStream errorStream = new ByteArrayOutputStream();
|
||||
PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream, errorStream);
|
||||
DefaultExecuteResultHandler defaultExecuteResultHandler = new DefaultExecuteResultHandler();
|
||||
DateTime startTime = DateUtil.date();
|
||||
Executor executor = ffmpegSupportService.downloadToStream(url, time, TimeUnit.SECONDS,streamHandler,defaultExecuteResultHandler);
|
||||
log.info("开始录制 {}", url);
|
||||
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
|
||||
@ -169,6 +173,8 @@ public class VideoService {
|
||||
log.info("结束录制 {}", url);
|
||||
}, time, TimeUnit.SECONDS);
|
||||
defaultExecuteResultHandler.waitFor();
|
||||
DateTime endTime = DateUtil.date();
|
||||
log.info("录制进程结束 {}, 录制耗时: {}", url, DateUtil.between(startTime,endTime, DateUnit.SECOND));
|
||||
if(errorStream.size() > 0){
|
||||
log.error("{}", errorStream);
|
||||
}
|
||||
|
@ -60,12 +60,13 @@ proxy:
|
||||
ffmpeg-support:
|
||||
task:
|
||||
max: 4
|
||||
ffmpeg: C:\ffmpeg\bin\ffmpeg.exe
|
||||
ffmpeg: D:\Soft\Captura\ffmpeg\ffmpeg.exe
|
||||
ffprobe: D:\Soft\Captura\ffmpeg\ffprobe.exe
|
||||
rtp:
|
||||
# input: -i http://10.10.10.200:5080/live/test.live.flv
|
||||
input: -re -i
|
||||
output: -vcodec copy -acodec copy -movflags empty_moov+frag_keyframe+default_base_moof -f mp4 # -rtsp_transport tcp
|
||||
output: -preset ultrafast -tune zerolatency -vcodec libx264 -acodec aac -movflags empty_moov+frag_keyframe+default_base_moof -f mp4 # -rtsp_transport tcp
|
||||
download: -thread_queue_size 128 -i
|
||||
debug:
|
||||
download: false
|
||||
input: false
|
||||
|
@ -24,8 +24,8 @@ spring:
|
||||
username: root
|
||||
password: 123456a
|
||||
url: jdbc:mysql://192.168.1.241:3306/gb28181_docking_platform?createDatabaseIfNotExist=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
|
||||
# profiles:
|
||||
# active: local
|
||||
profiles:
|
||||
active: local
|
||||
cloud:
|
||||
openfeign:
|
||||
httpclient:
|
||||
@ -73,7 +73,8 @@ ffmpeg-support:
|
||||
ffprobe: /usr/bin/ffmpeg/ffprobe
|
||||
rtp:
|
||||
input: -i
|
||||
output: -vcodec h264 -acodec aac -movflags empty_moov+frag_keyframe+default_base_moof -f mp4 # -rtsp_transport tcp
|
||||
output: -preset ultrafast -tune zerolatency -vcodec libx264 -acodec aac -movflags empty_moov+frag_keyframe+default_base_moof -f mp4 # -rtsp_transport tcp
|
||||
download: -thread_queue_size 128 -i
|
||||
debug:
|
||||
download: false
|
||||
input: false
|
||||
|
Loading…
Reference in New Issue
Block a user