feat: 绿幕视频自定义背景图片
This commit is contained in:
@@ -20,6 +20,7 @@ const createCourseSchema = object({
|
|||||||
digital_human_id: number().not([0], '请选择数字人'),
|
digital_human_id: number().not([0], '请选择数字人'),
|
||||||
source_type: number().default(0).required(),
|
source_type: number().default(0).required(),
|
||||||
speed: number().default(1.0).min(0.5).max(1.5).required(),
|
speed: number().default(1.0).min(0.5).max(1.5).required(),
|
||||||
|
bg_img: string().optional(),
|
||||||
})
|
})
|
||||||
|
|
||||||
type CreateCourseSchema = InferType<typeof createCourseSchema>
|
type CreateCourseSchema = InferType<typeof createCourseSchema>
|
||||||
@@ -30,9 +31,11 @@ const createCourseState = reactive({
|
|||||||
digital_human_id: 0,
|
digital_human_id: 0,
|
||||||
source_type: 0,
|
source_type: 0,
|
||||||
speed: 1.0,
|
speed: 1.0,
|
||||||
|
bg_img: undefined,
|
||||||
})
|
})
|
||||||
|
|
||||||
const selected_digital_human = ref<DigitalHumanItem | null>(null)
|
const selected_digital_human = ref<DigitalHumanItem | null>(null)
|
||||||
|
const selected_bg_img = ref<File | undefined>();
|
||||||
|
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
if (selected_digital_human.value) {
|
if (selected_digital_human.value) {
|
||||||
@@ -44,7 +47,24 @@ watchEffect(() => {
|
|||||||
|
|
||||||
const onCreateCourseGreenSubmit = async (event: FormSubmitEvent<CreateCourseSchema>) => {
|
const onCreateCourseGreenSubmit = async (event: FormSubmitEvent<CreateCourseSchema>) => {
|
||||||
creationPending.value = true
|
creationPending.value = true
|
||||||
useFetchWrapped<req.gen.GBVideoCreate & AuthedRequest, BaseResponse<resp.gen.GBVideoCreate>>('App.Digital_VideoTask.Create', {
|
|
||||||
|
let bgImgUrl = undefined
|
||||||
|
|
||||||
|
if (selected_bg_img.value) {
|
||||||
|
bgImgUrl = await useFileGo(selected_bg_img.value, 'tmp')
|
||||||
|
}
|
||||||
|
|
||||||
|
let payload: {
|
||||||
|
token: string;
|
||||||
|
user_id: number;
|
||||||
|
title: string;
|
||||||
|
content: string;
|
||||||
|
digital_human_id: any;
|
||||||
|
speed: number;
|
||||||
|
device_id: string;
|
||||||
|
source_type: 1 | 2 | undefined;
|
||||||
|
bg_img?: string;
|
||||||
|
} = {
|
||||||
token: loginState.token!,
|
token: loginState.token!,
|
||||||
user_id: loginState.user.id,
|
user_id: loginState.user.id,
|
||||||
title: event.data.title,
|
title: event.data.title,
|
||||||
@@ -53,7 +73,27 @@ const onCreateCourseGreenSubmit = async (event: FormSubmitEvent<CreateCourseSche
|
|||||||
speed: 2 - event.data.speed,
|
speed: 2 - event.data.speed,
|
||||||
device_id: 'XSHAssistant Web',
|
device_id: 'XSHAssistant Web',
|
||||||
source_type: event.data.source_type as 1 | 2 | undefined,
|
source_type: event.data.source_type as 1 | 2 | undefined,
|
||||||
}).then(res => {
|
}
|
||||||
|
|
||||||
|
if (selected_bg_img.value) {
|
||||||
|
if (!bgImgUrl) {
|
||||||
|
toast.add({
|
||||||
|
title: '上传失败',
|
||||||
|
description: '背景图片上传失败,请重试',
|
||||||
|
color: 'red',
|
||||||
|
icon: 'i-tabler-alert-triangle',
|
||||||
|
})
|
||||||
|
selected_bg_img.value = undefined
|
||||||
|
creationPending.value = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
payload = {
|
||||||
|
...payload,
|
||||||
|
bg_img: bgImgUrl,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
useFetchWrapped<req.gen.GBVideoCreate & AuthedRequest, BaseResponse<resp.gen.GBVideoCreate>>('App.Digital_VideoTask.Create', payload).then(res => {
|
||||||
if (!!res.data.task_id) {
|
if (!!res.data.task_id) {
|
||||||
toast.add({
|
toast.add({
|
||||||
title: '创建成功',
|
title: '创建成功',
|
||||||
@@ -142,6 +182,10 @@ const onCreateCourseGreenSubmit = async (event: FormSubmitEvent<CreateCourseSche
|
|||||||
</UFormGroup>
|
</UFormGroup>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<UFormGroup label="背景图片" name="bg_img" help="可以上传图片作为视频背景,留空则为绿幕背景">
|
||||||
|
<UInput type="file" accept="image/jpg,image/png" placeholder="选择背景图片" @change="selected_bg_img = $event?.[0] || undefined"/>
|
||||||
|
</UFormGroup>
|
||||||
|
|
||||||
<UFormGroup label="驱动内容" name="content" required>
|
<UFormGroup label="驱动内容" name="content" required>
|
||||||
<!-- <template #help>-->
|
<!-- <template #help>-->
|
||||||
<!-- <p class="text-xs text-neutral-400">-->
|
<!-- <p class="text-xs text-neutral-400">-->
|
||||||
|
|||||||
1
typings/types.d.ts
vendored
1
typings/types.d.ts
vendored
@@ -251,6 +251,7 @@ namespace req {
|
|||||||
speed?: number
|
speed?: number
|
||||||
// 1: upstream 2: internal
|
// 1: upstream 2: internal
|
||||||
source_type?: 1 | 2
|
source_type?: 1 | 2
|
||||||
|
bg_img?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface GBVideoDelete {
|
interface GBVideoDelete {
|
||||||
|
|||||||
Reference in New Issue
Block a user