修复工作
This commit is contained in:
@@ -70,8 +70,8 @@ const getDetails = async (deviceId) => {
|
|||||||
tableData.value = res.data;
|
tableData.value = res.data;
|
||||||
// 使用当前访问的域名和端口,通过Nginx代理访问视频流
|
// 使用当前访问的域名和端口,通过Nginx代理访问视频流
|
||||||
// 注意:RTSP URL需要原样传递,不要编码,&&&作为特殊分隔符
|
// 注意:RTSP URL需要原样传递,不要编码,&&&作为特殊分隔符
|
||||||
// 添加ffmpeg=true参数,强制使用FFmpeg转换为FLV格式
|
// 不使用 ffmpeg=true,让系统自动选择 JavaCV 模式(兼容 HEVC)
|
||||||
playUrl.value = `${window.location.origin}/live?url=${tableData.value.url}&&&ffmpeg=true`;
|
playUrl.value = `${window.location.origin}/live?url=${tableData.value.url}`;
|
||||||
console.log('播放地址:', playUrl.value);
|
console.log('播放地址:', playUrl.value);
|
||||||
handlePlay();
|
handlePlay();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建ffmpeg命令
|
* 构建ffmpeg命令
|
||||||
|
* 注意:FLV 格式不支持 HEVC,需要转换为 H.264
|
||||||
*/
|
*/
|
||||||
private void buildCommand() {
|
private void buildCommand() {
|
||||||
// 添加日志级别参数(临时调试用)
|
// 添加日志级别参数(临时调试用)
|
||||||
@@ -132,18 +133,15 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer {
|
|||||||
.addArgument("-rtsp_transport").addArgument("tcp")
|
.addArgument("-rtsp_transport").addArgument("tcp")
|
||||||
.addArgument("-i").addArgument(cameraDto.getUrl())
|
.addArgument("-i").addArgument(cameraDto.getUrl())
|
||||||
.addArgument("-max_delay").addArgument("1")
|
.addArgument("-max_delay").addArgument("1")
|
||||||
// .addArgument("-strict").addArgument("experimental")
|
|
||||||
.addArgument("-g").addArgument("25").addArgument("-r").addArgument("25")
|
.addArgument("-g").addArgument("25").addArgument("-r").addArgument("25")
|
||||||
// .addArgument("-b").addArgument("200000")
|
// 使用 h264 编码器(JavaCV FFmpeg 内置)而不是 libx264
|
||||||
// .addArgument("-filter_complex").addArgument("setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'")
|
.addArgument("-c:v").addArgument("h264")
|
||||||
// 使用 copy 直接复制视频流,不重新编码(最快,兼容性最好)
|
.addArgument("-preset:v").addArgument("ultrafast")
|
||||||
.addArgument("-c:v").addArgument("copy")
|
.addArgument("-tune:v").addArgument("zerolatency")
|
||||||
|
.addArgument("-b:v").addArgument("1000k") // 视频比特率
|
||||||
// 音频重新编码为 AAC(FLV 需要)
|
// 音频重新编码为 AAC(FLV 需要)
|
||||||
.addArgument("-c:a").addArgument("aac")
|
.addArgument("-c:a").addArgument("aac")
|
||||||
.addArgument("-strict").addArgument("experimental")
|
.addArgument("-strict").addArgument("experimental")
|
||||||
// .addArgument("-qmin").addArgument("28")
|
|
||||||
// .addArgument("-qmax").addArgument("32")
|
|
||||||
// .addArgument("-b:v").addArgument("448k")
|
|
||||||
.addArgument("-b:a").addArgument("64k")
|
.addArgument("-b:a").addArgument("64k")
|
||||||
.addArgument("-f").addArgument("flv");
|
.addArgument("-f").addArgument("flv");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user