指南:把图片变成视频
让照片动起来、控制首尾帧、使用参考图、续写片段,并让费用可预期。
视频要花几分钟而不是几秒,所以视频接入的核心是任务和 Webhook,而不是一个一直等着的请求。这篇指南用真实的模型 ID 讲常见的几种做法。
让一张图动起来
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "alibaba/wan-3.0/image-to-video",
"input": {
"image_url": "https://media.popnow.ai/movie/lighthouse.webp",
"prompt": "Waves roll in slowly, clouds drift, the camera pushes gently toward the lighthouse",
"resolution": "480p",
"duration_seconds": 5
},
"callBackUrl": "https://your-app.example.com/hooks/popnow"
}'你会马上拿到一个带 taskId 的 202。几分钟后,Webhook 会送来完成的任务,你也可以用 recordInfo 去读。视频在 output.assets[0] 里,带有 durationSeconds、width 和 height。
要花多少
多数视频模型按输出的秒数计费,分辨率越高单价越高。以 alibaba/wan-3.0/image-to-video 为例:480p 每秒 6.75 积分,720p 每秒 13.5,1080p 每秒 27——所以上面那个请求会冻结 34 积分(5 × 6.75,向上取整),成功时也扣这么多。
- 调提示词时先用最低分辨率和较短时长,定稿时再调高。
- 给用户看价格前,先用 jobs/quote 拿到准确数字。
- 失败或过期的视频不花钱。
指定首帧和尾帧
很多图片生视频模型还接受 last_image_url。视频从 image_url 开始,并且正好停在 last_image_url 上——适合做变身效果,或者首尾用同一张图做出无缝循环。
参考生视频:让角色或产品保持一致
reference-to-video 模型不是让给定的首帧动起来,而是围绕一张或多张参考图(部分模型还支持参考视频或音频)搭一个新场景:
{
"model": "minimax/h3/reference-to-video",
"input": {
"prompt": "The same lighthouse at night, its beam sweeping over a calm sea while the camera circles slowly",
"reference_image_urls": ["https://media.popnow.ai/movie/lighthouse.webp"],
"duration_seconds": 6
}
}每个模型在提示词里怎么指代参考素材各不相同;它参考页上的字段说明会写清楚。
让片段更长
video-extend 模型从已有片段的最后一帧接着往下拍。把片段放在 video_url,再描述接下来发生什么:
{
"model": "minimax/h3/video-extend",
"input": {
"video_url": "https://media.popnow.ai/showcase/moon-picnic-loop.mp4",
"prompt": "The camera keeps drifting right as the picnic blanket ripples in the breeze"
}
}会把前后拼接起来的续写模型返回两个文件:先是拼好的完整视频(role: "video"),再是单独的新片段(role: "segment")。
声音
带 generate_audio 的模型会给视频配上声音;有些模型关掉它能便宜一点。想给已有的视频加声音,用 popnow/foley-v1/video-to-audio,它返回同一段视频,并配上生成的声音。
好用的视频提示词
描述运动,而不只是场景:什么在动、动得多快、镜头怎么走。「镜头慢慢推近,人物转向光源」给了模型可做的事;「一座美丽的灯塔」就没有。图片已经说明了东西长什么样——把字花在「变化」上。
一个生产环境的做法
- 上传或保存源图片,记下它的
popnow://URI。 - 先报价并展示价格,然后用从你自己的业务 ID 派生的
Idempotency-Key和callBackUrl调用createTask。 - 在 Webhook 里校验签名、先确认收到,再把视频下载到你自己的存储。
- 每天用
GET /api/v1/jobs列一次最近的任务,补读没收到 Webhook 的那些。
其余事项见上线清单。

