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