ลอง Google Gemini Omni 1.1 Flash API ตัดต่อวิดีโอด้วยคำสั่งธรรมชาติ คงจังหวะเมื่อเปลี่ยนฉากและตัวละคร
Google Gemini Omni 1.1 Flash Video Edit API นำการปรับแต่งวิดีโอด้วยภาษาธรรมชาติมาสู่เวิร์กโฟลว์ที่เป็นมิตรต่อนักพัฒนา อัปโหลดวิดีโอที่มีอยู่ อธิบายการเปลี่ยนแปลงที่ต้องการ แล้วใช้ Gemini video API เพื่อสร้างเวอร์ชันที่แก้ไขใหม่ โดยยังคงใช้คลิปต้นฉบับเป็นจุดเริ่มต้นของงานสร้างสรรค์ API นี้พร้อมให้ใช้งานบน Best Image AI และช่วยให้ทีมสำรวจ การเปลี่ยนแปลงด้านภาพแบบเฉพาะจุดได้โดยไม่ต้องสร้างงานตัดต่อใหม่ตั้งแต่ต้น
การปรับแต่งวิดีโอตามพรอมต์: ใช้คำสั่งภาษาธรรมชาติเพื่อกำหนดการเปลี่ยนแปลงของรูปลักษณ์ การเคลื่อนไหว บรรยากาศ หรือแนวทางสร้างสรรค์ของคลิปที่มีอยู่
เวิร์กโฟลว์การตัดต่อที่รับรู้แหล่งที่มา: เริ่มจากฟุตเทจที่อัปโหลด เพื่อให้การแก้ไขยึดโยงกับจังหวะ ตัวแบบ และบริบทด้านภาพของสื่อต้นฉบับ
การกำหนดการเปลี่ยนแปลงตามบริบท: อธิบายองค์ประกอบที่ต้องการปรับและองค์ประกอบที่ต้องการคงไว้ เพื่อช่วยให้ทีมถ่ายทอด การแก้ไขเป็นเจตนาทางความคิดสร้างสรรค์ แทนการทำงานบนไทม์ไลน์ด้วยตนเอง
การปรับภาพแบบภาพยนตร์: สำรวจแนวทางใหม่ด้านแสง อารมณ์ การนำเสนอฉาก และความรู้สึกของกล้องจาก อินพุตวิดีโอเพียงรายการเดียว
คุณภาพเอาต์พุตที่ยืดหยุ่น: เลือกระดับคุณภาพเอาต์พุตที่เหมาะกับการตรวจสอบภายใน การทำซ้ำอย่างรวดเร็ว หรือข้อกำหนด สำหรับการส่งมอบขั้นสุดท้าย
การทำซ้ำอย่างมีประสิทธิภาพสำหรับทีมวิดีโอ: สร้างทางเลือกที่เจาะจงสำหรับคลิปต้นฉบับขนาดสั้น ทำให้ API ใช้งานได้จริงทั้งสำหรับการทดลองและการสนับสนุนงานผลิต
อินพุต: คลิปวิดีโอที่มีอยู่ พร้อมคำสั่งภาษาธรรมชาติที่อธิบายการตัดต่อที่ต้องการ
เอาต์พุต: วิดีโอที่แก้ไขใหม่ซึ่งสร้างผ่านเวิร์กโฟลว์ Gemini Omni 1.1 Flash video-editing API
ทิศทางการตัดต่อ: อธิบายการเปลี่ยนแปลงด้านภาพที่ต้องการ เช่น สภาพแวดล้อมใหม่ โทนภาพที่เปลี่ยนไป การเคลื่อนไหวของ ตัวแบบ หรือการนำเสนอฉาก
การควบคุมคุณภาพ: เลือกคุณภาพเอาต์พุตที่เหมาะสมกับขั้นตอนการตรวจสอบหรือการส่งมอบของเวิร์กโฟลว์
ความสามารถ: การตัดต่อวิดีโอตามพรอมต์ การปรับแต่งที่รับรู้แหล่งที่มา การเปลี่ยนการนำเสนอฉาก การปรับสไตล์ภาพ และ การสร้างทางเลือกเชิงสร้างสรรค์อย่างรวดเร็ว
การปรับแคมเปญให้เข้ากับท้องถิ่น: สร้างแนวทางสร้างสรรค์ใหม่ให้กับคลิปแคมเปญที่มีอยู่ ขณะยังคงรักษา จุดเริ่มต้นของงานผลิตเดิมไว้
รูปแบบวิดีโอโซเชียลที่หลากหลาย: สร้างรูปลักษณ์ อารมณ์ และทิศทางฉากทางเลือกสำหรับวิดีโอสั้นที่ปรับให้เหมาะกับ ช่องทางหรือกลุ่มผู้ชมต่าง ๆ
การสนับสนุนงานหลังการผลิตเชิงสร้างสรรค์: สำรวจการปรับภาพก่อนทุ่มเวลาให้กับการตัดต่อด้วยตนเองแบบเต็มรูปแบบหรือ การถ่ายทำใหม่
การปรับโฉมวิดีโอผลิตภัณฑ์: อัปเดตการนำเสนอฟุตเทจผลิตภัณฑ์ที่มีอยู่ให้เหมาะกับฤดูกาล แนวบรรณาธิการ หรือ ทิศทางแคมเปญใหม่
เวิร์กโฟลว์การแก้ไขอัตโนมัติ: เพิ่มการปรับแต่งวิดีโอตามคำสั่งลงในเครื่องมือสร้างสรรค์ภายใน ระบบ อนุมัติ และการดำเนินงานด้านเนื้อหา
หมายเหตุ วิดีโอต้นฉบับเป็นพื้นฐานของการตัดต่อ ใช้คำสั่งที่ชัดเจนซึ่งระบุการเปลี่ยนแปลงที่ต้องการและ คุณลักษณะด้านภาพที่ควรคงความสอดคล้อง เพื่อให้ได้ผลลัพธ์ที่น่าเชื่อถือที่สุด
Gemini Omni 1.1 Flash เทียบกับ Google Veo Video Editing: Google Veo รองรับเวิร์กโฟลว์วิดีโอสร้างสรรค์ขั้นสูง ส่วน Gemini Omni 1.1 Flash มอบแนวทางการตัดต่อด้วยภาษาธรรมชาติที่กระชับ ควบคู่ไปกับ text-to-video, image-to-video และ การสร้างที่อิงข้อมูลอ้างอิงภายในตระกูลเดียวกัน
Gemini Omni 1.1 Flash เทียบกับ Runway Video Editing: Runway มีชุดเครื่องมือตัดต่อภาพที่หลากหลาย ส่วน Gemini Omni 1.1 Flash เน้นเวิร์กโฟลว์ที่ให้ API เป็นหลัก โดยใช้คลิปต้นฉบับและคำสั่งข้อความเป็นพื้นฐานสำหรับการตัดต่อใหม่
Gemini Omni 1.1 Flash เทียบกับ Adobe Firefly Video: Adobe Firefly Video เชื่อมโยงอย่างใกล้ชิดกับ เวิร์กโฟลว์ซอฟต์แวร์สร้างสรรค์ที่เป็นที่ยอมรับ ส่วน Gemini Omni 1.1 Flash มอบทางเลือกแบบโปรแกรมให้นักพัฒนาใช้เพื่ออธิบายและ สร้างการแก้ไขวิดีโอแบบเฉพาะจุด
Gemini Omni 1.1 Flash เทียบกับ Kling Video Editing: Kling มีเครื่องมือวิดีโอสร้างสรรค์สำหรับการสร้างงานที่มีสไตล์ ส่วน Gemini Omni 1.1 Flash มีประโยชน์เมื่อทีมต้องการการตัดต่อที่รับรู้แหล่งที่มาผ่านการผสานรวม API โดยตรง
Gemini Omni 1.1 Flash เทียบกับ Pika: Pika มอบการสร้างสรรค์ที่เข้าถึงง่ายและการทดลองที่เน้นเอฟเฟกต์ ส่วน Gemini Omni 1.1 Flash มุ่งเน้นการปรับแต่งวิดีโอตามคำสั่ง ซึ่งสามารถนำไปใช้ในเวิร์กโฟลว์ผลิตภัณฑ์ ที่เชื่อมต่อกันได้
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: 'gemini-omni-1.1-flash-video-edit',
prompt: 'A small ball rolls into the scene and captures the attention of the cat',
video_url: 'https://example.com/source-video.mp4',
resolution: '1080p'
})
});
const { data } = await response.json();
const taskId = data.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[0].url);
break;
}
if (status === 'failed') {
console.error(pollResultData.data.task_status_msg);
break;
}
await new Promise(resolve => setTimeout(resolve, ));
}
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': 'gemini-omni-1.1-flash-video-edit',
'prompt': 'A small ball rolls into the scene and captures the attention of the cat',
'video_url': 'https://example.com/source-video.mp4',
'resolution': '1080p'
}
)
result = response.json()
task_id = result['data']['task_id']
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": "gemini-omni-1.1-flash-video-edit",
"prompt": "A small ball rolls into the scene and captures the attention of the cat",
"video_url": "https://example.com/source-video.mp4",
"resolution": "1080p"
}'
# 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"
# 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)