技术 / 架构与实现

14 素材确认、暂停取消和进程恢复时序

基于 Android 1.0.2 / 1.0.2-trial · 2026-10-10 · 完整正文
版本+内容摘要保护版本+内容摘要保护状态/版本失败摘要不一致用户检查当前素材MP3 ready+图片 readyPOST confirm发送当前image_version后端状态与版本校验无暂停/取消/活动冲突记录确认版本与SHA256当前有序图片字节摘要视频worker再次核对版本一致+内容摘要一致开始本机编码通过后发布MP4换图/删图/重生成新image_version · 清确认拒绝旧确认或变更素材重新查看图片并再次确认
图4|素材确认双闸门。客户端版本、服务端版本和worker内容摘要必须一致;变化后回到重新预览。小屏可横向滚动查看图示

确认既检查状态,又固定当前素材版本:音频和图片ready、未暂停/取消、客户端image_version等于当前、无ACTIVE,计算当前图片按顺序连接字节的SHA256,保存confirmed_version与confirmed_digest。video若已queued/working/done,重复confirm直接返回状态,不启动第二编码。

worker开始再次核对version与digest。换图、删图、重生成均使旧确认失效。这个闸门避免客户端旧预览确认新文件,也避免确认后磁盘素材变化;它不是对图片内容是否合适的自动审核。

控制语义

  • Control共享paused与cancelled线程事件,音频异步流与合并步骤在检查点等待/退出;本机画面循环和编码循环也检查取消。
  • pause不撤销已经提交Seedream请求。返回已付费素材时尽量保存,后续成片仍停止。
  • cancel令正在处理步骤响应取消,并将未运行但busy的步骤改cancelled;真正终止以worker退出和ACTIVE清除为准。
  • resume只清暂停/取消标志;不会自动launch cancelled/interrupted步骤。用户分别选择重试音频、重新选图、图片重试或confirm恢复视频。

recover与重启

Python服务启动调用recover扫描job.json,原queued/working改interrupted并提示手动重试,paused清false;ready/done及实际文件保留,submitting等未知收费信息保留。不自动TTS、不自动重新编码、更不会因重启自动重发收费图。

已成功part可在音频重试复用。failed/manual URL需要用户重新提供URL,因为Control.photo_url只在内存;历史图片则可直接读取。进程死亡时ACTIVE与Control不持久保存,只能根据任务JSON把活动状态改为待恢复。

源码中的recover/jobs扫描未对每个损坏job.json分别捕获错误,坏JSON可能使恢复或历史列表失败;文档不能承诺所有磁盘损坏自动修复。前台服务START_STICKY也不等于自动恢复每个任务步骤。

正常制作时序用户/WebViewFlask+调度语音/图片视频worker私有文件1 创建任务,验证并冻结快照2 写job.json并准备本机图片3 启动语音/网络配图步骤4 片段和图片验证后发布5 轮询返回ready,用户预览6 confirm当前图片版本7 保存确认摘要,launch视频8 cover/ffconcat/MP4临时编码9 probe通过,replace成片10 done与作品入口;主动导出
图12|一次正常制作的调用时序示意。网络配图可与TTS并行;这里展示阶段依赖,不表达精确耗时。小屏可横向滚动查看图示

依据:app.py:48–58,747–819,871–880、android_runtime.py:58–110、speech.py:46–89,118–166。

把这些功能用到你的内容里。

免费试用、正式版优惠授权与招商合作:微信 wzqy2019。说明你需要配音、照片视频、PC或Android端,我们一起确定适合的使用方式。

合作从一次沟通开始

让你的内容制作,
找到合适的工作台。

免费试用、优惠授权、PC与Android版本、工作室及渠道合作意向,欢迎直接咨询。

打开微信,搜索 wzqy2019,添加时备注“听文合作”。具体授权、价格与合作政策以沟通为准;本站不收款。