Files
20260512-skg-tk/web/canvas-app/src/api/video.js

46 lines
1.1 KiB
JavaScript

/**
* Video API | 视频生成 API
*/
import { request } from '@/utils'
// 创建视频任务
export const createVideoTask = (data, options = {}) => {
const { endpoint = '/videos', requestType = 'json' } = options
return request({
url: endpoint,
method: 'post',
data,
headers: requestType === 'formdata'
? { 'Content-Type': 'multipart/form-data' }
: { 'Content-Type': 'application/json' }
})
}
// 查询视频任务状态
export const getVideoTaskStatus = (taskId, options = {}) => {
const { endpoint = '/videos' } = options
return request({
url: `${endpoint}`,
method: 'get'
})
}
// 轮询视频任务直到完成
export const pollVideoTask = async (taskId, maxAttempts = 120, interval = 5000) => {
for (let i = 0; i < maxAttempts; i++) {
const result = await getVideoTaskStatus(taskId)
if (result.status === 'completed' || result.data) {
return result
}
if (result.status === 'failed') {
throw new Error(result.error?.message || '视频生成失败')
}
await new Promise(resolve => setTimeout(resolve, interval))
}
throw new Error('视频生成超时')
}