修复工作

This commit is contained in:
2025-10-01 23:02:42 +08:00
parent 3050496a83
commit e6941d5ae0
2 changed files with 8 additions and 10 deletions

View File

@@ -70,8 +70,8 @@ const getDetails = async (deviceId) => {
tableData.value = res.data;
// 使用当前访问的域名和端口通过Nginx代理访问视频流
// 注意RTSP URL需要原样传递不要编码&&&作为特殊分隔符
// 添加ffmpeg=true参数强制使用FFmpeg转换为FLV格式
playUrl.value = `${window.location.origin}/live?url=${tableData.value.url}&&&ffmpeg=true`;
// 不使用 ffmpeg=true,让系统自动选择 JavaCV 模式(兼容 HEVC
playUrl.value = `${window.location.origin}/live?url=${tableData.value.url}`;
console.log('播放地址:', playUrl.value);
handlePlay();
}

View File

@@ -125,6 +125,7 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
/**
* 构建ffmpeg命令
* 注意FLV 格式不支持 HEVC需要转换为 H.264
*/
private void buildCommand() {
// 添加日志级别参数(临时调试用)
@@ -132,18 +133,15 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
.addArgument("-rtsp_transport").addArgument("tcp")
.addArgument("-i").addArgument(cameraDto.getUrl())
.addArgument("-max_delay").addArgument("1")
// .addArgument("-strict").addArgument("experimental")
.addArgument("-g").addArgument("25").addArgument("-r").addArgument("25")
// .addArgument("-b").addArgument("200000")
// .addArgument("-filter_complex").addArgument("setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'")
// 使用 copy 直接复制视频流,不重新编码(最快,兼容性最好)
.addArgument("-c:v").addArgument("copy")
// 使用 h264 编码器JavaCV FFmpeg 内置)而不是 libx264
.addArgument("-c:v").addArgument("h264")
.addArgument("-preset:v").addArgument("ultrafast")
.addArgument("-tune:v").addArgument("zerolatency")
.addArgument("-b:v").addArgument("1000k") // 视频比特率
// 音频重新编码为 AACFLV 需要)
.addArgument("-c:a").addArgument("aac")
.addArgument("-strict").addArgument("experimental")
// .addArgument("-qmin").addArgument("28")
// .addArgument("-qmax").addArgument("32")
// .addArgument("-b:v").addArgument("448k")
.addArgument("-b:a").addArgument("64k")
.addArgument("-f").addArgument("flv");
}