头像视频合成支持动态模型

This commit is contained in:
ZLI263
2025-10-09 08:38:42 +08:00
parent 1a4a921677
commit c93cf465e8
4 changed files with 182 additions and 14 deletions

View File

@@ -114,8 +114,12 @@
<el-col :span="12">
<el-form-item label="模型供应商" prop="modelProvider">
<el-select v-model="form.modelProvider" placeholder="请选择模型供应商" style="width: 100%">
<el-option label="dashscope" value="dashscope" />
<el-option label="其他" value="other" />
<el-option
v-for="option in modelProviderOptions"
:key="option.value"
:label="option.label"
:value="option.value"
/>
</el-select>
</el-form-item>
</el-col>
@@ -243,7 +247,28 @@ export default {
]
},
imageOptions: [],
audioOptions: []
audioOptions: [],
selectedImageModel: '' // 存储选中头像的模型名
}
},
computed: {
// 根据选中头像的模型名动态计算模型供应商选项
modelProviderOptions() {
if (this.selectedImageModel === 'emo-detect-v1') {
return [
{ label: 'emo-v1', value: 'emo-v1' }
]
} else if (this.selectedImageModel === 'liveportrait-detect') {
return [
{ label: 'liveportrait', value: 'liveportrait' }
]
} else {
// 默认选项
return [
{ label: 'dashscope', value: 'dashscope' },
{ label: '其他', value: 'other' }
]
}
}
},
mounted() {
@@ -272,7 +297,8 @@ export default {
url: item.imageUrl,
avatarName: item.avatarName,
ownerName: item.ownerName,
ownerPhone: item.ownerPhone
ownerPhone: item.ownerPhone,
modelName: item.modelName || item.model || '' // 获取模型名信息
}))
console.log('Image options set:', this.imageOptions)
} else if (response && response.success === false) {
@@ -280,18 +306,18 @@ export default {
this.$message.error(`获取头像列表失败: ${response.message || '未知错误'}`)
// 使用模拟数据
this.imageOptions = [
{ id: 'img-001', name: '头像1', url: 'http://example.com/images/avatar1.jpg', ownerName: '张三', ownerPhone: '13800138000' },
{ id: 'img-002', name: '头像2', url: 'http://example.com/images/avatar2.jpg', ownerName: '李四', ownerPhone: '13900139000' },
{ id: 'img-003', name: '头像3', url: 'http://example.com/images/avatar3.jpg', ownerName: '王五', ownerPhone: '13700137000' }
{ id: 'img-001', name: '头像1', url: 'http://example.com/images/avatar1.jpg', ownerName: '张三', ownerPhone: '13800138000', modelName: 'emo-detect-v1' },
{ id: 'img-002', name: '头像2', url: 'http://example.com/images/avatar2.jpg', ownerName: '李四', ownerPhone: '13900139000', modelName: 'liveportrait-detect' },
{ id: 'img-003', name: '头像3', url: 'http://example.com/images/avatar3.jpg', ownerName: '王五', ownerPhone: '13700137000', modelName: 'other-model' }
]
} else {
console.error('Unexpected face detect response format:', response)
this.$message.error('获取头像列表失败: 响应数据格式不正确')
// 使用模拟数据
this.imageOptions = [
{ id: 'img-001', name: '头像1', url: 'http://example.com/images/avatar1.jpg', ownerName: '张三', ownerPhone: '13800138000' },
{ id: 'img-002', name: '头像2', url: 'http://example.com/images/avatar2.jpg', ownerName: '李四', ownerPhone: '13900139000' },
{ id: 'img-003', name: '头像3', url: 'http://example.com/images/avatar3.jpg', ownerName: '王五', ownerPhone: '13700137000' }
{ id: 'img-001', name: '头像1', url: 'http://example.com/images/avatar1.jpg', ownerName: '张三', ownerPhone: '13800138000', modelName: 'emo-detect-v1' },
{ id: 'img-002', name: '头像2', url: 'http://example.com/images/avatar2.jpg', ownerName: '李四', ownerPhone: '13900139000', modelName: 'liveportrait-detect' },
{ id: 'img-003', name: '头像3', url: 'http://example.com/images/avatar3.jpg', ownerName: '王五', ownerPhone: '13700137000', modelName: 'other-model' }
]
}
}).catch(error => {
@@ -300,9 +326,9 @@ export default {
this.$message.error(`网络请求失败: ${error.message || '请检查网络连接'}`)
// 开发环境使用模拟数据
this.imageOptions = [
{ id: 'img-001', name: '头像1', url: 'http://example.com/images/avatar1.jpg', ownerName: '张三', ownerPhone: '13800138000' },
{ id: 'img-002', name: '头像2', url: 'http://example.com/images/avatar2.jpg', ownerName: '李四', ownerPhone: '13900139000' },
{ id: 'img-003', name: '头像3', url: 'http://example.com/images/avatar3.jpg', ownerName: '王五', ownerPhone: '13700137000' }
{ id: 'img-001', name: '头像1', url: 'http://example.com/images/avatar1.jpg', ownerName: '张三', ownerPhone: '13800138000', modelName: 'emo-detect-v1' },
{ id: 'img-002', name: '头像2', url: 'http://example.com/images/avatar2.jpg', ownerName: '李四', ownerPhone: '13900139000', modelName: 'liveportrait-detect' },
{ id: 'img-003', name: '头像3', url: 'http://example.com/images/avatar3.jpg', ownerName: '王五', ownerPhone: '13700137000', modelName: 'other-model' }
]
})
},
@@ -374,6 +400,19 @@ export default {
if (selectedImage.ownerPhone) {
this.form.ownerPhone = selectedImage.ownerPhone
}
// 获取头像的模型名信息
this.selectedImageModel = selectedImage.modelName || ''
// 根据模型名自动设置模型供应商
if (this.selectedImageModel === 'emo-detect-v1') {
this.form.modelProvider = 'emo-v1'
} else if (this.selectedImageModel === 'liveportrait-detect') {
this.form.modelProvider = 'liveportrait'
} else {
// 默认设置
this.form.modelProvider = 'dashscope'
}
}
},
@@ -442,6 +481,8 @@ export default {
pasteBack: true,
headMoveStrength: 0.7
}
// 重置选中的头像模型
this.selectedImageModel = ''
},
// 返回