Понимание видео
Чтобы узнать больше о создании видео, ознакомьтесь с руководством Veo .
Модели Gemini способны обрабатывать видео, что открывает множество новых возможностей для разработчиков, которые ранее требовали использования специализированных моделей. К числу возможностей Gemini в области компьютерного зрения относятся: описание, сегментация и извлечение информации из видео, ответы на вопросы о содержании видео и указание на конкретные временные метки в видео.
Вы можете предоставлять видеоматериалы для Gemini следующими способами:
| Метод ввода | Максимальный размер | Рекомендуемый вариант использования |
|---|---|---|
| Файловый API | 20 ГБ (платно) / 2 ГБ (бесплатно) | Большие файлы (100 МБ и более), длинные видеоролики (10 мин и более), файлы для многократного использования. |
| Регистрация в облачном хранилище | 2 ГБ (на файл, без ограничений по объему хранилища) | Большие файлы (100 МБ и более), длинные видеоролики (10 мин и более), файлы, сохраняемые и используемые повторно. |
| Встроенные данные | < 100 МБ | Небольшие файлы (<100 МБ), короткая продолжительность (<1 мин), одноразовые входные данные. |
| URL-адреса YouTube | Н/Д | Общедоступные видео на YouTube. |
Примечание: API для работы с файлами рекомендуется использовать в большинстве случаев, особенно для файлов размером более 100 МБ или когда необходимо повторно использовать файл в нескольких запросах.
Чтобы узнать о других методах ввода файлов, таких как использование внешних URL-адресов или файлов, хранящихся в Google Cloud, см. руководство по методам ввода файлов .
Загрузите видеофайл
Приведенный ниже код загружает образец видео, выгружает его через Files API , ожидает обработки, а затем использует ссылку на загруженный файл для составления краткого описания видео.
Python
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)
JavaScript
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, если общий размер запроса (включая файл, текстовое сообщение, системные инструкции и т. д.) превышает 20 МБ, длительность видео значительна или если вы планируете использовать одно и то же видео в нескольких сообщениях. File API принимает видеофайлы напрямую.
Чтобы узнать больше о работе с медиафайлами, см. раздел «API файлов» .
Передача видеоданных в режиме реального времени.
Вместо загрузки видеофайла с помощью File API вы можете передавать в запросе видео меньшего размера. Это подходит для коротких видеороликов общим размером менее 20 МБ.
Вот пример предоставления видеоданных непосредственно в видеофайле:
Python
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)
JavaScript
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
Передайте URL-адреса YouTube
Вы можете передавать URL-адреса YouTube непосредственно в API Gemini в рамках вашего запроса следующим образом:
Python
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)
JavaScript
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
Ограничения:
- В бесплатном тарифе вы не можете загружать на YouTube более 8 часов видео в день.
- Для платного тарифа ограничений по длине видео нет.
- Для моделей, выпущенных до Gemini 2.5, можно загрузить только 1 видео за один запрос. Для моделей Gemini 2.5 и более поздних версий можно загрузить максимум 10 видео за один запрос.
- Вы можете загружать только общедоступные видео (не частные или скрытые видео).
Обратитесь к временным меткам в содержимом.
Вы можете задавать вопросы о конкретных моментах видео, используя временные метки в формате MM:SS .
Python
prompt = "What are the examples given at 00:05 and 00:10 supposed to show us?"
JavaScript
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?"
Извлеките подробную информацию из видео.
Модели Gemini обладают мощными возможностями для понимания видеоконтента, обрабатывая информацию как из аудио-, так и из видеопотоков . Это позволяет извлекать богатый набор деталей, включая создание описаний происходящего в видео и ответы на вопросы о его содержании.
Для визуального описания модель считывает видео с частотой 1 кадр в секунду (FPS). Эта частота дискретизации по умолчанию хорошо подходит для большинства материалов, но следует отметить, что она может упускать детали в видео с быстрым движением или быстрой сменой сцен. Для такого динамичного контента рекомендуется установить пользовательскую частоту кадров .
Python
prompt = "Describe the key events in this video, providing both audio and visual details. Include timestamps for salient moments."
JavaScript
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."
Поддерживаемые форматы видео
Gemini поддерживает следующие MIME-типы видеоформатов:
-
video/mp4 -
video/mpeg -
video/mov -
video/avi -
video/x-flv -
video/mpg -
video/webm -
video/wmv -
video/3gpp
Технические подробности о видео
- Поддерживаемые модели и контекст : Все устройства Gemini могут обрабатывать видеоданные.
- Модели с контекстным окном размером 1 Мб могут обрабатывать видео продолжительностью до 1 часа при стандартном разрешении или до 3 часов при низком разрешении.
- Обработка через File API : При использовании File API видеофайлы сохраняются со скоростью 1 кадр в секунду (FPS), а аудио обрабатывается со скоростью 1 Кбит/с (один канал). Временные метки добавляются каждую секунду.
- В будущем эти ставки могут измениться в связи с улучшением точности выводов.
- Расчет токенов : Каждая секунда видео токенизируется следующим образом:
- Отдельные кадры (с частотой 1 кадр в секунду):
- Если
media_resolutionустановлен на low, кадры токенизируются по 66 токенов на кадр. - В противном случае, кадры токенизируются по 258 токенов на кадр.
- Если
- Аудио: 32 токена в секунду.
- Также включены метаданные.
- Итого: приблизительно 300 токенов в секунду видео при стандартном разрешении или 100 токенов в секунду видео при низком разрешении.
- Отдельные кадры (с частотой 1 кадр в секунду):
Среднее разрешение : Gemini 3 обеспечивает детальный контроль над обработкой мультимодального зрения с помощью параметра
media_resolution. Параметрmedia_resolutionопределяет максимальное количество токенов, выделяемых на каждое входное изображение или видеокадр. Более высокое разрешение улучшает способность модели считывать мелкий текст или идентифицировать мелкие детали, но увеличивает использование токенов и задержку.Расчеты см. в руководстве по токенам .
Формат временной метки : При указании конкретных моментов видео в вашем задании используйте формат
MM:SS(например,01:15для 1 минуты и 15 секунд).Передовые методы :
- Для достижения оптимальных результатов используйте только одно видео на каждый запрос.
- При объединении текста и одного видеофайла разместите текстовую подсказку после видеофрагмента во
inputмассиве. - Учтите, что в динамичных сценах из-за частоты дискретизации 1 кадр в секунду может наблюдаться потеря детализации. При необходимости рассмотрите возможность замедления таких видеороликов.
Что дальше?
В этом руководстве показано, как загружать видеофайлы и генерировать текстовый вывод на основе видеовходов. Для получения дополнительной информации см. следующие ресурсы:
- Системные инструкции : Системные инструкции позволяют управлять поведением модели в соответствии с вашими конкретными потребностями и сценариями использования.
- API для работы с файлами : Узнайте больше о загрузке и управлении файлами для использования с Gemini.
- Стратегии запроса файлов : API Gemini поддерживает запрос файлов с использованием текста, изображений, аудио и видеоданных, также известный как мультимодальный запрос.
- Рекомендации по безопасности : Иногда модели генеративного ИИ выдают неожиданные результаты, например, неточные, предвзятые или оскорбительные. Постобработка и оценка человеком необходимы для минимизации риска причинения вреда от таких результатов.