修复工作

This commit is contained in:
2025-10-01 23:12:52 +08:00
parent ca021cdcce
commit cfd0489d3d
3 changed files with 25 additions and 10 deletions

View File

@@ -14,6 +14,7 @@ import io.netty.util.concurrent.GenericFutureListener;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
@@ -83,7 +84,16 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
}
public MediaTransferFlvByFFmpeg(CameraDto cameraDto) {
command.add(System.getProperty(MediaConstant.ffmpegPathKey));
// 优先使用系统 FFmpeg包含 libx264如果不存在则使用 JavaCV 的
String ffmpegPath = System.getProperty(MediaConstant.ffmpegPathKey);
// 尝试使用系统 FFmpeg
if (new File("/usr/bin/ffmpeg").exists()) {
command.add("/usr/bin/ffmpeg");
log.info("使用系统 FFmpeg: /usr/bin/ffmpeg");
} else {
command.add(ffmpegPath);
log.info("使用 JavaCV FFmpeg: {}", ffmpegPath);
}
this.cameraDto = cameraDto;
this.enableLog = true; // 临时启用日志,用于调试
buildCommand();
@@ -125,8 +135,8 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
/**
* 构建ffmpeg命令
* 注意FLV 格式不支持 HEVC需要转换
* 使用 mpeg4 编码器JavaCV FFmpeg 通常内置
* 注意FLV 格式不支持 HEVC需要转换为 H.264
* 使用 libx264 编码器(系统 FFmpeg 包含
*/
private void buildCommand() {
// 添加日志级别参数(临时调试用)
@@ -136,10 +146,13 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
.addArgument("-max_delay").addArgument("1")
.addArgument("-g").addArgument("25")
.addArgument("-r").addArgument("25")
// 使用 mpeg4 编码器JavaCV FFmpeg 内置,兼容 FLV
.addArgument("-c:v").addArgument("mpeg4")
.addArgument("-q:v").addArgument("5") // 质量参数1-31数字越小质量越好
.addArgument("-b:v").addArgument("800k") // 视频比特率
// 使用 libx264 编码器(系统 FFmpeg 包含,质量最好
.addArgument("-c:v").addArgument("libx264")
.addArgument("-preset").addArgument("ultrafast")
.addArgument("-tune").addArgument("zerolatency")
.addArgument("-b:v").addArgument("1000k") // 视频比特率
.addArgument("-maxrate").addArgument("1000k")
.addArgument("-bufsize").addArgument("2000k")
// 音频编码
.addArgument("-c:a").addArgument("aac")
.addArgument("-strict").addArgument("experimental")