动态照片封装

上传一张照片和一段视频,直出安卓动态照片苹果实况照片(Live Photo)

本接口只做封装,不生成画面:照片就是你传的照片,视频就是你传的视频。适合已经有素材、只想让它在手机相册里「长按会动」的场景。 如果你只有一张照片、想让它自己动起来,请用「图片转 Live Photo」。

交付平台由 target 选择:安卓、苹果,或两套都要(默认)。

创建任务

基本信息

项目
请求方法POST
请求路径/task/live_photo_pack
Content-Typeapplication/json
鉴权方式Authorization 请求头(直接传 API Key)

请求参数(Body)

参数名类型必填默认值说明
file_idstring已上传照片的文件 ID,支持 jpg / jpeg / png / webp / bmp
video_file_idstring已上传视频的文件 ID。体积不超过 1 GB,时长不超过 2 小时
targetstringboth交付平台:android / ios / both。取值无法识别时按 both 处理
mutebooleanfalse是否去掉视频里的声音

请求示例

curl -X POST https://api.ai-mcn.tv:10000/task/live_photo_pack \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_id": "537489015178246", "video_file_id": "537489015178250"}'

只要苹果实况照片,并去掉声音:

curl -X POST https://api.ai-mcn.tv:10000/task/live_photo_pack \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_id": "537489015178246", "video_file_id": "537489015178250", "target": "ios", "mute": true}'

成功响应示例

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178247",
    "task_type": "live_photo_pack",
    "status": "queued"
  }
}

查询任务结果

基本信息

项目
请求方法GET
请求路径/task/live_photo_pack/{task_id}
鉴权方式Authorization 请求头(直接传 API Key)

响应参数(output_result)

参数名类型何时返回说明
targetstring始终实际生效的交付平台
file_idstring始终主产物文件 ID。targetandroidboth 时是安卓动态照片,为 ios 时是苹果实况照片的静图
download_urlstring始终主产物下载路径
ios_photo_file_idstringtarget=both苹果实况照片的静图(.jpg
ios_photo_download_urlstringtarget=both同上,下载路径
ios_video_file_idstringtargetiosboth苹果实况照片的视频(.mov
ios_video_download_urlstringtargetiosboth同上,下载路径

成功响应示例

target=both(默认):

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178247",
    "status": "completed",
    "progress": 100,
    "output_result": {
      "target": "both",
      "file_id": "537489015178248",
      "download_url": "/download/a1/output.jpg",
      "ios_photo_file_id": "537489015178249",
      "ios_photo_download_url": "/download/a1/output.jpg",
      "ios_video_file_id": "537489015178251",
      "ios_video_download_url": "/download/a1/output.mov"
    },
    "create_time": "2026-09-15T08:00:00Z",
    "update_time": "2026-09-15T08:00:12Z"
  }
}

target=ios

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178247",
    "status": "completed",
    "progress": 100,
    "output_result": {
      "target": "ios",
      "file_id": "537489015178248",
      "download_url": "/download/a1/output.jpg",
      "ios_video_file_id": "537489015178251",
      "ios_video_download_url": "/download/a1/output.mov"
    },
    "create_time": "2026-09-15T08:00:00Z",
    "update_time": "2026-09-15T08:00:12Z"
  }
}

产物规格

安卓动态照片

主产物是单个 .jpg 文件:静图末尾内嵌你上传的视频,位置由图片内的元数据声明。它同时是一张普通图片,任何看图工具都能打开;支持该标准的安卓相册会把它识别为动态照片,长按播放。

项目说明
容器JPEG(静图 + 内嵌 MP4,单文件)
静图保留原图分辨率,按视频画幅居中裁切,保证静图与动图构图一致
内嵌视频H.264 / HEVC 视频画面不重新编码;上传的本就是标准 MP4 时,内嵌的就是原文件
文件大小约等于照片与视频之和

苹果实况照片

苹果的实况照片是一对文件:一张 .jpg 静图和一段 .mov 视频,两者靠内嵌的同一个标识配对。

项目说明
静图JPEG,保留原图分辨率,按视频画幅居中裁切;原图的拍摄信息保留
视频MOV,H.264 / HEVC 视频画面不重新编码
配对每次任务生成新的标识,同一对素材提交两次得到的是两组互不相干的实况照片

视频处理规则

  • 视频编码为 H.264 或 HEVC 时,画面不做任何二次编码,只换容器。
  • 其他编码的视频会先转码为 H.264,画质会有轻微损失。
  • 视频里有多条画面流时(如带封面图),只保留真正的视频画面。
  • mute=true 时两个平台的视频都去掉声音;默认保留声音。

兼容边界

请在接入前确认目标场景:

苹果

  • 静图与视频必须在同一次导入中一起导入,才会被识别为实况照片。可行的方式:在 Mac 的「照片」App 里一次选中两个文件导入(随 iCloud 同步到 iPhone);或在你自己的 App 里通过系统相册接口同时存入两个文件。
  • 在 iPhone 上分别下载两个文件再各自存入相册,不会配对,只会得到一张照片和一段视频。
  • 程序生成的实况照片不能设为动态壁纸,这是系统限制。

安卓

  • Pixel、小米、三星等支持该标准的机型相册可识别并播放。
  • 厂商实现存在差异,少数机型可能只显示为静态图片。
  • iOS 相册不识别安卓动态照片,会显示为普通静态图片。

处理时长

标准 H.264 / HEVC 视频通常在数秒到一分钟内完成。需要转码的视频越长耗时越久。任务为异步执行,提交后请通过查询接口轮询 status

使用建议

  • 照片与视频的画幅:静图会按视频画幅裁切。想保住照片构图,请让视频与照片宽高比一致。
  • 视频时长:手机原生实况照片约 3 秒。视频过长时,部分相册加载缓慢或只显示静图,建议控制在十几秒以内。
  • 计费:按次计费,与视频时长和体积无关。实际价格以价格说明为准。

错误码

错误码HTTP 状态码说明解决方案
6013400file_idvideo_file_id 缺失两个参数都必须传
6014400文件类型与参数不匹配file_id 传照片、video_file_id 传视频
6004404文件不存在检查文件 ID 是否正确
6002413视频超过 1 GB压缩或截短视频后重新上传
6019400视频时长为 0 或超过 2 小时截短视频后重新上传
6017400视频无法解析检查视频是否损坏,或换一种格式导出
6502401鉴权失败检查 Authorization 请求头
6202402余额不足前往仪表盘充值