商品主图转码待分流时,HarmonyOS 6.1.1 WebPMetadata 怎样提示人工复核
主图进入转码前检时,用户通常希望尽快把它放进“可以继续”或“需要处理”的桶里。但字段读取不是转码结果,预览看起来正常也不是质量结论。如果页面把“已读取”直接显示成“可转码”,用户会在最早的检查阶段就失去人工判断机会。
这次工程为每个直播封面保留待检查、需复核、已读取三种本地状态,并展示 WebPMetadata 的原始字段、读取阶段和错误边界。它的作用是把下一步需要人工看的信息摆出来,而不是代替转码器、发布系统或素材负责人作决定。
一、转码前分流,最怕把“读到了”看成“可以继续”
1.1 “已读取”只表示一次本机调用完成
页面中的“已读取”来自当前选中样本调用 readImageMetadataByType() 后的本地状态更新。它说明页面完成了读取尝试,并把当前设备返回的字段展示出来;不说明转码参数已经生成,也不说明输出文件会符合发布要求。
用户在看到“已读取”时,应先检查字段是否完整、错误区是否为空、样本是不是当前要分流的主图,再决定是否需要复核。把状态词留在“已读取”,比直接贴“可转码”更能阻止过早放行。

1.2 分流依据必须能回到字段与样本
用户把素材送进人工复核前,至少应能回看文件名、直播间或素材来源、样本类型、资源大小、字段状态和错误信息。只留下一个绿色或黄色标签,下一位处理者无法知道这个标签基于什么。
这也是“需复核”存在的意义:它把判断从一个看似确定的桶里拉回可核对的原始事实,不让预览效果、历史印象或默认值偷偷成为分流依据。
二、字段标签应怎样服务人工,而不是替人工决定
2.1 五个字段显示的是读取事实
工程读取 WEBP_METADATA 后展示 Canvas 宽高、帧延迟、未限制帧延迟和循环次数,并计算已返回字段数量:
const webp = metadata.webPMetadata;
this.canvasWidth = this.valueText(webp?.canvasWidth);
this.canvasHeight = this.valueText(webp?.canvasHeight);
this.delayTime = this.valueText(webp?.delayTime);
this.unclampedDelayTime = this.valueText(webp?.unclampedDelayTime);
this.loopCount = this.valueText(webp?.loopCount);
this.fieldSummary = webp === undefined ? 'WEBP 元数据对象为空' : `已返回字段 ${provided}/5`;
这段代码能证明页面如何显示当前读取到的字段和数量。它不能证明这些字段满足某个转码规则,也不能替用户给主图贴上“合格”“不合格”的标签。
用户可以依据字段发现需要继续看的地方,但应把“选择什么转码方案”留给有明确业务规则的人,而不是由 N/5 自动回答。

2.2 预览区只能帮助确认对象,不承担字段判断
页面可展开预览,帮助用户确认眼前是不是那张主图。但预览区不会补全 WEBP_METADATA,也不会生成转码输出。即使画面显示正常,缺失字段仍然是缺失字段;即使画面看起来异常,也不能仅凭预览把读取结果改成失败。
把预览与字段表并排,而不是互相替代,能让用户在分流前同时确认“我看的对象是谁”和“当前系统真实返回了什么”。
三、什么时候应停在“需复核”而不是自动归类
3.1 字段不完整或对象为空时,先保留未知
当 webPMetadata 为空,页面明确显示“WEBP 元数据对象为空”;字段未提供时,单项仍保留“未提供”。这些状态的正确出口是“需复核”,而不是把空值替换为默认参数后继续转码。
这样做不会让流程停死。用户仍然可以保留样本、读取阶段和错误信息,交由人工决定是否补充样本、重试读取或采用其他已批准的处理方式。
3.2 读取失败时,不要把异常塞进“已读取”
调用失败时,页面把状态改为“样本读取失败”“读取调用失败”,并保留具体错误信息。错误信息说明本轮读取没有得到可用字段;它不能直接说明文件损坏、不能转码或已被拒绝。
“已读取”“需复核”“读取失败”应保持不同的动作出口:前者进入字段核对,第二种进入人工判断,第三种先处理读取条件。把三者合并为一类,后续分流只会越来越难追溯。
四、提交人工复核前,页面应该交代什么
人工复核不是只转发一张预览图。至少应同时带上:当前样本标识、素材类型、资源大小、五个字段的原始展示值、字段汇总、读取阶段、错误边界,以及“本次仅做本机读取”的限制。
工程的“批量生成本机检查记录”只会生成当前可见素材的本机检查草稿;代码明确没有调用转码、发布、服务端接口或外部队列。它可以帮助人工整理信息,不能把草稿名称写成“已完成转码记录”。
五、分流入口与真正的转码结果要分开保存
从检查页进入“需复核”,只表示用户把当前事实交给下一步判断;它不生成新文件、不替换主图,也不改变发布状态。真正的转码结果至少需要有输出文件、对应任务状态和业务系统记录,当前页面都没有实现。
对产品体验而言,这种克制并不是多一道卡点。用户知道“我已把问题交给谁”和“我没有完成什么”,才能在等待期间继续处理其他主图,而不会把一个本机字段状态当成最终结果。
必要条件|运行门禁
G1:SDK/API门禁
确认 HarmonyOS 6.1.1 API 24 已安装,Hvigor 能构建 entry 模块。


G2:Kit门禁
确认本文页面的 Kit import 可解析,并使用 API 24 支持的接口。
G3:模块/页面门禁
确认 Stage 模块、页面路由、设备类型和相关模块配置完整。
G4:权限门禁
确认静态声明存在;Camera/AI字幕等运行时能力在真正调用前完成动态授权。

G5:系统能力门禁
确认目标设备声明并实际提供所需摄像头、麦克风、地图、视觉或文件能力。任一门禁未通过,停止进入核心操作。

MapKit文章在 G5 放行前增加服务配置门禁:AppGallery Connect 中已选择正确项目,应用包名和签名证书与工程一致,MapKit 服务已开通且应用服务凭据/授权配置已完成。不得在文章或源码中暴露服务密钥。



更多推荐


所有评论(0)