修复工作

This commit is contained in:
2025-10-02 14:55:58 +08:00
parent b43cf4bc5e
commit 89535c9a5c

View File

@@ -176,6 +176,7 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
// 添加日志级别参数(临时调试用)
this.addArgument("-loglevel").addArgument("info")
.addArgument("-fflags").addArgument("+genpts") // 生成PTS时间戳在输入之前
.addArgument("-rtsp_transport").addArgument("tcp")
.addArgument("-i").addArgument(cameraDto.getUrl())
.addArgument("-max_delay").addArgument("1");
@@ -183,20 +184,24 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
if (useSystemFFmpeg) {
// 系统 FFmpeg使用 libx264 重新编码
log.info("🎬 使用 libx264 编码器(重新编码)");
this.addArgument("-g").addArgument("25")
.addArgument("-r").addArgument("25")
.addArgument("-c:v").addArgument("libx264")
this.addArgument("-c:v").addArgument("libx264")
.addArgument("-preset").addArgument("ultrafast")
.addArgument("-tune").addArgument("zerolatency")
.addArgument("-profile:v").addArgument("baseline")
.addArgument("-level").addArgument("3.0")
.addArgument("-pix_fmt").addArgument("yuv420p") // 像素格式
.addArgument("-g").addArgument("50") // GOP大小关键帧间隔
.addArgument("-keyint_min").addArgument("50") // 最小关键帧间隔
.addArgument("-sc_threshold").addArgument("0") // 禁用场景切换检测
.addArgument("-r").addArgument("25") // 帧率
.addArgument("-b:v").addArgument("1000k")
.addArgument("-maxrate").addArgument("1000k")
.addArgument("-bufsize").addArgument("2000k")
.addArgument("-c:a").addArgument("aac")
.addArgument("-strict").addArgument("experimental")
.addArgument("-b:a").addArgument("64k")
.addArgument("-ar").addArgument("44100");
.addArgument("-ar").addArgument("44100")
.addArgument("-ac").addArgument("1"); // 单声道
} else {
// JavaCV FFmpeg使用 copy不重新编码只重新封装
log.info("📦 使用 copy 编码器(不重新编码,只重新封装)");
@@ -204,7 +209,9 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
.addArgument("-c:a").addArgument("copy");
}
this.addArgument("-f").addArgument("flv");
// 🔑 关键:添加 FLV 格式参数,确保 flv.js 能正确解析
this.addArgument("-f").addArgument("flv")
.addArgument("-flvflags").addArgument("add_keyframe_index"); // 添加关键帧索引
}
// private void buildCommand() {