diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/thread/MediaTransferFlvByFFmpeg.java b/ruoyi-video/src/main/java/com/ruoyi/video/thread/MediaTransferFlvByFFmpeg.java index eee1d91..a6bf1a0 100644 --- a/ruoyi-video/src/main/java/com/ruoyi/video/thread/MediaTransferFlvByFFmpeg.java +++ b/ruoyi-video/src/main/java/com/ruoyi/video/thread/MediaTransferFlvByFFmpeg.java @@ -125,7 +125,8 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer { /** * 构建ffmpeg命令 - * 注意:FLV 格式不支持 HEVC,需要转换为 H.264 + * 注意:FLV 格式不支持 HEVC,需要转换 + * 使用 mpeg4 编码器(JavaCV FFmpeg 通常内置) */ private void buildCommand() { // 添加日志级别参数(临时调试用) @@ -133,16 +134,17 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer { .addArgument("-rtsp_transport").addArgument("tcp") .addArgument("-i").addArgument(cameraDto.getUrl()) .addArgument("-max_delay").addArgument("1") - .addArgument("-g").addArgument("25").addArgument("-r").addArgument("25") - // 使用 h264 编码器(JavaCV FFmpeg 内置)而不是 libx264 - .addArgument("-c:v").addArgument("h264") - .addArgument("-preset:v").addArgument("ultrafast") - .addArgument("-tune:v").addArgument("zerolatency") - .addArgument("-b:v").addArgument("1000k") // 视频比特率 - // 音频重新编码为 AAC(FLV 需要) + .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") // 视频比特率 + // 音频编码 .addArgument("-c:a").addArgument("aac") .addArgument("-strict").addArgument("experimental") .addArgument("-b:a").addArgument("64k") + .addArgument("-ar").addArgument("44100") // 音频采样率 .addArgument("-f").addArgument("flv"); }