Buat video sinematik dengan API Seedance 2.5 Reference-to-Video dari ByteDance: minimal 1 video referensi, gambar/audio opsional, 6 rasio, 4–30 detik, suara, 480p/720p.
API ByteDance Seedance 2.5 Reference-to-Video menggabungkan video referensi wajib dengan aset gambar, audio, dan video tambahan opsional untuk memandu pembuatan video baru di Bestimage AI. Developer dan tim kreatif dapat menggunakan referensi multimodal untuk menyampaikan tampilan subjek, produk, lingkungan, gerakan, pengaturan waktu, suara, dan arahan visual secara lebih presisi dibandingkan teks saja. Kontrol kualitas, durasi, rasio aspek, dan suara yang dihasilkan secara fleksibel membuat API ini cocok untuk konten merek, alur kerja karakter, penceritaan produk, dan sistem kreatif yang dapat diskalakan.
Catatan Setidaknya satu video referensi wajib disertakan. Gambar referensi bersifat opsional dan dapat dihilangkan saat video disediakan; audio atau gambar saja tidak dapat menggantikan input video wajib. Pastikan semua prompt dan media mematuhi pedoman keamanan konten ByteDance.
Seedance 2.5 Reference-to-Video vs. Seedance 2.5 Text-to-Video
Text-to-Video menghasilkan video hanya dari arahan
tertulis. Reference-to-Video menambahkan panduan video wajib beserta gambar dan audio opsional untuk alur kerja yang memerlukan
kontrol lebih konkret atas gerakan, tampilan, pengaturan waktu, atau gaya.
Seedance 2.5 Reference-to-Video vs. Seedance 2.5 Image-to-Video
Image-to-Video menganimasikan frame pertama yang wajib dan
dapat menggunakan frame akhir opsional. Reference-to-Video dimulai dari materi video wajib dan dapat menggabungkannya dengan aset
gambar dan audio opsional untuk arahan multimodal yang lebih luas.
Seedance 2.5 Reference-to-Video vs. Wan Reference-to-Video
Kedua pendekatan menggunakan media yang diunggah untuk
memandu pembuatan video baru. Seedance 2.5 menyediakan alur kerja dengan video wajib beserta referensi multi-gambar dan audio opsional serta
kontrol keluaran fleksibel melalui Bestimage AI.
Seedance 2.5 Reference-to-Video vs. Vidu Reference-to-Video
Vidu menawarkan pembuatan video berbasis referensi untuk konsistensi
visual. Seedance 2.5 memiliki keunggulan melalui panduan video wajib dan kemampuan untuk menggabungkan referensi gambar dan
audio opsional dalam satu permintaan.
Seedance 2.5 Reference-to-Video vs. Alat Video Runway
Runway menyediakan rangkaian pembuatan interaktif yang luas.
API Seedance 2.5 Reference-to-Video menawarkan alur kerja terprogram yang terfokus untuk input media multimodal, arahan referensi berbasis
prompt, dan pembuatan yang dapat diskalakan.
// 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.5-reference-to-video',
prompt: 'Use image one for the subject, video one for the movement, and audio one for the atmosphere',
resolution: '720p',
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.5-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: '720p',
duration: 10,
aspect_ratio: '16:9',
sound: true,
images: [
'https://example.com/explorer-reference.jpg',
'https://example.com/environment-reference.png'
],
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.5-reference-to-video",
"prompt": "Use image one for the subject, video one for the movement, and audio one for the atmosphere",
"resolution": "720p",
"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"