ভিডিও বোঝা

ভিডিও তৈরি সম্পর্কে জানতে Veo গাইডটি দেখুন।

জেমিনি মডেল ভিডিও প্রসেস করতে পারে, যা ডেভেলপারদের জন্য এমন অনেক অত্যাধুনিক ব্যবহারের সুযোগ তৈরি করে, যার জন্য ঐতিহাসিকভাবে ডোমেইন-নির্দিষ্ট মডেলের প্রয়োজন হতো। জেমিনির ভিশন সক্ষমতাগুলোর মধ্যে রয়েছে: ভিডিও বর্ণনা করা, সেগমেন্ট করা এবং তা থেকে তথ্য নিষ্কাশন করা; ভিডিওর বিষয়বস্তু সম্পর্কে প্রশ্নের উত্তর দেওয়া; এবং একটি ভিডিওর মধ্যে নির্দিষ্ট টাইমস্ট্যাম্প উল্লেখ করা।

আপনি নিম্নলিখিত উপায়ে জেমিনিতে ইনপুট হিসাবে ভিডিও সরবরাহ করতে পারেন:

ইনপুট পদ্ধতি সর্বোচ্চ আকার সুপারিশকৃত ব্যবহারের ক্ষেত্র
ফাইল এপিআই ২০ জিবি (মূল্য পরিশোধিত) / ২ জিবি (বিনামূল্যে) বড় ফাইল (১০০ মেগাবাইট+), দীর্ঘ ভিডিও (১০ মিনিট+), পুনঃব্যবহারযোগ্য ফাইল।
ক্লাউড স্টোরেজ নিবন্ধন ২ জিবি (প্রতি ফাইলে, স্টোরেজের কোনো সীমা নেই) বড় ফাইল (১০০ মেগাবাইট+), দীর্ঘ ভিডিও (১০ মিনিট+), স্থায়ী ও পুনঃব্যবহারযোগ্য ফাইল।
ইনলাইন ডেটা < ১০০ মেগাবাইট ছোট ফাইল (<১০০ মেগাবাইট), স্বল্প সময়কাল (<১ মিনিট), এককালীন ইনপুট।
ইউটিউব ইউআরএল প্রযোজ্য নয় সর্বজনীন ইউটিউব ভিডিও।

দ্রষ্টব্য: বেশিরভাগ ক্ষেত্রে ফাইল এপিআই (File API) ব্যবহার করার পরামর্শ দেওয়া হয়, বিশেষ করে ১০০ মেগাবাইটের চেয়ে বড় ফাইলের জন্য অথবা যখন আপনি একাধিক অনুরোধে ফাইলটি পুনরায় ব্যবহার করতে চান।

অন্যান্য ফাইল ইনপুট পদ্ধতি, যেমন এক্সটার্নাল ইউআরএল বা গুগল ক্লাউডে সংরক্ষিত ফাইল ব্যবহার করার বিষয়ে জানতে, ফাইল ইনপুট পদ্ধতি নির্দেশিকাটি দেখুন।

একটি ভিডিও ফাইল আপলোড করুন

নিম্নলিখিত কোডটি একটি নমুনা ভিডিও ডাউনলোড করে, ফাইলস এপিআই (Files API) ব্যবহার করে সেটি আপলোড করে, সেটির প্রক্রিয়াকরণের জন্য অপেক্ষা করে এবং তারপর আপলোড করা ফাইল রেফারেন্সটি ব্যবহার করে ভিডিওটির সারসংক্ষেপ তৈরি করে।

পাইথন

from google import genai
import base64

client = genai.Client()

myfile = client.files.upload(file="path/to/sample.mp4")

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input=[
        {"type": "video", "uri": myfile.uri, "mime_type": myfile.mime_type},
        {"type": "text", "text": "Summarize this video. Then create a quiz with an answer key based on the information in this video."}
    ]
)

print(interaction.steps[-1].content[0].text)

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

import {
  GoogleGenAI,
  createUserContent,
  createPartFromUri,
} from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {
  const myfile = await ai.files.upload({
    file: "path/to/sample.mp4",
    config: { mimeType: "video/mp4" },
  });

  const interaction = await ai.interactions.create({
    model: "gemini-3-flash-preview",
    input: [
      createPartFromUri(myfile.uri, myfile.mimeType),
      "Summarize this video. Then create a quiz with an answer key based on the information in this video.",
    ],
  });
  console.log(interaction.steps.at(-1).content[0].text);
}

await main();

বিশ্রাম

VIDEO_PATH="path/to/sample.mp4"
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO

tmp_header_file=upload-header.tmp

echo "Starting file upload..."
curl "https://generativelanguage.googleapis.com/upload/v1beta/files" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -D ${tmp_header_file} \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

echo "Uploading video data..."
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq -r ".file.uri" file_info.json)
echo file_uri=$file_uri

echo "File uploaded successfully. File URI: ${file_uri}"

echo "Generating content from video..."
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-3-flash-preview",
      "input": [
        {"type": "video", "uri": "'${file_uri}'", "mime_type": "'${MIME_TYPE}'"},
        {"type": "text", "text": "Summarize this video. Then create a quiz with an answer key based on the information in this video."}
      ]
    }' 2> /dev/null > response.json

jq ".steps[].content[0].text" response.json

যখন মোট অনুরোধের আকার (ফাইল, টেক্সট প্রম্পট, সিস্টেম নির্দেশাবলী ইত্যাদি সহ) ২০ মেগাবাইটের বেশি হয়, ভিডিওর সময়কাল উল্লেখযোগ্য হয়, অথবা আপনি একাধিক প্রম্পটে একই ভিডিও ব্যবহার করতে চান, তখন সর্বদা ফাইলস এপিআই (Files API) ব্যবহার করুন। ফাইল এপিআই সরাসরি ভিডিও ফাইল ফরম্যাট গ্রহণ করে।

মিডিয়া ফাইল নিয়ে কাজ করার বিষয়ে আরও জানতে, ফাইলস এপিআই (Files API) দেখুন।

ভিডিও ডেটা ইনলাইনে পাঠান

ফাইল এপিআই ব্যবহার করে ভিডিও ফাইল আপলোড করার পরিবর্তে, আপনি ছোট ভিডিওগুলো সরাসরি রিকোয়েস্টে পাঠাতে পারেন। এটি ২০ মেগাবাইটের কম মোট রিকোয়েস্ট সাইজের ছোট ভিডিওর জন্য উপযুক্ত।

ইনলাইন ভিডিও ডেটা প্রদানের একটি উদাহরণ নিচে দেওয়া হলো:

পাইথন

from google import genai

video_file_name = "/path/to/your/video.mp4"
video_bytes = open(video_file_name, 'rb').read()

client = genai.Client()
interaction = client.interactions.create(
    model='gemini-3-flash-preview',
    input=[
        {"type": "text", "text": "Please summarize the video in 3 sentences."},
        {
            "type": "video",
            "data": base64.b64encode(video_bytes).decode('utf-8'),
            "mime_type": "video/mp4"
        }
    ]
)
print(interaction.steps[-1].content[0].text)

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

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

const ai = new GoogleGenAI({});
const base64VideoFile = fs.readFileSync("path/to/small-sample.mp4", {
  encoding: "base64",
});

const interaction = await ai.interactions.create({
  model: "gemini-3-flash-preview",
  input: [
    { type: "text", text: "Please summarize the video in 3 sentences." },
    {
      type: "video",
      data: base64VideoFile,
      mime_type: "video/mp4",
    }
  ],
});
console.log(interaction.steps.at(-1).content[0].text);

বিশ্রাম

VIDEO_PATH=/path/to/your/video.mp4

if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi

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-3-flash-preview",
      "input": [
        {"type": "text", "text": "Please summarize the video in 3 sentences."},
        {
          "type": "video",
          "data": "'$(base64 $B64FLAGS $VIDEO_PATH)'",
          "mime_type": "video/mp4"
        }
      ]
    }' 2> /dev/null

ইউটিউব ইউআরএল পাস করুন

আপনি নিম্নলিখিত উপায়ে আপনার অনুরোধের অংশ হিসাবে সরাসরি জেমিনি এপিআই-তে ইউটিউব ইউআরএল পাঠাতে পারেন:

পাইথন

from google import genai

client = genai.Client()
interaction = client.interactions.create(
    model='gemini-3-flash-preview',
    input=[
        {"type": "text", "text": "Please summarize the video in 3 sentences."},
        {
            "type": "video",
            "uri": "https://www.youtube.com/watch?v=9hE5-98ZeCg"
        }
    ]
)
print(interaction.steps[-1].content[0].text)

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

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: "gemini-3-flash-preview",
  input: [
    { type: "text", text: "Please summarize the video in 3 sentences." },
    {
      type: "video",
      uri: "https://www.youtube.com/watch?v=9hE5-98ZeCg",
    }
  ],
});
console.log(interaction.steps.at(-1).content[0].text);

বিশ্রাম

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-3-flash-preview",
      "input": [
        {"type": "text", "text": "Please summarize the video in 3 sentences."},
        {
          "type": "video",
          "uri": "https://www.youtube.com/watch?v=9hE5-98ZeCg"
        }
      ]
    }' 2> /dev/null

সীমাবদ্ধতা:

  • ফ্রি টিয়ারের জন্য, আপনি প্রতিদিন ৮ ঘণ্টার বেশি ইউটিউব ভিডিও আপলোড করতে পারবেন না।
  • পেইড টায়ারের ক্ষেত্রে ভিডিওর দৈর্ঘ্যের কোনো সীমা নেই।
  • জেমিনি ২.৫-এর পূর্ববর্তী মডেলগুলোর জন্য, আপনি প্রতি অনুরোধে কেবল ১টি ভিডিও আপলোড করতে পারবেন। জেমিনি ২.৫ এবং পরবর্তী মডেলগুলোর জন্য, আপনি প্রতি অনুরোধে সর্বোচ্চ ১০টি ভিডিও আপলোড করতে পারবেন।
  • আপনি শুধুমাত্র পাবলিক ভিডিও আপলোড করতে পারবেন (প্রাইভেট বা আনলিস্টেড ভিডিও নয়)।

বিষয়বস্তুতে থাকা টাইমস্ট্যাম্পগুলো দেখুন।

আপনি MM:SS ফর্ম্যাটের টাইমস্ট্যাম্প ব্যবহার করে ভিডিওর মধ্যে নির্দিষ্ট সময় সম্পর্কে প্রশ্ন করতে পারেন।

পাইথন

prompt = "What are the examples given at 00:05 and 00:10 supposed to show us?"

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

const prompt = "What are the examples given at 00:05 and 00:10 supposed to show us?";

বিশ্রাম

PROMPT="What are the examples given at 00:05 and 00:10 supposed to show us?"

ভিডিও থেকে বিস্তারিত তথ্য বের করুন।

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

ভিজ্যুয়াল বর্ণনার জন্য, মডেলটি প্রতি সেকেন্ডে ১ ফ্রেম (FPS) হারে ভিডিও স্যাম্পল করে। এই ডিফল্ট স্যাম্পলিং রেট বেশিরভাগ কন্টেন্টের জন্য ভালোভাবে কাজ করে, কিন্তু মনে রাখবেন যে দ্রুত গতি বা দ্রুত দৃশ্য পরিবর্তনের ভিডিওতে এটি ডিটেইলস বাদ দিতে পারে। এই ধরনের হাই-মোশন কন্টেন্টের জন্য, একটি কাস্টম ফ্রেম রেট সেট করার কথা বিবেচনা করুন।

পাইথন

prompt = "Describe the key events in this video, providing both audio and visual details. Include timestamps for salient moments."

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

const prompt = "Describe the key events in this video, providing both audio and visual details. Include timestamps for salient moments.";

বিশ্রাম

PROMPT="Describe the key events in this video, providing both audio and visual details. Include timestamps for salient moments."

সমর্থিত ভিডিও ফরম্যাট

জেমিনি নিম্নলিখিত ভিডিও ফরম্যাট MIME প্রকারগুলি সমর্থন করে:

  • video/mp4
  • video/mpeg
  • video/mov
  • video/avi
  • video/x-flv
  • video/mpg
  • video/webm
  • video/wmv
  • video/3gpp

ভিডিও সম্পর্কিত প্রযুক্তিগত বিবরণ

  • সমর্থিত মডেল ও প্রেক্ষাপট : সকল জেমিনি ভিডিও ডেটা প্রসেস করতে পারে।
    • ১ মেগাবাইট কনটেক্সট উইন্ডোযুক্ত মডেলগুলো ডিফল্ট মিডিয়া রেজোলিউশনে ১ ঘণ্টা পর্যন্ত অথবা লো মিডিয়া রেজোলিউশনে ৩ ঘণ্টা পর্যন্ত দীর্ঘ ভিডিও প্রসেস করতে পারে।
  • ফাইল এপিআই প্রসেসিং : ফাইল এপিআই ব্যবহার করার সময়, ভিডিও প্রতি সেকেন্ডে ১ ফ্রেমে (FPS) সংরক্ষণ করা হয় এবং অডিও ১ Kbps (সিঙ্গেল চ্যানেল) হারে প্রসেস করা হয়। প্রতি সেকেন্ডে টাইমস্ট্যাম্প যোগ করা হয়।
    • অনুমানের উন্নতির জন্য ভবিষ্যতে এই হারগুলো পরিবর্তন হতে পারে।
  • টোকেন গণনা : ভিডিওর প্রতিটি সেকেন্ডকে নিম্নোক্তভাবে টোকেনাইজ করা হয়:
    • প্রতিটি ফ্রেম (১ এফপিএস হারে নমুনা করা):
      • media_resolution low-তে সেট করা হলে, প্রতি ফ্রেমে ৬৬টি টোকেন করে ফ্রেমগুলোকে টোকেনাইজ করা হয়।
      • অন্যথায়, প্রতিটি ফ্রেমে ২৫৮টি টোকেন করে টোকেনাইজ করা হয়।
    • অডিও: প্রতি সেকেন্ডে ৩২টি টোকেন।
    • মেটাডেটাও অন্তর্ভুক্ত করা হয়েছে।
    • মোট: ডিফল্ট মিডিয়া রেজোলিউশনে প্রতি সেকেন্ড ভিডিওর জন্য প্রায় ৩০০ টোকেন, অথবা লো মিডিয়া রেজোলিউশনে প্রতি সেকেন্ড ভিডিওর জন্য ১০০ টোকেন।
  • মিডিয়াল রেজোলিউশন : জেমিনি ৩, media_resolution প্যারামিটারের মাধ্যমে মাল্টিমোডাল ভিশন প্রসেসিং-এর উপর সূক্ষ্ম নিয়ন্ত্রণ নিয়ে এসেছে। media_resolution প্যারামিটারটি প্রতিটি ইনপুট ইমেজ বা ভিডিও ফ্রেমের জন্য বরাদ্দকৃত টোকেনের সর্বোচ্চ সংখ্যা নির্ধারণ করে। উচ্চতর রেজোলিউশন সূক্ষ্ম লেখা পড়া বা ছোট ছোট বিবরণ শনাক্ত করার ক্ষেত্রে মডেলের সক্ষমতা বাড়ায়, কিন্তু এর ফলে টোকেনের ব্যবহার এবং ল্যাটেন্সি বৃদ্ধি পায়।

    গণনার জন্য, টোকেন নির্দেশিকা দেখুন।

  • টাইমস্ট্যাম্প ফরম্যাট : আপনার প্রম্পটে ভিডিওর নির্দিষ্ট মুহূর্ত উল্লেখ করার সময়, MM:SS ফরম্যাট ব্যবহার করুন (যেমন, ১ মিনিট ১৫ সেকেন্ডের জন্য 01:15 )।

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

    • সর্বোত্তম ফলাফলের জন্য, প্রতিটি অনুরোধের জন্য কেবল একটি ভিডিও ব্যবহার করুন।
    • যদি টেক্সট এবং একটি ভিডিও একত্রিত করেন, তাহলে input অ্যারেতে ভিডিও অংশের পরে টেক্সট প্রম্পটটি রাখুন।
    • মনে রাখবেন যে, ১ এফপিএস স্যাম্পলিং রেটের কারণে দ্রুতগতির অ্যাকশন সিকোয়েন্সগুলিতে ডিটেইল হারিয়ে যেতে পারে। প্রয়োজনে এই ধরনের ক্লিপের গতি কমিয়ে আনার কথা বিবেচনা করতে পারেন।

এরপর কী?

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

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