丸子 пре 9 месеци
родитељ
комит
435151927f
2 измењених фајлова са 15 додато и 1 уклоњено
  1. 2 0
      index.html
  2. 13 1
      src/views/AIDevelop.vue

+ 2 - 0
index.html

@@ -6,6 +6,8 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>ai通识课程平台</title>
     <title>ai通识课程平台</title>
   </head>
   </head>
+  <script src="https://cdn.jsdelivr.net/npm/video.js/dist/video.min.js"></script>
+  <script src="https://cdn.jsdelivr.net/npm/videojs-contrib-hls/dist/videojs-contrib-hls.min.js"></script>
   <body>
   <body>
     <div id="app"></div>
     <div id="app"></div>
     <script type="module" src="/src/main.js"></script>
     <script type="module" src="/src/main.js"></script>

+ 13 - 1
src/views/AIDevelop.vue

@@ -559,16 +559,28 @@ const tryPlayVideo = () => {
       console.error('视频播放失败,可能是浏览器自动播放限制:', error)
       console.error('视频播放失败,可能是浏览器自动播放限制:', error)
     })
     })
   }
   }
+  // 判断视频格式是否为m3u8
+  const isM3u8 = course.value.courseVideoPath && course.value.courseVideoPath.endsWith('.m3u8')
   player = videojs(videoPlayer.value, {
   player = videojs(videoPlayer.value, {
     controls: true,
     controls: true,
     sources: [
     sources: [
       {
       {
         src: course.value.courseVideoPath,
         src: course.value.courseVideoPath,
-        type: 'video/mp4'
+        type: isM3u8 ? 'application/x-mpegURL' : 'video/mp4'
       }
       }
     ],
     ],
     preload: 'metadata' // 仅加载元数据,避免预加载整个文件
     preload: 'metadata' // 仅加载元数据,避免预加载整个文件
   })
   })
+  // 如果是m3u8格式,启用HLS支持
+  if (isM3u8 && !hlsRef.value) {
+    // 检查是否已加载hls.js插件
+    if (videojs.getPlugin('hls')) {
+      hlsRef.value = player.hls()
+      // 可以在这里添加额外的HLS配置
+    } else {
+      console.warn('video.js HLS插件未加载,可能无法正常播放m3u8格式视频')
+    }
+  }
 }
 }
 
 
 // 检查视频播放权限
 // 检查视频播放权限