
텍스트로 이미지 생성
텍스트 프롬프트로 AI 이미지 생성
Google Gemini Omni 1.2 Flash API로 동영상을 수정하세요. 장면이나 조명의 변경 사항을 설명하고 원본 클립의 길이와 화면 구성을 유지할 수 있습니다. 원본은 3~10초여야 합니다.
Best Image AI의 Gemini Omni 1.2 Flash Video Edit API는 기존 영상과 텍스트 지시를 받아 편집본을 생성합니다. 원하는 변경 사항을 글로 설명해 기존 장면의 여러 수정안을 시험할 수 있습니다. 개발자는 이 기능을 제작 도구나 검토 절차에 통합해 텍스트로 영상 수정을 요청할 수 있습니다.
프롬프트 기반 영상 수정: 기존 영상에 적용할 편집 지시를 글로 전달해 해당 장면의 수정본을 만듭니다.
장면의 시각 요소 변경: 자연어 지시를 통해 배경, 조명, 날씨를 바꾸도록 요청합니다.
원본 형식 유지: 원본 영상의 길이와 화면 비율을 유지하면서 영상 내용을 수정합니다.
입력: 짧은 원본 영상과 편집 내용을 지정하는 프롬프트를 제공합니다. 제공업체가 안내하는 최소 길이를 포함해 입력 영상의 길이가 지원 범위 안에 있어야 합니다. 최신 제한 사항은 API 문서를 확인하세요.
편집 지시: 원하는 변경 사항과 유지할 세부 요소를 함께 명시해 수정 범위를 분명하게 전달합니다.
출력 설정: 출력 해상도를 선택합니다. 길이와 화면 비율은 원본 영상에 따라 결정되며 별도로 설정할 수 없습니다.
출력: 처리 작업이 끝나면 편집된 영상을 가져옵니다.
요금: 선택한 출력 해상도와 원본 영상 길이를 기준으로 과금합니다. 영상 길이는 초 단위로 반올림하며 최소 과금 시간은 3초입니다.
짧은 영상 수정 절차: 사내 영상 검토 도구에 프롬프트로 수정을 요청하는 기능을 추가합니다.
캠페인 배경 변경: 기존 캠페인 장면의 배경을 바꾸도록 요청하고 결과가 기획 의도에 맞는지 검토합니다.
제품 장면 조명 비교: 짧은 제품 영상의 조명을 바꾸도록 요청하고 생성 결과를 원본과 비교합니다.
기획안 검토: 후속 편집 작업을 계획하기 전에 제안한 수정안이 의도한 바를 전달하는지 시험합니다.
참고 원하는 결과에 맞는 길이와 화면 비율로 원본 영상을 준비하세요. 원본 길이를 반올림하는 것은 요금 계산에만 적용되며 실제 출력 길이가 그에 따라 결정되거나 늘어나지는 않습니다. 편집 결과를 검토해 요청한 변경 사항이 반영되었는지 확인하세요.
Text-to-Video와 비교: Video Edit에는 기존 영상이 필요합니다. Text-to-Video는 글로 설명한 장면을 바탕으로 새 영상을 생성하며 길이와 화면 방향을 지정할 수 있습니다.
Image-to-Video와 비교: Image-to-Video는 시작 이미지에 움직임을 더하며 마지막 이미지도 선택적으로 지정할 수 있습니다. Video Edit는 원본 영상 전체를 수정할 소재로 사용합니다.
Reference-to-Video와 비교: Reference-to-Video는 이미지나 짧은 참고 영상을 활용해 새 영상을 생성합니다. Video Edit는 입력 영상 자체를 편집하며, 해당 영상에 따라 출력 길이와 화면 비율이 결정됩니다.
브라우저에서 빠른 이미지 및 비디오 워크플로를 위한 여러 AI 창작 도구를 살펴본 다음, Best Image AI의 프로덕션용 모델 API로 성공적인 아이디어를 확장하세요. Best Image AI는 모든 모델을 위한 통합 API 계층을 제공하여 워크플로를 쉽게 사용하고 확장할 수 있도록 합니다.
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.2-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.2-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.2-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)