Вы можете попросить модель Gemini проанализировать видеофайлы, которые вы предоставили встроенным способом (в кодировке Base64) или через URL. Если вы используете Firebase AI Logic, вы можете отправить запрос прямо из приложения.
С помощью этой функции можно:
- Создание субтитров и ответы на вопросы о видео
- Как анализировать определенные сегменты видео с помощью временных меток
- расшифровывать видеоконтент, обрабатывая аудиодорожку и видеокадры;
- описывать, сегментировать и извлекать информацию из видео, включая аудиодорожку и визуальные кадры;
В этом руководстве рассказывается о том, как генерировать текст на основе видео, но вы также можете генерировать изображения на основе видео.
Перейти к примерам кода Перейти к коду для потоковых ответов
|
Другие руководства по работе с видео Как генерировать структурированный вывод Как вести многоходовые диалоги Как генерировать изображения |
Подготовка
|
Нажмите на поставщика Gemini API, чтобы посмотреть контент и код, относящиеся к нему. |
Если вы ещё этого не сделали, ознакомьтесь с руководством по началу работы. В нем рассказывается, как настроить проект Firebase, подключить к нему приложение, добавить SDK, инициализировать бэкенд-службу для выбранного поставщика Gemini API и создать экземпляр GenerativeModel.
Для тестирования и доработки запросов рекомендуем использовать Google AI Studio.
Модели, поддерживающие эту функцию
В этом руководстве рассказывается о том, как генерировать текст на основе видео, и оно применимо к следующим моделям Gemini:
gemini-3.1-pro-previewgemini-3.8-flash(а также более старые версииgemini-3.7-flash,gemini-3.6-flashиgemini-3.5-flash)gemini-3.5-flash-lite(и более ранние версии, напримерgemini-3.1-flash-lite)
Модели общего назначения Gemini 2.5 поддерживают эту функцию, но все они устарели.
Создание текста на основе видеофайлов (с кодировкой Base64)
|
Прежде чем использовать этот пример, выполните инструкции из раздела Подготовка к работе, чтобы настроить проект и приложение. В этом разделе также есть кнопка для выбранного вами поставщика Gemini API. Нажмите ее, чтобы на этой странице отображался контент, относящийся к этому поставщику. |
Вы можете попросить модель Gemini сгенерировать текст, предоставив ей текстовый запрос и видео. Для каждого входного файла укажите mimeType и сам файл. Требования и рекомендации к входным файлам приведены ниже на этой странице.
Swift
Вы можете вызвать функцию generateContent(), чтобы сгенерировать текст на основе мультимодальных входных данных, состоящих из текста и видеофайлов.
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case.
let model = ai.generativeModel(modelName: "gemini-3.8-flash")
// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")
Kotlin
Вы можете вызвать функцию generateContent(), чтобы сгенерировать текст на основе мультимодальных входных данных, состоящих из текста и видеофайлов.
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash")
val contentResolver = applicationContext.contentResolver
contentResolver.openInputStream(videoUri).use { stream ->
stream?.let {
val bytes = stream.readBytes()
// Provide a prompt that includes the video specified above and text
val prompt = content {
inlineData(bytes, "video/mp4")
text("What is in the video?")
}
// To generate text output, call generateContent with the prompt
val response = model.generateContent(prompt)
Log.d(TAG, response.text ?: "")
}
}
Java
Вы можете вызвать функцию generateContent(), чтобы сгенерировать текст на основе мультимодальных входных данных, состоящих из текста и видеофайлов.
ListenableFuture.
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-3.8-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
ContentResolver resolver = getApplicationContext().getContentResolver();
try (InputStream stream = resolver.openInputStream(videoUri)) {
File videoFile = new File(new URI(videoUri.toString()));
int videoSize = (int) videoFile.length();
byte[] videoBytes = new byte[videoSize];
if (stream != null) {
stream.read(videoBytes, 0, videoBytes.length);
stream.close();
// Provide a prompt that includes the video specified above and text
Content prompt = new Content.Builder()
.addInlineData(videoBytes, "video/mp4")
.addText("What is in the video?")
.build();
// To generate text output, call generateContent with the prompt
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
}
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
Web
Вы можете вызвать функцию generateContent(), чтобы сгенерировать текст на основе мультимодальных входных данных, состоящих из текста и видеофайлов.
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer): Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance with a model that supports your use case.
const model = getGenerativeModel(ai, { model: "gemini-3.8-flash" });
// Converts a File object to a Part object.
async function fileToGenerativePart(file) {
const base64EncodedDataPromise = new Promise((resolve) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result.split(',')[1]);
reader.readAsDataURL(file);
});
return {
inlineData: { data: await base64EncodedDataPromise, mimeType: file.type },
};
}
async function run() {
// Provide a text prompt to include with the video
const prompt = "What do you see?";
const fileInputEl = document.querySelector("input[type=file]");
const videoPart = await fileToGenerativePart(fileInputEl.files[0]);
// To generate text output, call generateContent with the text and video
const result = await model.generateContent([prompt, videoPart]);
const response = result.response;
const text = response.text();
console.log(text);
}
run();
Dart
Вы можете вызвать функцию generateContent(), чтобы сгенерировать текст на основе мультимодальных входных данных, таких как текст и видеофайлы.
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-3.8-flash');
// Provide a text prompt to include with the video
final prompt = TextPart("What's in the video?");
// Prepare video for input
final video = await File('video0.mp4').readAsBytes();
// Provide the video as `Data` with the appropriate mimetype
final videoPart = InlineDataPart('video/mp4', video);
// To generate text output, call generateContent with the text and images
final response = await model.generateContent([
Content.multi([prompt, ...videoPart])
]);
print(response.text);
Unity
Вы можете вызвать функцию GenerateContentAsync(), чтобы сгенерировать текст на основе мультимодальных входных данных, состоящих из текста и видеофайлов.
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service.
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports your use case.
var model = ai.GetGenerativeModel(modelName: "gemini-3.8-flash");
// Provide the video as `data` with the appropriate MIME type.
var video = ModelContent.InlineData("video/mp4",
System.IO.File.ReadAllBytes(System.IO.Path.Combine(
UnityEngine.Application.streamingAssetsPath, "yourVideo.mp4")));
// Provide a text prompt to include with the video
var prompt = ModelContent.Text("What is in the video?");
// To generate text output, call GenerateContentAsync with the text and video
var response = await model.GenerateContentAsync(new [] { video, prompt });
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
Узнайте, как выбрать модель для вашего приложения и варианта использования.
Потоковая передача ответа
|
Прежде чем использовать этот пример, выполните инструкции из раздела Подготовка к работе, чтобы настроить проект и приложение. В этом разделе также есть кнопка для выбранного вами поставщика Gemini API. Нажмите ее, чтобы на этой странице отображался контент, относящийся к этому поставщику. |
Чтобы ускорить взаимодействие, не ждите, пока модель сгенерирует весь результат, а используйте потоковую передачу частичных результатов.
Чтобы передать ответ потоком, вызовите функцию generateContentStream.
Требования и рекомендации к входным видеофайлам
Обратите внимание, что файл, предоставленный в виде встроенных данных, при передаче кодируется в формате Base64, что увеличивает размер запроса. Если запрос слишком большой, вы получите ошибку HTTP 413.
Подробную информацию о поддерживаемых входных файлах и требованиях можно найти на странице "Поддерживаемые входные файлы и требования".
- Разные способы предоставления файла в запросе (встроенный или с использованием URL или URI файла).
- Требования к видеофайлам и рекомендации
Поддерживаемые MIME-типы видео
Gemini мультимодальные модели поддерживают следующие MIME-типы видео:
- FLV –
video/x-flv - MOV –
video/quicktime - MPEG –
video/mpeg - MPEGPS –
video/mpegps - MPG:
video/mpg - MP4 –
video/mp4 - WEBM –
video/webm - WMV –
video/wmv - 3GPP:
video/3gpp
Ограничения на запрос
Максимальное количество файлов в одном запросе: 10 видеофайлов.
Что ещё ты умеешь делать?
- Узнайте, как подсчитывать токены перед отправкой длинных запросов модели.
- Настройте Cloud Storage for Firebase, чтобы добавлять в мультимодальные запросы большие файлы и использовать более удобное решение для предоставления файлов в запросах. Файлы могут содержать изображения, PDF-документы, видео и аудио.
-
Начните готовиться к публикации рабочей версии (см. контрольный список):
- Принудительно используйте Firebase App Check как можно раньше, чтобы защитить Gemini API от неправомерного использования неавторизованными клиентами.
- Используйте Firebase Remote Config или шаблоны запросов на сервере для изменения конфигураций функции ИИ (например, названия модели) по запросу без выпуска новой версии приложения.
Попробуйте другие функции
- Создавайте многоходовые диалоги (чат).
- Создавать текст на основе текстовых запросов.
- Создание структурированных выходных данных (например, в формате JSON) на основе текстовых и мультимодальных запросов.
- Создавать и редактировать изображения по текстовым и мультимодальным запросам.
- Генерировать речь (одного или нескольких говорящих) с помощью моделей Gemini.
-
Используйте инструменты (например, вызов функций
и обоснование с помощью
Google Search илиGoogle Maps ), чтобы подключить модель Gemini к другим частям приложения и внешним системам и информации.
Как управлять созданием контента
- Изучите принципы создания запросов, в том числе рекомендации, стратегии и примеры.
- Настройте параметры модели, например максимальное количество выходных токенов, вероятность повторения выходных токенов и т. д.
- Настройки безопасности позволяют регулировать вероятность получения ответов, которые могут быть восприняты как вредоносные.
Подробнее о поддерживаемых моделях…
Узнайте больше о моделях, доступных для разных вариантов использования, а также об их квотах и тарифах.Оставить отзыв о работе Firebase AI Logic