CPU时间线剪辑导出(9.0.3候选)
这个候选把本人已生成的私有镜头按选定顺序剪辑成一条MP4,默认保留源音轨,也支持本人原生音频的逐镜替换或混音。执行逻辑在Microi.AI,复用原生持久后台任务;CPU队列与模型生成GPU队列独立,不占GPU槽、不直接访问ComfyUI。候选源码和本地测试不等于客户服务器已部署。
使用流程
01 · 检查本人素材
先检查节点是否就绪,再取得原生镜头的真实 SHA 与媒体探针。
02 · 冻结画面与音轨
按镜头顺序固定入出点、原生旁白及已检查的私有配乐引用。
03 · 进入 CPU 队列
保留原 RequestId,由独立 CPU 队列剪辑,不占模型 GPU 槽。
04 · 核验私有成片
取得真实成功结果和私有 MP4 回读后,才进入播放、下载与复用。
API 调用顺序
- 读取
GetTimelineExportCapabilities,以目标节点的Ready判断依赖是否齐全。 - 选择本人已成功的原生本机视频任务,通过
InspectTimelineSource读取真实私有文件SHA和媒体探针。 - 用稳定
RequestId调用QueueTimelineExport,冻结每镜的NativeTaskId + OutputIndex + ExpectedSha256、InMs/OutMs及顺序。 - 保存返回的
TaskId,只轮询GetTimelineExportTask。只有Code=1和实际私有成片回读才算导出成功。
五项动作(含InspectPrivateAudioAsset)统一经POST /apiengine/platform-ai-runtime,后端V8.AI与前端SDK提供同名方法。本地MCP候选的microi_ai加入同名动作,三个入队动作的confirmExecution须等于原RequestId;已发布CLI 6.3.0尚未包含这些新枚举,不能把源码测试当npm已发布。匹配服务器/Managed应用已上线时,可由已有同源microi_run_engine调用platform-ai-runtime并传Action。查询不能指定其它用户或租户,参数不接受URL、文件路径、工作流、程序或所有者。
// 先对每个本人原生镜头取得Inspect成功结果中的真实SHA,再提交。
await V8.AI.QueueTimelineExport({
RequestId: 'project-episode-export-001',
Preset: 'landscape720',
Clips: [{ NativeTaskId: '原生任务的32位编号', OutputIndex: 0,
ExpectedSha256: 'Inspect返回的64位小写SHA256', InMs: 0, OutMs: 5000 }],
AudioReferences: []
});画面与范围
每镜最多5秒,最多1200镜,选择总时长不超过100分钟,输出不超过144000帧。首阶段固定24fps,提供横屏1280×720、竖屏720×1280和方形720×720;等比缩放并留边。源视频即使16fps,输出仍会转换为24fps,收据保留来源探针与转换记录;3个5秒镜头应输出15秒、360帧。剪辑不能修复生成模型已经发生的人物或场景漂移,也不构成100分钟质量或性能承诺。
候选合同SupportsAudio=true、SupportsSubtitles=false。AudioReferences每镜最多一条本人已成功原生任务的FLAC/WAV音频,使用同样的NativeTaskId + OutputIndex + ExpectedSha256,增加数值ClipIndex/InMs/OutMs/GainDb与Mode(mix或replace)。增益限-24至12dB、每段最多5秒;来源、SHA、真实MIME/探针、时长或所有权不符一律失败,不忽略音轨。空列表保留原声;没有原声的镜头加入定长零采样,收据HasAudio=false,不把静音流宣传为配音。
归一化中间件为H264+48kHz双声道PCM的私有MKV;24fps每帧恰好2000采样,最终MP4仅编码一次AAC,避免每镜AAC priming累积。混音使用服务器构造的固定音轨组合与等权归一化,各轨可先调增益;用户只能选择有界数值与受控枚举,不能传滤镜表达式。新配音TTS节点属于同一共享GPU队列,CPU导出不负责推理;本地测试不代表客户声音/口型已经开通。详见本地配音与声音驱动视频。
受保护上传配乐与多轨
正常配乐无需伪造模型任务。先通过普通FormEngine保存本人资产记录,再以该记录/字段/菜单上下文上传私有音频并保存附件。字段必须为FileUpload且Config.FileUpload.EnableRolePermission=true,实际附件Limit=true。首检保留上传响应的_UploadProof在前端内存;表单保存会移除它,不把证明写入业务表、导出参数或持久任务。
await V8.AI.InspectPrivateAudioAsset({
RequestId: 'score-inspect-001',
Source: { FormEngineKey: '资产表Key', FormDataId: '本人资产记录Id',
FieldId: '真实附件字段Id', SysMenuId: '真实菜单Id', AttachmentId: '保存后的附件Id',
UploadProof: '原上传响应的_UploadProof' },
ExpectedSha256: '本地原文件64位小写SHA256'
});
// 轮询同一TaskId;成功Data.AudioAsset不是AI生成,而是CPU检查收据。服务端按真实菜单/表/行/字段/附件权限重新读取,严格要求记录UserId为当前本人;路径只能来自已保存的当前租户私有附件,原上传证明还须绑定同一用户、字段、记录和路径。首次24小时证明过期需重新正常上传;原请求回放和已成功收据可在权限仍有效时继续使用,不要求重新生成证明。任务信封不含证明。实际下载检查字节数、SHA、容器、音频codec/采样率/声道/时长;允许FLAC、PCM WAV、MP3、Ogg(Opus/Vorbis),每对象最多256MiB、最长100分钟。撤权、换附件或字节变化均拒绝。
QueueTimelineExport.AssetAudioTracks最多16条,引用检查成功的AssetReceiptTaskId + ExpectedSha256,增加整条时间线的StartMs、源文件InMs/OutMs、GainDb(-36..6dB,默认-18)。不接受路径、URL、所有者、循环或表达式。每条必须完全落在成片范围,服务端按48kHz采样位置与每镜帧数裁剪/延迟并混音。可同时使用三个逐镜原生旁白引用和一条15秒上传背景音乐;相同素材每个执行fence只下载一次,累计输入预算跨恢复去重。源音轨默认保留,只有逐镜Mode=replace明确替换。
检查收据为ReceiptKind=UploadedPrivateAudioInspection、UsesGpu=false,不是NativeTaskId模型结果。导出在排队、执行、最终上传及本人查询时再次复核原字段引用与权限;不能复制他人路径或伪造收据。人工制作或依法获得的音乐按真实上传素材标记,不宣传为AI音乐模型输出。
部署与安全默认
需要匹配Core/AI/API 9.0.3、Managed AI助手候选7.8.3、SaaS候选8.8.24和既有后台任务。正式API镜像增加FFmpeg/ffprobe,使用固定CPU编码器和参数。主租户正式字段sys_osclients.AiTimelineExportRuntime为空或未启用时关闭,不使用自定义环境变量或appsettings。
{
"Enabled": false,
"Threads": 2,
"SegmentTimeoutSeconds": 120,
"FinalizeTimeoutSeconds": 1800,
"MaxInputBytes": 17179869184,
"MaxOutputBytes": 8589934592,
"MinimumFreeDiskBytes": 42949672960
}这些是预算模板,不是启用指令。CPU线程允许1至4;所有用户共享一个CPU导出并发。必须把资料盘独立bind到/app/App_Data/media-export,没有挂载时拒绝运行,避免长片临时媒体写系统盘。正式AI应用交付mci_ai_timeline_receipt结构、只读元数据和任务唯一索引;请求路径不自行建表,不附带客户模型、开关、执行行或菜单权限变更。
生成媒体预算默认8GiB、硬上限32GiB,同时检查实际累计字节、时长和资料盘空间;最小可用空间至少为成片预算的4倍加1GiB。原生CPU任务复用正式PrivateFileUpload/1的16MiB分片、签名清单、完整SHA回读与永久完成收据。仅当前受管任务、负责人和fence能够使用内部适配,文件名/路径由服务器生成,协议合并scratch同样写资料盘。普通浏览器上传仍保留原来的2GiB硬上限和用户上传规则;生成媒体受独立SaaS CPU预算约束,不通过伪造交互式管理员身份提升限额。100分钟仍需实际负载与质量验收,超时或超预算明确失败,不静默降低画质。
归一化片段和成片均写私有HDFS,并完整流式回读大小及SHA。完成收据持久化后,只清理本次fence的scratch;未知、取消、活跃或其它fence目录保留。私有归一化片段保留供恢复,当前没有自动保留期清理。上传不确定时保留原RequestId/TaskId与签名会话;原生恢复只查询同一最终对象,已存在且完整SHA/大小匹配才补完成收据,缺对象保持Unknown、不重新写入媒体。它不是任意重传、回滚或退款入口。下载地址是本人状态接口签发的临时URL,资产长期保存永久FilePath与SHA。
正式交付仍需分别取得商城发布字节回读、目标API镜像/挂载、客户私有N镜成片、跨用户拒绝、1/10/100分钟负载以及PC/手机播放下载的证据。本地短片与接口测试不能替代这些验收。