feat(flow): 将媒体分析参数从抽取帧数改为采样帧率

- 将 analysisTuning 配置中的 maxFrames 参数替换为 sampleFps 参数
- 更新 MediaAnalysisParams 组件中的表单项标签为"采样帧率(帧/秒)"
- 修改滑块控件绑定到 formData.analysisTuning.sampleFps 属性
- 更新预设配置中的 FAST、AUTO、ACCURATE 模式参数
- 调整归一化存储调优逻辑以支持新的 sampleFps 参数范围
- 更新采样帧率参数的有效范围为 0.25 到 6 帧/秒
This commit is contained in:
lixiaolong 2026-08-18 16:03:02 +08:00
parent 7299743bb1
commit a5ccfc5468
2 changed files with 7 additions and 7 deletions

View File

@ -100,8 +100,8 @@
<span>当前模式参数</span> <span>当前模式参数</span>
<el-button :icon="Refresh" text type="primary" @click.stop="restorePreset">恢复默认</el-button> <el-button :icon="Refresh" text type="primary" @click.stop="restorePreset">恢复默认</el-button>
</div> </div>
<el-form-item label="抽取帧数"> <el-form-item label="采样帧率(帧/秒)">
<el-slider v-model="formData.analysisTuning.maxFrames" :min="2" :max="16" :step="1" show-input /> <el-slider v-model="formData.analysisTuning.sampleFps" :min="0.25" :max="6" :step="0.25" show-input />
</el-form-item> </el-form-item>
<el-form-item label="图片最大宽度"> <el-form-item label="图片最大宽度">
<el-slider v-model="formData.analysisTuning.maxWidth" :min="640" :max="1280" :step="64" show-input /> <el-slider v-model="formData.analysisTuning.maxWidth" :min="640" :max="1280" :step="64" show-input />
@ -140,9 +140,9 @@ const mediaCascaderRef = ref()
const quoteOptions = ref([]) const quoteOptions = ref([])
const advancedSections = ref([]) const advancedSections = ref([])
const analysisPresets = { const analysisPresets = {
FAST: { maxFrames: 6, maxWidth: 896, confidenceThreshold: 0.7, fallbackToAccurate: false }, FAST: { sampleFps: 1, maxWidth: 896, confidenceThreshold: 0.7, fallbackToAccurate: false },
AUTO: { maxFrames: 8, maxWidth: 960, confidenceThreshold: 0.75, fallbackToAccurate: true }, AUTO: { sampleFps: 2, maxWidth: 960, confidenceThreshold: 0.75, fallbackToAccurate: true },
ACCURATE: { maxFrames: 10, maxWidth: 1120, confidenceThreshold: 0.8, fallbackToAccurate: false }, ACCURATE: { sampleFps: 3, maxWidth: 1120, confidenceThreshold: 0.8, fallbackToAccurate: false },
} }
const formData = reactive({ const formData = reactive({
profileCode: '', profileCode: '',
@ -272,7 +272,7 @@ const clamp = (value, minimum, maximum, fallback) => {
const normalizeStoredTuning = (value, preset) => { const normalizeStoredTuning = (value, preset) => {
const stored = parseStoredTuning(value) const stored = parseStoredTuning(value)
return { return {
maxFrames: Math.round(clamp(stored.maxFrames, 2, 16, preset.maxFrames)), sampleFps: Math.round(clamp(stored.sampleFps, 0.25, 6, preset.sampleFps) * 100) / 100,
maxWidth: Math.round(clamp(stored.maxWidth, 640, 1280, preset.maxWidth)), maxWidth: Math.round(clamp(stored.maxWidth, 640, 1280, preset.maxWidth)),
confidenceThreshold: clamp(stored.confidenceThreshold, 0.5, 0.95, preset.confidenceThreshold), confidenceThreshold: clamp(stored.confidenceThreshold, 0.5, 0.95, preset.confidenceThreshold),
fallbackToAccurate: typeof stored.fallbackToAccurate === 'boolean' fallbackToAccurate: typeof stored.fallbackToAccurate === 'boolean'

View File

@ -552,7 +552,7 @@ function handler(params) {
{ name: "videoUrl", type: "quote", input: "", quote: "", required: true, disabled: true }, { name: "videoUrl", type: "quote", input: "", quote: "", required: true, disabled: true },
{ name: "instruction", type: "input", input: "", required: true, disabled: true }, { name: "instruction", type: "input", input: "", required: true, disabled: true },
{ name: "analysisMode", type: "input", input: "AUTO", required: false, disabled: true }, { name: "analysisMode", type: "input", input: "AUTO", required: false, disabled: true },
{ name: "analysisTuning", type: "input", input: { maxFrames: 8, maxWidth: 960, confidenceThreshold: 0.75, fallbackToAccurate: true }, required: false, disabled: true }, { name: "analysisTuning", type: "input", input: { sampleFps: 2, maxWidth: 960, confidenceThreshold: 0.75, fallbackToAccurate: true }, required: false, disabled: true },
], ],
outputType: "json", outputType: "json",
outputParams: [ outputParams: [