| 
					
				 | 
			
			
				@@ -1143,9 +1143,82 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //获取第一帧封面 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     async getFirstThumbnail(file, form){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      getThumbnail(file).then(response => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //截取小文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const clippedBlob = await this.clipVideoFirstTwoSeconds(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const clippedFile = new File([clippedBlob], 'clipped_video.mp4', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: 'video/mp4', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          lastModified: Date.now() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log("调用请请求---------------》",response) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 3. 调用接口获取封面 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const response = await getThumbnail(clippedFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log("获取封面请求---------------》",response) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         form.thumbnail = response.url; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.error('获取封面失败:', error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //截取大文件视频 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    clipVideoFirstTwoSeconds(file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建视频元素用于处理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const video = document.createElement('video'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        video.src = URL.createObjectURL(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        video.crossOrigin = 'anonymous'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        video.preload = 'metadata'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 视频元数据加载完成后开始处理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        video.onloadedmetadata = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 计算截取时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const duration = Math.min(2, video.duration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 直接从视频元素捕获流 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const stream = video.captureStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 创建 MediaRecorder 录制截取的片段 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const mediaRecorder = new MediaRecorder(stream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const chunks = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 收集录制的视频数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mediaRecorder.ondataavailable = (e) => chunks.push(e.data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 录制结束后处理结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mediaRecorder.onstop = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 合并数据为 Blob(MP4 格式) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              const blob = new Blob(chunks, { type: 'video/mp4' }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              resolve(blob); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // 清理资源 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              URL.revokeObjectURL(video.src); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              stream.getTracks().forEach(track => track.stop()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 开始录制 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mediaRecorder.start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 播放视频并在指定时间后停止录制 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            video.currentTime = 0; // 从开头开始 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            video.play(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 到达截取时长后停止录制 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              video.pause(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              mediaRecorder.stop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }, duration * 1000); // 转换为毫秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            reject(new Error('视频截取失败: ' + error.message)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 视频加载错误处理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        video.onerror = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          reject(new Error('视频加载失败,请检查文件格式')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //上传腾讯云Pcdn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     async uploadVideoToTxPcdn(file, form, onProgress) { 
			 |