Tạo Video
Tạo Video
Trạm AI hỗ trợ tạo video từ text prompt (và tùy chọn thêm ảnh tham chiếu) thông qua một API bất đồng bộ chuyên dụng (asynchronous API). Hiện tại Trạm AI hỗ trợ tạo video với các model: google/veo-3.1, bytedance/seedance-2.0, kuaishou/kling-3.0.
Xem khả năng của từng model và bảng giá bằng cách lọc danh sách model theo output video.
Khám phá model
Có thể tìm các model tạo video theo nhiều cách:
Thông qua Models API
Dùng Public Models API để lấy danh sách model, sau đó lọc các model có mode là "video":
Trên trang Models
Truy cập trang Models và lọc theo output modalities để tìm các model có khả năng tạo video. Hãy để ý những model có liệt kê "video" trong phần output modalities.
Cách hoạt động
Tạo video là quá trình theo cơ chế chạy ngầm (bất đồng bộ-asynchronous), khác với tạo văn bản hay hình ảnh, vì nó mất nhiều thời gian hơn đáng kể. Quy trình diễn ra như sau:
- Gửi một request tạo video đến
POST /v1/videos - Nhận ngay một job ID (status
submitted) - Poll trạng thái job (
GET /v1/videos/{jobId}) cho đến khi status làcompleted - Tải video từ content endpoint (
GET /v1/videos/{jobId}/content)
Sử dụng API
Gửi request tạo video
Tham số request
Tham số pass-through (parameters)
Trường parameters cho phép truyền các tham số riêng của provider mà Trạm AI không map trực tiếp. Các tham số này được chuyển tiếp đến provider.
Các tham số pass-through được hỗ trợ (Vertex AI / Veo):
Ví dụ:
Với model Seedance, resolution là top-level param (cùng với seed, generate_audio, watermark, return_last_frame), không cần đặt trong parameters. Với model Veo, resolution phải đặt trong parameters.
Với model Veo (Google), chỉ các tham số nằm trong block parameters của provider mới được pass-through. Các tham số nằm ở level instances (như lastFrame, referenceImages, video) không thể truyền qua cách này.
Mapping tham số
Trạm AI tự động map các tham số chuẩn sang format của provider:
Ràng buộc thời lượng
Mỗi model có ràng buộc thời lượng riêng. Nếu truyền giá trị seconds không hợp lệ, request sẽ bị từ chối với lỗi 400.
Định dạng response
Response khi gửi (202 Accepted)
Khi người dùng gửi một request tạo video, Trạm AI sẽ trả về response ngay lập tức kèm theo thông tin chi tiết của job:
Response khi poll
Khi poll trạng thái của job (GET /v1/videos/{jobId}), response sẽ phản ánh trạng thái hiện tại:
Đang xử lý:
Hoàn tất:
Thất bại:
Các trạng thái của job
Tải video
Khi status của job là completed, người dùng có thể tải video từ content endpoint:
Response trả về trực tiếp bytes video (video/mp4).
Liệt kê các job
Người dùng có thể liệt kê các video job của mình:
Response trả về mảng data chứa các job:
Billing
Tạo video sử dụng cơ chế deferred-settle billing:
- Khi gửi: Trạm AI đặt một hold trên tài khoản bạn cho chi phí ước tính tối đa (dựa trên thời lượng × giá mỗi giây)
- Khi hoàn tất: Chi phí thực tế được tính dựa trên thời lượng video thực, hold được giải phóng và số tiền chính xác được trừ
- Khi thất bại/hết hạn: Hold được giải phóng, không tính phí
Hold có thời hạn tối đa 1 giờ. Chi phí được tính bằng VND (cost_vnd trong response).
Thực hành tốt nhất
- Prompt chi tiết: Hãy viết prompt cụ thể, giàu tính mô tả để có chất lượng video tốt hơn. Nên nêu rõ về chuyển động, góc máy, ánh sáng và bố cục cảnh
- Chọn thời lượng phù hợp: Thời lượng càng dài thì càng tốn chi phí. Kiểm tra
allowedDurationscủa model trước khi gửi request - Khoảng thời gian poll: Dùng khoảng thời gian poll hợp lý (ví dụ: 30 giây) để tránh gọi API quá mức. Việc tạo video thường mất từ 30 giây đến vài phút, tùy theo model
- Xử lý lỗi: Luôn kiểm tra trạng thái
failedvàexpiredcủa job và xử lý trườngerrormột cách phù hợp
Zero Data Retention
Việc tạo video không đủ điều kiện áp dụng Zero Data Retention (ZDR). Vì tạo video là quá trình theo cơ chế chạy ngầm (bất đồng bộ-asynchronous), provider phải lưu trữ video output trong một khoảng thời gian ngắn để người dùng có thể truy xuất sau khi quá trình tạo hoàn tất. Việc lưu trữ tạm thời này là đặc tính vốn có của quy trình poll bất đồng bộ và không thể bỏ qua.
Nếu người dùng đã bật bắt buộc ZDR (qua cài đặt tài khoản hoặc tham số zdr theo từng request), Trạm AI sẽ không route các request tạo video.
Khắc phục sự cố
Job ở trạng thái submitted trong thời gian dài?
- Việc tạo video có thể mất vài phút, tùy theo model và tải của server
- Hãy tiếp tục poll theo các khoảng đều đặn (30 giây)
Quá trình tạo thất bại?
- Kiểm tra trường
error.messagetrong response poll để biết chi tiết - Xác minh model có hỗ trợ tạo video hay không (kiểm tra
mode: "video"qua Public Models API) - Đảm bảo prompt phù hợp và nằm trong khuôn khổ hướng dẫn của model
- Kiểm tra giá trị
secondscó nằm trong danh sách thời lượng cho phép của model không
Lỗi 400 khi gửi request?
- Kiểm tra
secondscó nằm trongallowedDurationscủa model không (ví dụ: veo-3.1 chỉ cho phép 4, 6, 8) - Đảm bảo
promptkhông rỗng và không vượt quá 10.000 ký tự
Không tìm thấy model?
- Sử dụng trang Models để tìm các model tạo video khả dụng
- Xác minh model slug đúng (ví dụ:
google/veo-3.1)