<!-- Canonical URL: https://ask.atlascloud.ai/zh/migrate-sora-app-input-files-output-urls -->

# 迁移 Sora 应用时，输入文件和输出 URL 会发生什么变化？

> 服务商文件引用和生成视频链接不是可移植资产。应把原始输入字节保存在应用资产 ID 下，按目标格式重新上传，分别映射源与目标任务，并在服务商资源过期前把完成视频复制到持久存储。

迁移 Sora 应用时，输入引用通常需要按目标服务商要求重新上传或转换格式，生成视频的 URL 则应视为临时下载位置。应在两端加入资产层，统一管理持久文件、校验和、访问策略和服务商映射。

请求格式兼容并不代表文件 ID 或输出链接可移植。这些资源通常只属于签发它们的服务商。

## 将资产与服务商引用分离

使用应用资产 ID 作为稳定主键：

```json
{
  "asset_id": "asset_01J...",
  "kind": "input_image",
  "sha256": "...",
  "storage_key": "inputs/asset_01J...png",
  "provider_refs": {
    "openai": "provider-specific-reference"
  }
}
```

源文件 ID、视频任务 ID 和签名输出 URL 都只是该记录的属性，不应成为产品对外的永久契约。

## 重新生成输入引用

OpenAI 视频端点接收提示词，也可接收可选的 `input_reference` 图像。目标服务可能要求 multipart 上传、预上传文件 ID、公开 URL 或 base64 数据。

对每个源输入，从持久存储读取原始文件，验证媒体类型与尺寸，再创建目标端引用。不要假设 OpenAI 文件或媒体标识符能提交给另一家服务商。

如果应用只保存了服务商引用而没有原始文件，应在迁移前确认能否下载。输入若已过期或删除，就需要用户重新上传，无法靠转换标识符恢复丢失的字节。

## 明确映射任务对象

Sora 视频生成是异步任务。任务包含 ID、状态、进度、模型、时长、尺寸、时间戳，也可能包含下载资产的过期时间。应并列保存目标任务和源任务：

| 应用字段 | 源端映射 | 目标端映射 |
|---|---|---|
| 内部任务 ID | 你的数据库 | 保持同一值 |
| 服务商任务 ID | OpenAI 视频 ID | 目标任务 ID |
| 状态 | 源状态 | 统一后的目标状态 |
| 输入资产 | 源引用 | 重新上传后的目标引用 |
| 输出资产 | 已下载字节 | 已下载的目标字节 |

分阶段迁移期间不要覆盖源端映射。保留两套映射有助于回滚与支持排查。

## 下载输出内容，不只保存 URL

OpenAI API 为已完成视频提供内容端点，并在资源有有效期时报告 `expires_at`。响应中的 URL 可能失效、需要认证，也可能不适合直接暴露给客户端。

任务完成后，工作进程应：

1. 从经过认证的端点获取视频内容；
2. 以流式方式写入应用控制的对象存储；
3. 验证媒体类型、大小和校验和；
4. 记录来源、模型、提示词策略和生成参数；
5. 通过你自己的授权下载 URL 提供内容。

产品依赖的缩略图、预览或其他可下载变体也应采用相同流程。

## 规划保留与隐私策略

复制文件会改变数据治理范围。应分别定义用户上传、生成中间文件、最终视频、缩略图和失败任务的保留期。加密资产、限制服务账号权限，并避免记录签名 URL 或原始提示词。

收到删除请求时，应删除应用副本，并在支持时调用服务商删除端点。保留不含敏感信息的删除记录，使重试保持幂等。

## 切换前测试媒体行为

为每种允许的输入格式、方向、分辨率、时长和最大大小建立测试样本。若参考图像很重要，还要验证透明通道与色彩配置。输出测试应覆盖链接过期、部分下载、内容类型不符、范围请求、取消和工作进程崩溃后的重试。

还应比较媒体政策和审核结果，而不只是 API 机制。两个服务商都接受请求，并不表示内容政策或生成结果相同。

## 总结

Sora 文件引用和输出 URL 是服务商资源，不是可移植资产。把原始输入保存在自己的存储中，为目标端创建新引用，及时下载完成的视频，并对外使用稳定的应用资产 ID，才能避免链接过期造成数据丢失。

## FAQ

### OpenAI input_reference 可以发送给另一家视频服务商吗？

通常不可以。应从自有存储读取原始文件，再创建目标服务商要求的 multipart 上传、文件 ID、URL 或 base64 引用。

### Sora 输出 URL 是永久的吗？

应把它当作临时或需认证的交付位置。视频任务可能包含过期时间，因此要及时把内容下载到自有存储。

### 如果只保存了服务商文件 ID 怎么办？

在资源仍可用时尝试取回原始字节。若资源已经过期或删除，用户可能需要重新上传源文件。

### 应用应公开哪个 ID？

公开自有的稳定资产 ID 与任务 ID，并把源端和目标端的服务商 ID 保留为检索、支持与回滚映射。

### 切换后应覆盖源端映射吗？

不应覆盖。分阶段迁移期间保留源端与目标端映射，才能比较行为并安全回滚。

### 视频资产需要测试什么？

测试全部支持的格式、大小、时长、方向、下载变体、过期路径、部分传输、取消和存储重试。
