修复工作
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user