From 2a689d6e5c2bd5aa94b40372166ce7ce016aa582 Mon Sep 17 00:00:00 2001 From: 86156 <823267011@qq.com> Date: Thu, 2 Oct 2025 14:16:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=A5=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../video/device/component/cusPlayer.vue | 22 ++++++++++++++++++- .../thread/MediaTransferFlvByFFmpeg.java | 11 +++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/rtsp-vue/src/views/video/device/component/cusPlayer.vue b/rtsp-vue/src/views/video/device/component/cusPlayer.vue index 11dd31a..c387b93 100644 --- a/rtsp-vue/src/views/video/device/component/cusPlayer.vue +++ b/rtsp-vue/src/views/video/device/component/cusPlayer.vue @@ -92,6 +92,24 @@ export default { console.log('✅ 播放器对象已创建:', this.player); console.log('🎬 播放器底层视频元素:', this.player.video); + // 监听 flv.js 的统计信息和错误 + if (this.player.flv) { + console.log('📊 flv.js 实例:', this.player.flv); + + // 监听 flv.js 的统计信息 + this.player.flv.on('statistics_info', (stats) => { + console.log('📈 flv.js 统计:', stats); + }); + + // 监听 flv.js 的错误 + this.player.flv.on('error', (errorType, errorDetail, errorInfo) => { + console.error('💥 flv.js 错误:'); + console.error(' 类型:', errorType); + console.error(' 详情:', errorDetail); + console.error(' 信息:', errorInfo); + }); + } + // 监听播放器错误 this.player.on('error', (error) => { console.error('❌ 播放器错误:', error); @@ -101,7 +119,9 @@ export default { currentTime: this.player.video.currentTime, duration: this.player.video.duration, readyState: this.player.video.readyState, - networkState: this.player.video.networkState + networkState: this.player.video.networkState, + buffered: this.player.video.buffered.length > 0 ? + `${this.player.video.buffered.start(0)} - ${this.player.video.buffered.end(0)}` : 'none' }); }); 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 cf5ac9f..4e8e7ac 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 @@ -242,7 +242,16 @@ public class MediaTransferFlvByFFmpeg extends MediaTransfer { if (header == null && len >= 13) { header = new byte[13]; System.arraycopy(buffer, 0, header, 0, 13); - log.info("✅ FLV header已获取: {} bytes", header.length); + + // 验证 FLV header(应该是 'FLV' + version + flags) + String magic = new String(header, 0, 3); + log.info("✅ FLV header已获取: {} bytes, Magic: {}, Version: {}, Flags: {}", + header.length, magic, header[3], header[4]); + + if (!"FLV".equals(magic)) { + log.error("❌ FLV header 无效! Magic: {}", magic); + } + headerSent = true; // 如果有剩余数据(包含header+数据),一起发送