Tạo video có định hướng bằng Seedance 2.0 Reference API. Sử dụng video tham chiếu, hỗ trợ người thật, tỷ lệ linh hoạt và đầu ra ổn định.
API ByteDance Seedance V2.0 Reference-to-Video cung cấp khả năng tạo video theo nội dung tham chiếu cho các nhà phát triển và đội ngũ sáng tạo trên Best Image AI. Tích hợp API hiện tại nhận prompt văn bản cùng ít nhất một hình ảnh hoặc video tham chiếu, kèm theo các nội dung tham chiếu bổ sung tùy chọn gồm hình ảnh, video và âm thanh. API hỗ trợ thời lượng có thể cấu hình, nhiều tỷ lệ khung hình, nhiều mức độ phân giải và tùy chọn cài đặt âm thanh được tạo cho các quy trình video có kiểm soát.
Lưu ý Cần có ít nhất một hình ảnh hoặc video tham chiếu; không thể chỉ dùng âm thanh làm đầu vào tham chiếu duy nhất. Hãy đảm bảo prompt và nội dung tham chiếu của bạn tuân thủ nguyên tắc an toàn nội dung của ByteDance.
Seedance V2.0 Reference-to-Video so với Seedance V2.0 Text-to-Video Seedance V2.0 Text-to-Video hoạt động từ prompt văn bản. Reference-to-Video bổ sung đầu vào hình ảnh, video và âm thanh tùy chọn được hỗ trợ cùng khả năng đề cập nội dung trong prompt.
Seedance V2.0 Reference-to-Video so với Seedance V2.0 Fast Reference-to-Video Cả hai biến thể cung cấp cùng loại nội dung tham chiếu và các điều khiển cốt lõi trên Best Image AI. Biến thể tiêu chuẩn bổ sung tùy chọn độ phân giải 1080p và 4K, trong khi biến thể Fast tập trung vào quy trình 480p và 720p.
Seedance V2.0 Reference-to-Video so với Wan 2.7 Reference-to-Video Cả hai API đều nhận hình ảnh và video tham chiếu. Wan 2.7 còn cung cấp điều khiển prompt âm và seed, trong khi Seedance V2.0 hỗ trợ nhiều âm thanh tham chiếu tùy chọn và nút bật/tắt âm thanh được tạo.
Seedance V2.0 Reference-to-Video so với Vidu Q3 Reference-to-Video Vidu Q3 Reference-to-Video sử dụng hình ảnh tham chiếu trong cấu hình Best Image AI hiện tại. Seedance V2.0 còn nhận video tham chiếu và âm thanh tham chiếu tùy chọn.
Seedance V2.0 Reference-to-Video so với Runway Video Tools Runway cung cấp bộ công cụ sáng tạo tương tác rộng hơn. Seedance V2.0 Reference-to-Video cung cấp quy trình API tập trung vào prompt, thao tác tải lên nội dung tham chiếu được hỗ trợ, cài đặt đầu ra và âm thanh được tạo.
// Step 1: Submit generation request
const response = await fetch('https://api.flaq.ai/api/v1/video/task', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
model_name: 'seedance-v2.0-reference-to-video',
prompt: 'Use image one for the subject, video one for the movement, and audio one for the atmosphere',
resolution: '1080p',
duration: 8,
aspect_ratio: '16:9',
sound: true,
images: ['https://example.com/subject-reference.jpg'],
videos: ['https://example.com/motion-reference.mp4'],
audios: ['https://example.com/atmosphere-reference.mp3']
})
});
const { data } = await response.json();
const taskId = data.task_id;
// Use the @ (AT) reference feature in prompt through <<<...>>> placeholders.
// Placeholder numbering is 1-based for each media array:
// <<<image_1>>> = images[0], <<<image_2>>> = images[1]
// <<<video_1>>> = videos[0], <<<audio_1>>> = audios[0]
const mediaReferenceResponse = await fetch('https://api.flaq.ai/api/v1/video/task', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
model_name: 'seedance-v2.0-reference-to-video',
prompt: 'Place the explorer from <<<image_1>>> in the environment from <<<image_2>>>, following the camera movement in <<<video_1>>> and speaking with the reference voice from <<<audio_1>>>',
resolution: '1080p',
duration: 10,
aspect_ratio: '16:9',
sound: true,
images: [
'https://example.com/explorer-reference.jpg',
'https://example.com/environment-reference.jpg'
],
videos: ['https://example.com/camera-movement-reference.mp4'],
audios: ['https://example.com/voice-reference.mp3']
})
});
const { data: mediaReferenceData } = await mediaReferenceResponse.json();
const mediaReferenceTaskId = mediaReferenceData.task_id;
// Step 2: Poll for results
const taskId = data.task_id;
const pollResult = async (taskId) => {
const res = await fetch(`https://api.flaq.ai/api/v1/video/${taskId}`, {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
return res.json();
};
while (true) {
const pollResultData = await pollResult(taskId);
const status = pollResultData.data.task_status;
if (status === 'succeed') {
console.log(pollResultData.data.task_result.videos[].);
;
}
(status === ) {
.(pollResultData..);
;
}
( (resolve, ));
}
# Step 1: Submit generation request
import requests
response = requests.post(
'https://api.flaq.ai/api/v1/video/task',
headers={
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
json={
'model_name': ,
: ,
: ,
: ,
: ,
: ,
: [],
: [],
: []
}
)
result = response.json()
task_id = result[][]
media_reference_response = requests.post(
,
headers={
: ,
:
},
json={
: ,
: ,
: ,
: ,
: ,
: ,
: [
,
],
: [],
: []
}
)
media_reference_result = media_reference_response.json()
media_reference_task_id = media_reference_result[][]
# Step 1: Submit generation request
curl -X POST https://api.flaq.ai/api/v1/video/task \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model_name": "seedance-v2.0-reference-to-video",
"prompt": "Use image one for the subject, video one for the movement, and audio one for the atmosphere",
"resolution": "1080p",
"duration": 8,
"aspect_ratio": "16:9",
"sound": true,
"images": ["https://example.com/subject-reference.jpg"],
"videos": ["https://example.com/motion-reference.mp4"],
"audios": ["https://example.com/atmosphere-reference.mp3"]
}'
# Use the @ (AT) reference feature in prompt through <<<...>>> placeholders.
# Placeholder numbering is 1-based for each media array:
curl -X POST https://api.flaq.ai/api/v1/video/task \
-H \
-H \
-d
# Step 2: Poll for results
task_id = response.json()['data']['task_id']
poll_url = f"https://api.flaq.ai/api/v1/video/{task_id}"
while True:
poll_result = requests.get(poll_url, headers={'Authorization': 'Bearer YOUR_API_KEY'}).json()
status = poll_result['data']['task_status']
if status == 'succeed':
print(poll_result['data']['task_result']['videos'][0]['url'])
break
if status == 'failed':
print(poll_result['data']['task_status_msg'])
break
time.sleep(10)
# Step 2: Poll for results
# Replace {task_id} with the task_id returned from the submit response
curl -X GET "https://api.flaq.ai/api/v1/video/{task_id}" \
-H "Authorization: Bearer YOUR_API_KEY"