| | |
| | | } |
| | | |
| | | return result; |
| | | }; |
| | | |
| | | // 上传视频文件并自动生成缩略图 |
| | | export const uploadVideoWithThumbnail = async (videoFile) => { |
| | | const { extractVideoFrame, generateThumbnailFileName } = await import('@/utils/video.js'); |
| | | |
| | | try { |
| | | console.log('开始处理视频文件:', videoFile.name); |
| | | |
| | | // 1. 上传原视频文件 |
| | | console.log('上传视频文件...'); |
| | | const videoUploadResult = await uploadFile(videoFile); |
| | | console.log('视频上传成功:', videoUploadResult); |
| | | |
| | | // 2. 提取视频第一帧 |
| | | console.log('提取视频第一帧...'); |
| | | const thumbnailBlob = await extractVideoFrame(videoFile); |
| | | console.log('视频帧提取成功,大小:', thumbnailBlob.size); |
| | | |
| | | // 3. 创建缩略图文件对象 |
| | | const thumbnailFileName = generateThumbnailFileName(videoFile.name); |
| | | const thumbnailFile = new File([thumbnailBlob], thumbnailFileName, { |
| | | type: 'image/jpeg' |
| | | }); |
| | | |
| | | // 4. 上传缩略图 |
| | | console.log('上传缩略图...'); |
| | | const thumbnailUploadResult = await uploadFile(thumbnailFile); |
| | | console.log('缩略图上传成功:', thumbnailUploadResult); |
| | | |
| | | // 5. 返回包含视频和缩略图信息的结果 |
| | | return { |
| | | video: videoUploadResult, |
| | | thumbnail: thumbnailUploadResult, |
| | | success: true |
| | | }; |
| | | |
| | | } catch (error) { |
| | | console.error('视频处理失败:', error); |
| | | throw new Error(`视频处理失败: ${error.message}`); |
| | | } |
| | | }; |