জেমিনি অমনি ফ্ল্যাশ দিয়ে ভিডিও তৈরি ও সম্পাদনা করুন

জেমিনি অমনি ফ্ল্যাশ ( gemini-omni-flash-preview ) হলো একটি উচ্চ-ক্ষমতাসম্পন্ন মাল্টিমোডাল মডেল, যা দ্রুতগতির ভিডিও তৈরি, সম্পাদনা এবং সিনেম্যাটিক নিয়ন্ত্রণের জন্য ডিজাইন করা হয়েছে। জেমিনি অমনি নিম্নলিখিত মূল সক্ষমতাগুলোর উপর ভিত্তি করে নির্মিত, যা এটিকে পূর্ববর্তী ভিডিও মডেলগুলো থেকে স্বতন্ত্র করে তোলে:

  • নেটিভ মাল্টিমোডালিটি: এটি একই সাথে টেক্সট, ছবি, অডিও এবং ভিডিও প্রসেস করে, যার ফলে আপনি আরও সুসংহত, সামঞ্জস্যপূর্ণ এবং নিয়ন্ত্রণযোগ্য আউটপুট পান।
  • কথোপকথনমূলক সম্পাদনা: ইন্টারেকশনস এপিআই (Interactions API) দ্বারা চালিত এই ফিচারটি আপনাকে স্বাভাবিক কথোপকথনের মাধ্যমে আপনার ভিডিওগুলোকে বারবার পরিমার্জন ও সম্পাদনা করতে দেয়। আপনি কী পরিবর্তন করতে চান তা বর্ণনা করুন, এবং মডেলটি ভিডিওর যে অংশগুলো আপনি রাখতে চান তা অক্ষুণ্ণ রেখে সম্পাদনাটি প্রয়োগ করবে।
  • বিশ্ব জ্ঞান: জেমিনি অমনি পদার্থবিজ্ঞানের বোধের সাথে জেমিনির ইতিহাস, বিজ্ঞান এবং সাংস্কৃতিক প্রেক্ষাপটের জ্ঞানকে একত্রিত করে, যা আলোকচিত্রের মতো বাস্তববাদ থেকে অর্থপূর্ণ গল্প বলার দিকে সেতুবন্ধন তৈরি করে।

টেক্সট থেকে ভিডিও তৈরি

টেক্সট প্রম্পট থেকে একটি ভিডিও তৈরি করুন। মডেলটি আপনার টেক্সট বর্ণনার উপর ভিত্তি করে অডিও সহ একটি ভিডিও তৈরি করে। সেরা ফলাফলের জন্য দৃশ্যের বর্ণনা, ক্যামেরার মুভমেন্ট, আলো এবং মেজাজের মতো বিবরণ সহ প্রম্পট লিখুন।

পাইথন

import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A marble rolling fast on a chain reaction style track, continuous smooth shot."
)
with open("marble.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from '@google/genai';
import * as fs from 'fs';
const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({  
  model: 'gemini-omni-flash-preview',  
  input: 'A marble rolling fast on a chain reaction style track, continuous smooth shot.',
});

if (interaction.output_video?.data) {
  fs.writeFileSync('marble.mp4', Buffer.from(interaction.output_video.data, 'base64'));
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?key=$API_KEY" \
-H "Content-Type: application/json" \
-d '{
 "model": "gemini-omni-flash-preview",
 "input": "A marble rolling fast on a chain reaction style track, continuous smooth shot."
}'

REST প্রতিক্রিয়া স্কিমা

interaction.output_video নামক কনভেনিয়েন্স ফিল্ডটি শুধুমাত্র SDK-এর জন্য । সরাসরি REST API ব্যবহার করার সময় steps অ্যারে থেকে ভিডিও আউটপুট নিন।

কাঁচা REST JSON কাঠামো:

{
  "steps": [
    { "type": "user_input", "content": [{"type": "text", "text": "..."}] },
    { "type": "thought", "content": [{"text": "...", "type": "thought"}] },
    {
      "type": "model_output",
      "content": [
        {
          "type": "video",
          "mime_type": "video/mp4",
          "data": "AAAAIGZ0eXBpc29t..." // Base64 encoded video data
        }
      ]
    }
  ],
  "id": "v1_...",
  "status": "completed",
  "model": "gemini-omni-flash-preview",
  "object": "interaction"
}

আকৃতির অনুপাত নিয়ন্ত্রণ করুন

পোর্ট্রেট ভিডিও তৈরি করতে aspect_ratio "9:16" এ সেট করুন। ল্যান্ডস্কেপ (16:9) হলো ডিফল্ট।

পাইথন

import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A futuristic city with neon lights and flying cars, cyberpunk style",
    response_format={
        "type": "video",  # optional
        "aspect_ratio": "9:16"  # Supported values: "9:16", "16:9"
    }
)
with open("example.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from '@google/genai';
import * as fs from 'fs';
const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: 'gemini-omni-flash-preview',
  input: 'A futuristic city with neon lights and flying cars, cyberpunk style',
  response_format: {
    type: 'video', // optional
    aspect_ratio: '9:16' // Supported values: '9:16', '16:9'
  },
});

if (interaction.output_video?.data) {
  fs.writeFileSync('example.mp4', Buffer.from(interaction.output_video.data, 'base64'));
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?key=$API_KEY" \
-H "Content-Type: application/json" \
-d '{
 "model": "gemini-omni-flash-preview",
 "input": "A futuristic city with neon lights and flying cars, cyberpunk style",
 "response_format": {
   "type": "video",
   "aspect_ratio": "9:16"
 }
}'

ছবি থেকে ভিডিও তৈরি

আপনি আপনার টেক্সট প্রম্পটের সাথে একটি রেফারেন্স ইমেজ দিতে পারেন। আপনার প্রম্পটের উপর নির্ভর করে, মডেল ছবিটি কীভাবে ব্যবহার করবে তা ঠিক করবে। প্রোডাক্ট শট, ইলাস্ট্রেশন বা ফটোগ্রাফকে প্রাণবন্ত করে তোলার জন্য এটি কার্যকর।

নিচের উদাহরণটিতে দেখানো হয়েছে, কীভাবে জল থেকে লাফিয়ে ওঠা মাছের ছবির রেফারেন্স ইমেজ ব্যবহার করতে হয়:

জল থেকে লাফিয়ে ওঠা মাছের ছবি

নিম্নলিখিত নির্দেশনার সাথে:

turn this into realistic footage, using the drawing only as a guide for movement, do not show the drawing in the final video

অঙ্কনটির একটি বাস্তবসম্মত ভিডিও তৈরি করতে।

পাইথন

import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input=[
        {"type": "image", "data": base64_image, "mime_type": "image/jpeg"},
        {"type": "text", "text": "turn this into realistic footage, using the drawing only as a guide for movement, do not show the drawing in the final video"}
    ],
)
with open("clownfish.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from '@google/genai';
import * as fs from 'fs';
const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: 'gemini-omni-flash-preview',
  input: [
    { type: 'image', data: base64Image, mime_type: 'image/jpeg' },
    { type: 'text', text: 'turn this into realistic footage, using the drawing only as a guide for movement, do not show the drawing in the final video' }
  ]
});

if (interaction.output_video?.data) {
  fs.writeFileSync('clownfish.mp4', Buffer.from(interaction.output_video.data, 'base64'));
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?key=$API_KEY" \
-H "Content-Type: application/json" \
-d '{
 "model": "gemini-omni-flash-preview",
 "input": [
   {"type": "image", "data": "'"$BASE64_IMAGE"'", "mime_type": "image/jpeg"},
   {"type": "text", "text": "turn this into realistic footage, using the drawing only as a guide for movement, do not show the drawing in the final video"}
 ]
}'

বিষয় রেফারেন্স

রেফারেন্স ছবি হিসেবে দেওয়া নির্দিষ্ট বিষয়বস্তু অন্তর্ভুক্ত করে আপনি একটি ভিডিও তৈরি করতে পারেন। উদাহরণস্বরূপ, নিচের কোডটি দেখায় কীভাবে একটি বিড়াল এবং সুতার দুটি ছবি দিয়ে বিড়ালটির সুতা নিয়ে খেলার একটি ভিডিও তৈরি করা যায়।

পাইথন

import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input=[
        {"type": "image", "data": cat_b64, "mime_type": "image/png"},
        {"type": "image", "data": yarn_b64, "mime_type": "image/png"},
        {"type": "text", "text": "A cat playfully batting at a ball of yarn."}
    ],
)
with open("cat.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from '@google/genai';
import * as fs from 'fs';
const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: 'gemini-omni-flash-preview',
  input: [
    { type: 'image', data: catData, mime_type: 'image/png' },
    { type: 'image', data: yarnData, mime_type: 'image/png' },
    { type: 'text', text: 'A cat playfully batting at a ball of yarn.' }
  ]
});

if (interaction.output_video?.data) {
  fs.writeFileSync('cat.mp4', Buffer.from(interaction.output_video.data, 'base64'));
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?key=$API_KEY" \
-H "Content-Type: application/json" \
-d '{
 "model": "gemini-omni-flash-preview",
 "input": [
   {"type": "image", "data": "'"$CAT_B64"'", "mime_type": "image/png"},
   {"type": "image", "data": "'"$YARN_B64"'", "mime_type": "image/png"},
   {"type": "text", "text": "A cat playfully batting at a ball of yarn."}
 ]
}'

টাস্ক প্যারামিটার

উদ্দিষ্ট আচরণ স্পষ্টভাবে নির্দেশ করার জন্য video-configtask প্যারামিটারটি ব্যবহার করুন। উদাহরণস্বরূপ, আপনি যদি চান যে মডেলটি একটি ছবি থেকে ভিডিও তৈরি করুক, তাহলে আপনি প্যারামিটারটি image_to_video তে সেট করতে পারেন। এটি সেট করা না থাকলে, মডেলটি প্রম্পট থেকে আপনি কী চান তা অনুমান করে নেবে।

নিম্নলিখিত মানগুলি অনুমোদিত:

  • text_to_video
  • image_to_video
  • reference_to_video
  • edit

নিম্নলিখিত উদাহরণটি দেখায় যে পূর্বে দেখানো ছবি থেকে ভিডিও উদাহরণের জন্য এটি কীভাবে সেট করতে হয়।

পাইথন

import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input=[
        {"type": "image", "data": base64_image, "mime_type": "image/jpeg"},
        {"type": "text", "text": "turn this into realistic footage, using the drawing only as a guide for movement, do not show the drawing in the final video"}
    ],
    generation_config={
      "video_config": {
        "task": "image_to_video",
      }
    },
)
with open("example.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";
import * as fs from 'fs';
const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: 'gemini-omni-flash-preview',
  input: [
    { type: 'image', data: base64Image, mime_type: 'image/jpeg' },
    { type: 'text', text: 'turn this into realistic footage, using the drawing only as a guide for movement, do not show the drawing in the final video' }
  ],
  generationConfig: {
    videoConfig: {
      task: 'image_to_video',
    }
  }
});

if (interaction.output_video?.data) {
  fs.writeFileSync('example.mp4', Buffer.from(interaction.output_video.data, 'base64'));
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-omni-flash-preview",
    "input": [
      {
        "type": "image",
        "data": "'"$BASE64_IMAGE"'",
        "mime_type": "image/jpeg"
      },
      {
        "type": "text",
        "text": "turn this into realistic footage, using the drawing only as a guide for movement, do not show the drawing in the final video"
      }
    ],
    "generation_config": {
      "video_config": {
        "task": "image_to_video"
      }
    }
  }'

স্টেটফুল ভিডিও এডিটিং

একটি ভিডিও তৈরি করুন এবং ফলো-আপ প্রম্পট ব্যবহার করে এটিকে পর্যায়ক্রমে সম্পাদনা করুন। প্রতিটি ধাপ পূর্ববর্তী ফলাফলের উপর ভিত্তি করে তৈরি হয়। মডেলটি ভিডিওর প্রেক্ষাপট মনে রাখে এবং আপনার উল্লেখ না করা উপাদানগুলো অক্ষুণ্ণ রেখে আপনার পরিবর্তনগুলো প্রয়োগ করে। পূর্ববর্তী ভিডিওটি পুনরায় আপলোড না করেই কথোপকথনের ইতিহাস এবং তৈরি হওয়া ভিডিওর অবস্থা ট্র্যাক করতে previous_interaction_id ব্যবহার করুন।

নিচের উদাহরণটি দেখায় কিভাবে একটি প্রথম ভিডিও তৈরি করে তারপর সেটি সম্পাদনা করতে হয়:

পাইথন

import base64
from google import genai

client = genai.Client()

# Turn 1: Generate initial video
res1 = client.interactions.create(model="gemini-omni-flash-preview", input="A woman playing violin outdoors.")

# Turn 2: Edit the previous video
res2 = client.interactions.create(
    model="gemini-omni-flash-preview",
    previous_interaction_id=res1.id,
    input="Make the violin invisible."
)
with open("example.mp4", "wb") as f:
    f.write(base64.b64decode(res2.output_video.data))

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from '@google/genai';
import * as fs from 'fs';
const ai = new GoogleGenAI({});

// Turn 1: Generate initial video
const res1 = await ai.interactions.create({
  model: 'gemini-omni-flash-preview',
  input: 'A woman playing violin outdoors.',
});

// Turn 2: Edit the previous video
const res2 = await ai.interactions.create({
  model: 'gemini-omni-flash-preview',
  previous_interaction_id: res1.id,
  input: 'Make the violin invisible.',
});

if (res2.output_video?.data) {
  fs.writeFileSync('example.mp4', Buffer.from(res2.output_video.data, 'base64'));
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?key=$API_KEY" \
-H "Content-Type: application/json" \
-d '{
 "model": "gemini-omni-flash-preview",
 "previous_interaction_id": "'"$PREVIOUS_ID"'",
 "input": "Make the violin invisible."
}'

প্রাথমিক ভিডিওর একটি উদাহরণ:

সম্পাদিত ভিডিওর একটি উদাহরণ:

কথোপকথনের প্রতিটি পালা একটি নতুন ভিডিও তৈরি করে। মডেলটি পূর্ববর্তী পালাগুলো থেকে প্রেক্ষাপট বুঝতে পারে, ফলে আপনাকে পুরো দৃশ্যটি পুনরায় বর্ণনা না করেই আলোর সামঞ্জস্য করা এবং পটভূমি বদলানোর মতো ছোট ছোট পরিবর্তন করার সুযোগ দেয়।

আপনার নিজের ভিডিও সম্পাদনা করুন

Gemini Omni Flash দিয়ে সম্পাদনা করার জন্য Files API ব্যবহার করে আপনার ভিডিওগুলো আপলোড করুন।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে নিম্নলিখিত মূল ভিডিওটি সম্পাদনা করতে হয়:

পাইথন

import time
import base64
from google import genai

client = genai.Client()

# Upload video using the file API
video_file = client.files.upload(file="Video.mp4")

while video_file.state == "PROCESSING":
    print('Waiting for video to be processed.')
    time.sleep(10)
    video_file = client.files.get(name=video_file.name)

if video_file.state == "FAILED":
  raise ValueError(video_file.state)
print(f'Video processing complete: ' + video_file.uri)

# Edit your video
interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input=[
        {"type": "document", "uri": video_file.uri},
        {"type": "text", "text": "When the person touches the mirror, make the mirror ripple beautifully like liquid, and the person's arm turns into reflective mirror material"}
    ],
)
with open("example.mp4", "wb") as f:
    f.write(base64.b64decode(interaction.output_video.data))

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from '@google/genai';
import * as fs from 'fs';
const ai = new GoogleGenAI({});

// Upload video using the file API
let videoFile = await ai.files.upload({
  file: 'Video.mp4',
});

while (videoFile.state === 'PROCESSING') {
  console.log('Waiting for video to be processed.');
  await new Promise(r => setTimeout(r, 10000));
  videoFile = await ai.files.get({ name: videoFile.name });
}

if (videoFile.state === 'FAILED') {
  throw new Error(videoFile.state);
}
console.log('Video processing complete: ' + videoFile.uri);

// Edit your video
const interaction = await ai.interactions.create({
  model: 'gemini-omni-flash-preview',
  input: [
    { type: 'document', uri: videoFile.uri },
    { type: 'text', text: "When the person touches the mirror, make the mirror ripple beautifully like liquid, and the person's arm turns into reflective mirror material" }
  ],
});

if (interaction.output_video?.data) {
  fs.writeFileSync('example.mp4', Buffer.from(interaction.output_video.data, 'base64'));
}

বিশ্রাম

#!/bin/bash
VIDEO_B64=$(encode_file "$VIDEO_FILE")

curl -sS -w "\n[HTTP %{http_code}]\n" "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d @- <<EOF > video_editing_response.json
{
  "model": "gemini-omni-flash-preview",
  "input": [
    {
      "type": "user_input",
      "content": [
        {
          "type": "video",
          "mime_type": "video/mp4",
          "data": "$VIDEO_B64"
        },
        {
          "type": "text",
          "text": "When the person touches the mirror, make the mirror ripple beautifully like liquid, and the person's arm turns into reflective mirror material"
        }
      ]
    }
  ],
  "response_format": { "type": "video" }
}
EOF

সম্পাদিত ভিডিওর একটি উদাহরণ:

একটি URI দিয়ে ভিডিও পুনরুদ্ধার করা

৪ মেগাবাইটের চেয়ে বড় আকারের তৈরি হওয়া ভিডিওগুলো পাওয়ার জন্য response_formatdelivery="uri" প্যারামিটারটি ব্যবহার করুন। এটি একটি গুগল-হোস্টেড URI ফেরত দেয়, যা আপনি ডাউনলোড করার আগে ভিডিওটি ACTIVE না হওয়া পর্যন্ত পোল করতে পারেন।

পাইথন

import time
from google import genai

client = genai.Client()

# 1. Request video via URI delivery
interaction = client.interactions.create(
    model="gemini-omni-flash-preview",
    input="A beautiful sunset.",
    response_format={"type": "video", "delivery": "uri"}
)

# 2. Extract file name and poll for ACTIVE state
video_output = interaction.output_video
file_name = video_output.uri.split("/")[-1] # Extract ID

print("Waiting for video processing...")
while True:
    f_info = client.files.get(name=f"files/{file_name}")
    if f_info.state.name == "ACTIVE":
        break
    elif f_info.state.name == "FAILED":
        raise RuntimeError("Generation failed.")
    time.sleep(5)

# 3. Download the final video
video_bytes = client.files.download(file=video_output.uri)
with open("output.mp4", "wb") as f:
    f.write(video_bytes)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});

// 1. Request video via URI delivery
const interaction = await ai.interactions.create({
  model: 'gemini-omni-flash-preview',
  input: 'A beautiful sunset.',
  response_format: { type: 'video', delivery: 'uri' },
});

// 2. Extract file name and poll for ACTIVE state
const videoOutput = interaction.output_video;
const fileId = videoOutput.uri.match(/files\/([a-zA-Z0-9]+)/)[1];
const name = `files/${fileId}`;

console.log("Waiting for video processing...");
while (true) {
  const fInfo = await ai.files.get({ name });
  if (fInfo.state.name === 'ACTIVE') break;
  if (fInfo.state.name === 'FAILED') throw new Error("Generation failed.");
  await new Promise(r => setTimeout(r, 5000));
}

// 3. Download the final video
await ai.files.download({
  file: videoOutput,
  downloadPath: 'output.mp4',
});
console.log("💾 Saved video to output.mp4");

বিশ্রাম

#!/bin/bash

# 1. Initial request to generate the video
RESPONSE=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?key=$API_KEY" \
-H "Content-Type: application/json" \
-d '{
 "model": "gemini-omni-flash-preview",
 "input": "A beautiful sunset over a calm ocean.",
 "response_format": {"type": "video", "delivery": "uri"}
}')

# Extract FILE_ID from the URI (e.g., "files/abc-123" -> "abc-123")
FILE_URI=$(echo $RESPONSE | jq -r '.output_video.uri')
FILE_ID=$(echo $FILE_URI | cut -d'/' -f2)

echo "Video requested (ID: $FILE_ID). Waiting for processing..."

# 2. Polling loop
while true; do
 # Get current file status
 STATUS_JSON=$(curl -s -X GET "https://generativelanguage.googleapis.com/v1beta/files/$FILE_ID?key=$API_KEY")
 STATE=$(echo $STATUS_JSON | jq -r '.state')

 if [ "$STATE" == "ACTIVE" ]; then
   echo "Processing complete! Downloading..."
   break
 elif [ "$STATE" == "FAILED" ]; then
   echo "Error: Generation failed."
   exit 1
 else
   echo "Current state: $STATE... (waiting 5s)"
   sleep 5
 fi
done

# 3. Final download
curl -L -X GET "https://generativelanguage.googleapis.com/v1beta/files/$FILE_ID:download?alt=media&key=$API_KEY" \
--output "output.mp4"

echo "Done! Video saved to output.mp4"

কাঁচা REST JSON কাঠামো (URI):

{
  "steps": [
    { "type": "user_input", "content": [{"type": "text", "text": "..."}] },
    { "type": "thought", "content": [{"text": "...", "type": "thought"}] },
    {
      "type": "model_output",
      "content": [
        {
          "type": "video",
          "mime_type": "video/mp4",
          "uri": "https://generativelanguage.googleapis.com/v1beta/files/...:download?alt=media"
        }
      ]
    }
  ],
  "id": "v1_...",
  "status": "completed",
  "model": "gemini-omni-flash-preview",
  "object": "interaction"
}


সর্বোত্তম অনুশীলন

  • বড় ভিডিওর জন্য URI ডেলিভারি ব্যবহার করুন: 4MB-এর চেয়ে বড় ভিডিওর (উপলভ্য হলে >720p) ক্ষেত্রে, পেলোড সাইজের সীমাবদ্ধতা এড়াতে response_formatdelivery="uri" ব্যবহার করুন।
  • সর্বোত্তম পারফরম্যান্স: দ্রুততর, সিঙ্ক্রোনাস ইউনারি জেনারেশনের জন্য background=false , store=false , এবং stream=false সেট করুন। মনে রাখবেন যে store=false সেট করার অর্থ হলো, previous_interaction_id ব্যবহার করে পরবর্তী টার্নগুলোতে জেনারেট করা ভিডিওটি সম্পাদনা করা যাবে না।
  • প্রম্পটের নির্ভুলতা: বিস্তারিত জানতে প্রম্পট নির্দেশিকা বিভাগটি দেখুন।

সীমাবদ্ধতা

  • ইউরোপীয় অর্থনৈতিক অঞ্চল, সুইজারল্যান্ড এবং যুক্তরাজ্যে অপ্রাপ্তবয়স্কদের ছবি আপলোড ও সম্পাদনা করা সমর্থিত নয়।
  • নির্দিষ্ট কিছু চেনা ব্যক্তি সম্বলিত ছবি আপলোড ও সম্পাদনা করা সমর্থিত নয়।
  • ইউরোপীয় অর্থনৈতিক অঞ্চল (EEA), সুইজারল্যান্ড এবং যুক্তরাজ্যের ব্যবহারকারীদের জন্য বর্তমানে আপলোড করা ভিডিও সম্পাদনা করার সুবিধাটি উপলব্ধ নয় (তবে মডেল দ্বারা তৈরি ভিডিও সম্পাদনা করা সমর্থিত)।
  • API-এর বর্তমান সংস্করণে অডিও রেফারেন্স আপলোড করা সমর্থিত নয়।
  • এপিআই স্কিমা ৩ সেকেন্ড পর্যন্ত দৈর্ঘ্যের ভিডিও রেফারেন্স গ্রহণ করে, কিন্তু বর্তমানে মডেলটি সেগুলো সঠিকভাবে প্রসেস করতে পারে না।
  • একাধিক ভিডিও জুড়ে তথ্য উল্লেখ করা বা তার ভিত্তিতে সিদ্ধান্ত গ্রহণ সমর্থিত নয়। একাধিক ভিডিও থেকে তথ্য অনুসন্ধানের চেষ্টা করলে মডেলের কর্মক্ষমতা হ্রাস পেতে পারে বা অপ্রত্যাশিত ফলাফল পাওয়া যেতে পারে।
  • ভিডিও এক্সটেনশন এবং ভিডিও ইন্টারপোলেশন (প্রথম ও শেষ ফ্রেমের মধ্যে ভিডিও তৈরি করা) সমর্থিত নয়।
  • ভয়েস এডিটিং সমর্থিত নয়।
  • বরাদ্দকৃত থ্রুপুট সমর্থিত নয়।
  • সিস্টেম নির্দেশাবলী, তাপমাত্রা, top_p , স্টপ সিকোয়েন্স এবং নেতিবাচক প্রম্পট সমর্থিত নয় (আপনি সাধারণ প্রম্পটে নেতিবাচক নির্দেশ দিতে পারেন: যেমন, "X করবেন না")।
  • মিডিয়া উৎস হিসেবে ইউটিউব ভিডিও ব্যবহার করা সমর্থিত নয়।

প্রযুক্তিগত বিবরণ

  • তৈরি করা সমস্ত ভিডিওতে SynthID ওয়াটারমার্কিং অন্তর্ভুক্ত থাকে, যা দর্শকদের কাছে অদৃশ্য থাকলেও উৎস যাচাইয়ের জন্য প্রোগ্রামগতভাবে শনাক্ত করা যায়।
  • ভিডিও তৈরির সময় এর দৈর্ঘ্য, রেজোলিউশন এবং বর্তমান এপিআই লোডের উপর নির্ভর করে পরিবর্তিত হয়। দীর্ঘ এবং উচ্চ-রেজোলিউশনের ভিডিও তৈরি হতে বেশি সময় লাগে।
  • কন্টেন্ট সুরক্ষা ফিল্টার ইনপুট প্রম্পট এবং তৈরি হওয়া ভিডিও উভয়ের ক্ষেত্রেই প্রয়োগ করা হয় (এবং এটি আপনার অঞ্চলের উপর নির্ভরশীল)। ব্যবহারের নীতি লঙ্ঘনকারী প্রম্পটগুলো ব্লক করা হবে।
  • ইংরেজি (EN) সম্পূর্ণরূপে সমর্থিত, কিন্তু অন্যান্য ভাষা মূল্যায়ন করা হয়নি, তাই সেগুলি কাজ করলেও ফলাফল ভিন্ন হতে পারে।

জেমিনি ওমনি ফ্ল্যাশ প্রম্পট গাইড

এই বিভাগে জেমিনি অমনি ফ্ল্যাশ কার্যকরভাবে প্রম্পট করার উপায় সম্পর্কে পরামর্শ ও উদাহরণ রয়েছে।

একক দৃশ্য

ডিফল্টভাবে অমনি ফ্ল্যাশ কয়েকটি ভিন্ন শট ব্যবহার করে একটি ভিডিও তৈরি করার চেষ্টা করবে। এটি প্রম্পটের উপর ভিত্তি করে একটি আকর্ষণীয় আখ্যান গড়ে তোলার প্রয়াস চালাবে।

আউটপুট ভিডিওতে যদি একটিমাত্র দৃশ্য রাখার প্রয়োজন হয়, তবে আপনাকে তার জন্য নির্দেশ দিতে হবে:

  • একটি অবিচ্ছিন্ন দৃশ্যে
  • একটানা শটে
  • কোন দৃশ্য কাটা হয়নি

উদাহরণস্বরূপ:

Continuous, unbroken handheld shot of a fluffy tabby cat sitting on a sunny windowsill, looking out into a leafy garden. The cat's tail twitches slowly, and its ears rotate slightly toward ambient noises. Sunbeams illuminate dust motes in the air. Sound design: Gentle breeze, distant bird chirps. No dialogue.

অবাঞ্ছিত উপাদান অপসারণ করা

তৈরি হওয়া ভিডিওতে যদি আপনার অনাকাঙ্ক্ষিত কিছু থাকে, তবে সেগুলো এড়ানোর জন্য সহজ নেতিবাচক প্রম্পট যোগ করুন:

  • কোন সংলাপ নেই
  • কোন অলঙ্করণ নেই
  • কোনো অতিরিক্ত শব্দ প্রভাব নেই

সম্পাদনার জন্য নির্দেশিকা

ভিডিও সম্পাদনার জন্য সহজ নির্দেশাবলীই সবচেয়ে ভালো কাজ করে। অতিরিক্ত বিশদ নির্দেশাবলীর ফলে অনাকাঙ্ক্ষিত পরিবর্তন হয়ে যেতে পারে।

সহজ সম্পাদনা নির্দেশনার আরও কিছু উদাহরণ নিচে দেওয়া হলো:

  • এই ভিডিওটি অ্যানিমে বানান।
  • এই ব্যক্তিকে একটি ফ্যাশনেবল টুপি পরান।
  • আলো পরিবর্তন করে আরও নাটকীয় করে তুলুন।
  • সাইনবোর্ডের লেখাটি পরিবর্তন করে "Omni Flash" করুন।

ভিডিওর কোনো নির্দিষ্ট অংশ সম্পাদনা করার সময়, দৃশ্যগত সামঞ্জস্য বজায় রাখতে "Keep everything else the same" কথাটি অন্তর্ভুক্ত করুন।

এই কৌশলটি কীভাবে প্রয়োগ করা যায় তা দেখানোর জন্য নিচে কয়েকটি উদাহরণ দেওয়া হলো:

  • পরিহার করুন: In the video of the man sitting on the sofa, please add a small black cat that runs from the right side of the screen, jumps onto his lap, and then he starts to stroke its head while looking down.
    • সহজ করুন: Add a cat that jumps onto his lap, he begins to pet it. Keep everything else the same.
  • পরিহার করুন: Please remove the cell phone that the person is holding in their hand and fill in the background so it looks like they are just holding their hand empty.
    • সহজ করুন: Make the phone invisible. Keep everything else the same.

অডিও প্রম্পট করা

ডিফল্টরূপে মডেলটি একটি ভিডিওর জন্য উপযুক্ত অডিও ট্র্যাক তৈরি করার চেষ্টা করবে। এটি সবসময় আপনার পছন্দসই নাও হতে পারে। আপনি কী ধরনের অডিও চান, তা বর্ণনা করার জন্য আপনার প্রম্পট ব্যবহার করতে পারেন। আপনি যদি আপনার ভিডিওতে মিউজিক ব্যবহার করতে চান, তবে এটি বিশেষভাবে গুরুত্বপূর্ণ।

  • শান্ত আবহ সঙ্গীত অন্তর্ভুক্ত করুন
  • ভিডিওটিতে একটি উচ্চ শক্তির টেকনো বিট রয়েছে।
  • পটভূমিতে একটি ক্ষীণ, ধাতব স্বরে রেডিও সম্প্রচার শোনা যাচ্ছে, যেখানে একটি গান বাজছে।

সময় নির্ধারণ ইভেন্ট

ভিডিওর নির্দিষ্ট সময়ে কোনো কিছু ঘটানোর জন্য আপনি নির্দেশ দিতে পারেন, এর জন্য কোনো সুনির্দিষ্ট সিনট্যাক্সের প্রয়োজন নেই এবং আপনি স্বাভাবিক ভাষা ব্যবহার করতে পারেন। আপনার নিজস্ব সিন কাট, রিদম বা র‍্যাপিড ফায়ার সিকোয়েন্স তৈরি করার ক্ষেত্রে এটি বিশেষভাবে উপযোগী। উদাহরণের জন্য নিম্নলিখিতগুলি দেখুন:

  • ৩ সেকেন্ড পর একজন মহিলা ঘটনাস্থলে প্রবেশ করেন।
  • ৫ সেকেন্ডে ব্যাকগ্রাউন্ড অডিওতে কোরাস শুরু হয়।
  • প্রতি ২ সেকেন্ড পর পর একটি নতুন ফ্রেমে কাট করুন।
  • দ্রুতগতিতে প্রতি আধা সেকেন্ডে (২৪ এফপিএস-এ ১২ ফ্রেম) দৃশ্যটি একটি নতুন স্থানে পরিবর্তিত হবে।

আপনি টাইমকোড সিনট্যাক্সও ব্যবহার করতে পারেন:

[0-3s] A person is walking
[3-6s] They stop and turn around
[6-10s] They start running

মেটা প্রম্পটিং

আপনি জেমিনি অমনি ফ্ল্যাশকে ভিডিও তৈরির সাধারণ গুণাবলী বা নীতিগুলির প্রতি মনোযোগ দিতে বলতে পারেন:

  • একটি অত্যন্ত সমৃদ্ধ, বিশদ অথচ সম্পূর্ণ স্বাভাবিক দৃশ্য তৈরি করতে সূক্ষ্ম বিবরণ, অভিব্যক্তি এবং সময়ের দিকে মনোযোগ দিন।
  • চরিত্র ও পরিবেশের বর্ণনায় অত্যন্ত বিশদ হোন। চরিত্রগুলোর ক্ষেত্রে পোশাক পরিকল্পনার নীতি প্রয়োগ করুন। দৃশ্যের মানুষ, জিনিসপত্র ও বস্তু সম্পর্কে খুব সুনির্দিষ্টভাবে উল্লেখ করুন।
  • দৃশ্যটিকে বাস্তবসম্মত ও স্বাভাবিক করে তোলার জন্য পটভূমির উপাদানগুলোতে পর্যাপ্ত ও যথাযথ বিবরণ অন্তর্ভুক্ত করুন।
  • একটি দ্রুতগতির ভিডিও তৈরি করুন যেখানে প্রতি ১ সেকেন্ডে একটি ভিন্ন বিরল [thing] দেখানো হবে, সাথে থাকবে প্রাণবন্ত সঙ্গীত এবং জিনিসটির নাম বোঝানোর জন্য লেখা যোগ করুন।

ভিডিওতে লেখা

আপনি আপনার ভিডিওতে টেক্সট যোগ করার জন্য অনুরোধ করতে পারেন এবং জেমিনি অমনি তা সঠিক ও পাঠযোগ্যভাবে রেন্ডার করবে। যদি আপনার ভিডিওতে, এমনকি ব্যাকগ্রাউন্ডের উপাদানগুলিতেও, স্বাভাবিকভাবে কোনো টেক্সট থাকে, তবে তাতে কী লেখা থাকবে তা নির্ধারণ করে দিলে সুবিধা হয়।

  • পর্দায় একবারে একটি করে শব্দ ভেসে উঠবে: "আপনি কি জানেন যে অমনি চমৎকার টেক্সট করতে পারে?" প্রতিটি শব্দ ভিন্ন অ্যানিমেটেড শৈলীতে ১ সেকেন্ডের জন্য প্রদর্শিত হবে। কোনো সংলাপ নেই।
  • রাস্তার একটি সাইনবোর্ডে লেখা আছে: "এটি অমনি-র তৈরি একটি এআই", একটি দোকানের সামনে লেখা আছে: "আপনার যা প্রয়োজন, তার সবই এআই", এবং একটি গাড়ির নম্বর প্লেটে লেখা আছে: "OMN111"।

ছবির ভূমিকা নির্ধারণ করতে প্রম্পটে ট্যাগ ব্যবহার করা

আপনি আপলোড করা মিডিয়াকে নির্দিষ্ট জেনারেশন রোলের সাথে যুক্ত করতে ট্যাগ ব্যবহার করতে পারেন। এর মাধ্যমে আপনি নির্দিষ্ট করতে পারেন যে প্রতিটি ছবি একটি প্রাথমিক ফ্রেম নাকি একটি রেফারেন্স।

১. সহজ ট্যাগ (প্রস্তাবিত)

সাধারণ ক্ষেত্রে, যেখানে প্রম্পট থেকেই ছবির ভূমিকা স্পষ্ট বোঝা যায়, সেখানে আপনি সরাসরি ছবিগুলোকে ভূমিকার সাথে যুক্ত করতে পারেন:

  • <FIRST_FRAME> : ভিডিওর শুরুর ফ্রেম হিসেবে ছবিটি ব্যবহার করুন, উদাহরণস্বরূপ: <FIRST_FRAME> a woman is walking
  • <IMAGE_REF_N> : ছবিটি রেফারেন্স হিসেবে ব্যবহার করুন, উদাহরণস্বরূপ: in the style of <IMAGE_REF_0> a woman <IMAGE_REF_1> is walking (এটি প্রথম ছবির স্টাইল রেফারেন্স এবং দ্বিতীয় ছবির সাবজেক্ট রেফারেন্সের সমন্বয়)। ছবির রেফারেন্স ০ থেকে শুরু হয়।

নিম্নে ৬টি রেফারেন্স ছবি সহ একটি উদাহরণ দেওয়া হলো:

[0-3s] A studio fashion sequence. Starting with woman <IMAGE_REF_0>, she is holding <IMAGE_REF_1>
[3-6s] Then we see the man <IMAGE_REF_2> holding <IMAGE_REF_3>
[6-10s] And finally another woman <IMAGE_REF_4> who is holding <IMAGE_REF_5> while walking.

২. সুস্পষ্ট ঘোষণা

একাধিক ছবি ও একাধিক ভূমিকা সম্বলিত আরও জটিল ক্ষেত্রে, আপনি স্বাভাবিক ভাষার নির্দেশনামূলক সাফিক্সের সাথে সুস্পষ্ট প্রিফিক্স ট্যাগ ব্যবহার করতে পারেন।

  • উৎস এবং রেফারেন্স চিত্র ঘোষণা করা :
    • [# Sources <FIRST_FRAME>@Image1] প্রথম ছবিটিকে প্রারম্ভিক ফ্রেম হিসেবে ব্যবহার করবে।
    • [# References <IMAGE_REF_0>@Image1] প্রথম ছবিটিকে রেফারেন্স হিসেবে ব্যবহার করবে।
    • [# References <IMAGE_REF_1>@Image2] দ্বিতীয় ছবিটিকে রেফারেন্স হিসেবে ব্যবহার করবে।
    • [# References <IMAGE_REF_0>@Image1 <IMAGE_REF_1>@Image2] উভয় ছবিকেই রেফারেন্স হিসেবে ব্যবহার করবে।
    • [# Sources <FIRST_FRAME>@Image1] [# References <IMAGE_REF_0>@Image2] প্রথম ছবিটিকে প্রারম্ভিক ফ্রেম এবং দ্বিতীয় ছবিটিকে তথ্যসূত্র হিসেবে ব্যবহার করবে।
  • নির্দেশনামূলক নির্দেশাবলী : আপনার প্রম্পটের একেবারে শেষে নির্দেশনামূলক নির্দেশাবলী যোগ করুন:
    • প্রারম্ভিক ফ্রেমের জন্য: "Use this image as the starting frame."
    • রেফারেন্স ছবির জন্য: "Use the given image(s) as references for video generation. The images should not be used as literal initial frames."

উদাহরণস্বরূপ বিস্তারিত প্রম্পট:

[# Sources <FIRST_FRAME>@Image1] [# References <IMAGE_REF_0>@Image2] a woman <IMAGE_REF_0> is walking. Use Image1 as the starting frame. Use Image2 as a reference for the video generation.

এরপর কী?