Kuptimi i videos

Modelet e Gemini mund të përpunojnë video, duke mundësuar shumë raste të përdorimit të zhvilluesve kufitarë që do të kishin kërkuar historikisht modele specifike të domenit. Disa nga aftësitë e vizionit të Binjakëve përfshijnë aftësinë për të:

  • Përshkruani, segmentoni dhe nxirrni informacione nga videot deri në 90 minuta
  • Përgjigjuni pyetjeve në lidhje me përmbajtjen e videos
  • Referojuni vulave kohore specifike brenda një videoje

Binjakët u ndërtuan për të qenë multimodal nga themeli dhe ne vazhdojmë të shtyjmë kufirin e asaj që është e mundur. Ky udhëzues tregon se si të përdorni Gemini API për të gjeneruar përgjigje teksti bazuar në hyrjet e videos.

Para se të filloni

Përpara se të telefononi Gemini API, sigurohuni që keni të instaluar SDK-në tuaj të zgjedhur dhe një çelës Gemini API të konfiguruar dhe gati për t'u përdorur.

Hyrja e videos

Ju mund të ofroni video si hyrje për Binjakët në mënyrat e mëposhtme:

  • Ngarkoni një skedar video duke përdorur API-në e skedarit përpara se të bëni një kërkesë për generateContent . Përdoreni këtë metodë për skedarë më të mëdhenj se 20 MB, video më të gjata se afërsisht 1 minutë ose kur dëshironi të ripërdorni skedarin për kërkesa të shumta.
  • Kaloni të dhënat e brendshme të videos me kërkesën për generateContent . Përdoreni këtë metodë për skedarë më të vegjël (<20 MB) dhe kohëzgjatje më të shkurtër.
  • Përfshi një URL të YouTube direkt në kërkesë.

Ngarko një skedar video

Ju mund të përdorni Files API për të ngarkuar një skedar video. Përdorni gjithmonë API-në e skedarëve kur madhësia totale e kërkesës (përfshirë skedarin, kërkesën për tekst, udhëzimet e sistemit, etj.) është më e madhe se 20 MB, kohëzgjatja e videos është e rëndësishme ose nëse keni ndërmend të përdorni të njëjtën video në disa kërkesa.

File API pranon direkt formatet e skedarëve video. Ky shembull përdor filmin e shkurtër të NASA-s "Njolla e Kuqe e Madhe e Jupiterit tkurret dhe rritet" . Kredia: Goddard Space Flight Center (GSFC)/David Ladd (2018).

"Njolla e kuqe e madhe e Jupiterit zvogëlohet dhe rritet" është në domenin publik dhe nuk tregon njerëz të identifikueshëm. ( Udhëzimet e përdorimit të imazhit dhe mediave të NASA-s. )

Kodi i mëposhtëm shkarkon mostrën e videos, e ngarkon atë duke përdorur API-në e skedarit, pret që të përpunohet dhe më pas përdor referencën e skedarit në një kërkesë të generateContent .

Python

from google import genai

client = genai.Client(api_key="GOOGLE_API_KEY")

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

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=[myfile, "Summarize this video. Then create a quiz with an answer key based on the information in this video."]
)

print(response.text)

JavaScript

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

const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });

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

  const response = await ai.models.generateContent({
    model: "gemini-2.0-flash",
    contents: createUserContent([
      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(response.text);
}

await main();

Shkoni

file, err := client.UploadFileFromPath(ctx, "path/to/sample.mp4", nil)
if err != nil {
    log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

model := client.GenerativeModel("gemini-2.0-flash")
resp, err := model.GenerateContent(ctx,
    genai.FileData{URI: file.URI},
    genai.Text("Summarize this video. Then create a quiz with an answer key based on the information in this video."))
if err != nil {
    log.Fatal(err)
}

printResponse(resp)

PUSHIMI

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?key=${GOOGLE_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}"

# --- 3. Generate content using the uploaded video file ---
echo "Generating content from video..."
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"file_data":{"mime_type": "'"${MIME_TYPE}"'", "file_uri": "'"${file_uri}"'"}},
          {"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 -r ".candidates[].content.parts[].text" response.json

Për të mësuar më shumë rreth punës me skedarët e medias, shihni Files API .

Kaloni të dhënat e videos në linjë

Në vend që të ngarkoni një skedar video duke përdorur API-në e skedarit, mund të kaloni video më të vogla drejtpërdrejt në kërkesën për të generateContent . Kjo është e përshtatshme për video më të shkurtra nën madhësinë totale të kërkesës 20 MB.

Këtu është një shembull i ofrimit të të dhënave video inline:

Python

# Only for videos of size <20Mb
video_file_name = "/path/to/your/video.mp4"
video_bytes = open(video_file_name, 'rb').read()

response = client.models.generate_content(
    model='models/gemini-2.0-flash',
    contents=types.Content(
        parts=[
            types.Part(
                inline_data=types.Blob(data=video_bytes, mime_type='video/mp4')
            ),
            types.Part(text='Please summarize the video in 3 sentences.')
        ]
    )
)

JavaScript

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

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

const contents = [
  {
    inlineData: {
      mimeType: "video/mp4",
      data: base64VideoFile,
    },
  },
  { text: "Please summarize the video in 3 sentences." }
];

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: contents,
});
console.log(response.text);

PUSHIMI

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

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
            {
              "inline_data": {
                "mime_type":"video/mp4",
                "data": "'$(base64 $B64FLAGS $VIDEO_PATH)'"
              }
            },
            {"text": "Please summarize the video in 3 sentences."}
        ]
      }]
    }' 2> /dev/null

Përfshi një URL të YouTube

Gemini API dhe AI ​​Studio mbështesin URL-të e YouTube si Part e të dhënave të skedarëve. Mund të përfshini një URL të YouTube me një kërkesë që i kërkon modelit të përmbledhë, përkthejë ose të ndërveprojë ndryshe me përmbajtjen e videos.

Kufizimet:

  • Nuk mund të ngarkoni më shumë se 8 orë video në YouTube në ditë.
  • Mund të ngarkoni vetëm 1 video për çdo kërkesë.
  • Mund të ngarkoni vetëm video publike (jo video private ose të palistuara).

Shembulli i mëposhtëm tregon se si të përfshini një URL në YouTube me një kërkesë:

Python

response = client.models.generate_content(
    model='models/gemini-2.0-flash',
    contents=types.Content(
        parts=[
            types.Part(
                file_data=types.FileData(file_uri='https://www.youtube.com/watch?v=9hE5-98ZeCg')
            ),
            types.Part(text='Please summarize the video in 3 sentences.')
        ]
    )
)

JavaScript

import { GoogleGenerativeAI } from "@google/generative-ai";

const genAI = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-pro" });
const result = await model.generateContent([
  "Please summarize the video in 3 sentences.",
  {
    fileData: {
      fileUri: "https://www.youtube.com/watch?v=9hE5-98ZeCg",
    },
  },
]);
console.log(result.response.text());

Shkoni

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GOOGLE_API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-2.0-flash")
resp, err := model.GenerateContent(ctx,
  genai.FileData{URI: "https://www.youtube.com/watch?v=9hE5-98ZeCg"},
  genai.Text("Please summarize the video in 3 sentences."))
if err != nil {
  log.Fatal(err)
}

// Handle the response of generated text.
for _, c := range resp.Candidates {
  if c.Content != nil {
    fmt.Println(*c.Content)
  }
}

PUSHIMI

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
            {"text": "Please summarize the video in 3 sentences."},
            {
              "file_data": {
                "file_uri": "https://www.youtube.com/watch?v=9hE5-98ZeCg"
              }
            }
        ]
      }]
    }' 2> /dev/null

Referojuni vulave kohore në përmbajtje

Ju mund të bëni pyetje rreth pikave specifike në kohë brenda videos duke përdorur vulat kohore të formës MM:SS .

Python

prompt = "What are the examples given at 00:05 and 00:10 supposed to show us?" # Adjusted timestamps for the NASA video

JavaScript

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

Shkoni

    prompt := []genai.Part{
        genai.FileData{URI: currentVideoFile.URI, MIMEType: currentVideoFile.MIMEType},
         // Adjusted timestamps for the NASA video
        genai.Text("What are the examples given at 00:05 and " +
            "00:10 supposed to show us?"),
    }

PUSHIMI

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

Transkriptoni videon dhe jepni përshkrime vizuale

Modelet e Gemini mund të transkriptojnë dhe ofrojnë përshkrime vizuale të përmbajtjes video duke përpunuar si pjesën audio ashtu edhe kornizat vizuale. Për përshkrime vizuale, modeli merr videon me një shpejtësi prej 1 kornizë për sekondë . Kjo normë kampionimi mund të ndikojë në nivelin e detajeve në përshkrime, veçanërisht për videot me pamje vizuale që ndryshojnë me shpejtësi.

Python

prompt = "Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions."

JavaScript

const prompt = "Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions.";

Shkoni

    prompt := []genai.Part{
        genai.FileData{URI: currentVideoFile.URI, MIMEType: currentVideoFile.MIMEType},
        genai.Text("Transcribe the audio from this video, giving timestamps for salient events in the video. Also " +
            "provide visual descriptions."),
    }

PUSHIMI

PROMPT="Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions."

Formatet e mbështetura të videos

Gemini mbështet llojet e mëposhtme të formatit të videos MIME:

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

Detaje teknike rreth videove

  • Modelet dhe konteksti i mbështetur : Të gjitha modelet Gemini 2.0 dhe 2.5 mund të përpunojnë të dhëna video.
    • Modelet me një dritare konteksti 2M mund të përpunojnë video deri në 2 orë të gjata, ndërsa modelet me një dritare konteksti 1M mund të përpunojnë video deri në 1 orë.
  • Përpunimi i API-së së skedarit : Kur përdorni API-në e skedarit, videot ekzaminohen me 1 kornizë për sekondë (FPS) dhe audio përpunohet me 1 Kbps (kanal i vetëm). Vula kohore shtohen çdo sekondë.
    • Këto norma janë subjekt i ndryshimit në të ardhmen për përmirësime në përfundime.
  • Llogaritja e tokenit : Çdo sekondë e videos shënohet si më poshtë:
    • Korniza individuale (kampionuar me 1 FPS): 258 argumente për kornizë.
    • Audio: 32 shenja në sekondë.
    • Përfshihen gjithashtu metadatat.
    • Gjithsej: Përafërsisht 300 argumente për sekondë të videos.
  • Formati i vulës kohore : Kur i referoheni momenteve specifike në një video brenda kërkesës suaj, përdorni formatin MM:SS (p.sh., 01:15 për 1 minutë e 15 sekonda).
  • Praktikat më të mira :
    • Përdorni vetëm një video për çdo kërkesë të menjëhershme për rezultate optimale.
    • Nëse kombinoni tekst dhe një video të vetme, vendosni kërkesën e tekstit pas pjesës së videos në grupin contents .
    • Kini parasysh se sekuencat e veprimit të shpejtë mund të humbasin detajet për shkak të shkallës së kampionimit 1 FPS. Konsideroni ngadalësimin e klipeve të tilla nëse është e nevojshme.

Çfarë është më pas

Ky udhëzues tregon se si të ngarkoni skedarë video dhe të krijoni dalje teksti nga hyrjet video. Për të mësuar më shumë, shikoni burimet e mëposhtme:

  • Udhëzimet e sistemit : Udhëzimet e sistemit ju lejojnë të drejtoni sjelljen e modelit bazuar në nevojat tuaja specifike dhe rastet e përdorimit.
  • Files API : Mësoni më shumë rreth ngarkimit dhe menaxhimit të skedarëve për përdorim me Gemini.
  • Strategjitë e nxitjes së skedarëve : Gemini API mbështet nxitjen me të dhëna teksti, imazhi, audio dhe video, të njohura gjithashtu si nxitje multimodale.
  • Udhëzime për sigurinë : Ndonjëherë modelet gjeneruese të AI prodhojnë rezultate të papritura, të tilla si rezultate që janë të pasakta, të njëanshme ose fyese. Pas-përpunimi dhe vlerësimi njerëzor janë thelbësore për të kufizuar rrezikun e dëmtimit nga rezultate të tilla.