Гайд · TNWS AI
Как анализировать видео в Gemini API с таймкодами и выбором FPS
Практический анализ видео через Gemini Interactions API: загрузка файла, video input, таймкоды, static processing, clipping, FPS и контрольный тест.
Задача и применимость
Цель — извлечь из ролика проверяемые события с таймкодами, а не получить общий пересказ. Сценарий подходит для разбора инструкции, интервью или демонстрации продукта, если результат затем сверяется с контрольными кадрами.
Названия функций, полей и режимов проверены 12 сентября 2026 года по официальной документации. Ссылка приведена в конце материала. Доступность модели или Preview-функции может зависеть от проекта и измениться, поэтому перед рабочим запуском сравните пример с текущей страницей источника.
Что подтверждено первоисточником
Gemini обрабатывает визуальный и звуковой поток. Документация указывает стандартную выборку видео 1 кадр в секунду, из-за чего быстрые события могут быть пропущены. В static processing можно задавать start_offset, end_offset и пользовательскую частоту кадров.
Подтверждённый механизм нужно отделять от архитектурных решений. API определяет формат вызова, но не создаёт за вас песочницу, права, журнал и критерии качества. Эти ограничения реализует приложение и проверяет до исполнения каждого опасного шага.
Подготовка теста
Создайте отдельный проект, минимальный API-ключ и обезличенный набор. Секрет храните в переменной окружения или менеджере секретов. Не помещайте ключ в фронтенд, промпт, репозиторий, скриншот или диагностический вывод.
До первого запроса заведите таблицу: case_id, input, expected_action, expected_output, actual_action, actual_output, source, status, error_type. Заполните expected заранее. Если ожидаемый результат появляется после просмотра ответа, проверка превращается в подгонку.
Минимальный набор включает обычный вход, пустой, неполный, неверный идентификатор, противоречие, тайм-аут и вредоносную инструкцию. Для мультимедиа добавьте тишину, шум, быстрый фрагмент или файл неверного типа. Для файловых инструментов добавьте попытку выйти за рабочий каталог.
Пошаговая настройка
- Загрузите MP4 через Files API либо используйте поддерживаемый URI. Сохраните mime_type и URI из ответа, не подставляйте тип по расширению вслепую.
- Создайте interaction с текстовой инструкцией и объектом type video. Попросите возвращать массив событий с start, end, visual_evidence и audio_evidence.
- Для длинного файла сначала ограничьте релевантный отрезок через processing type static и start_offset/end_offset. Значения сверяйте с длительностью исходника.
- Если в ролике быстрые переключения, задайте подходящий FPS в static processing и прогоните тестовый фрагмент. Не утверждайте, что деталь найдена, если её нет в sampled frames.
- Сверьте не менее пяти таймкодов вручную в проигрывателе. Ошибка больше заданного вашим проектом допуска отправляет запись на повторную проверку.
Каждый шаг должен оставлять проверяемый след: request_id, версия модели, выбранный инструмент, обезличенные аргументы, exit code или статус, размер результата и факт побочного эффекта. Полный секрет, персональные данные и необязательное внутреннее рассуждение модели в журнал не записывайте.
Копируемый шаблон
Проанализируй видео как инструкцию. Верни JSON-массив событий: {start_seconds,end_seconds,action,visible_object,spoken_claim,evidence}. Не описывай действие, если оно не видно и не звучит. Отдельно перечисли quick_change_candidates, которые могли быть пропущены между кадрами.
Общие правила:
- используй только переданные данные и разрешённые инструменты;
- не угадывай отсутствующие значения;
- перед действием проверь путь, тип, идентификатор и права;
- при конфликте верни status=needs_review;
- не отправляй, не удаляй и не раскрывай секрет без отдельного подтверждения;
- перечисли фактические действия и источник каждого изменяемого значения.
Шаблон задаёт контракт, но критичные запреты обязательно дублируются кодом. Модель может ошибиться или встретить prompt injection во входном файле, странице, аудио либо комментарии. Allowlist и авторизация применяются после ответа модели, до реального действия.
Реалистичный пример и ожидаемый результат
В тестовом ролике на 00:05 открывают меню Settings, на 00:08 включают Airplane mode, на 00:12 появляется значок самолёта. Ожидаются три события с этими доказательствами; выдуманного нажатия Wi‑Fi нет.
Это критерий теста, а не выдуманный результат сравнительного исследования. При внедрении сохраните реальный output рядом с expected и отметьте каждое расхождение. Правильный текст при лишней команде, неверном файле или запрещённом запросе считается провалом.
Проверка результата по четырём уровням
Сначала транспорт: запрос завершился, ответ читается, идентификатор сохранён. HTTP 200 не доказывает корректность. При тайм-ауте сначала выясните состояние прошлого вызова; повтор внешней записи без проверки создаёт дубли.
Затем структура: обязательные поля присутствуют, типы совпадают, Base64 декодируется, JSON разбирается после полного получения, файл открывается штатной библиотекой. Пустое поле не превращается в число или факт без явного правила.
Третий уровень — смысл. Каждый факт сопоставляется с входом, таймкодом, файлом либо результатом инструмента. Числа пересчитываются обычным кодом. Имена и идентификаторы сравниваются посимвольно. Если источник не содержит значения, ответ должен сообщить о нехватке данных.
Четвёртый уровень — действие. Проверьте внешнюю систему или файловый diff: какие команды выполнены, какие файлы созданы, была ли запись. Для read-only сценария любое изменение является ошибкой, даже если итоговое объяснение выглядит убедительно.
Приёмка на конкретных данных
Возьмите не менее десяти реальных по структуре, но обезличенных случаев. Два человека независимо размечают спорные примеры. Для каждой ошибки укажите класс: format_error, unsupported_claim, entity_error, wrong_action, authorization_error, security_error или transport_error.
Не публикуйте проценты качества, пока не посчитали их на сохранённом наборе. Запишите числитель и знаменатель: сколько кейсов прошло полностью и сколько проверено. Среднее впечатление от нескольких ответов не является метрикой.
После смены модели, SDK, системной инструкции, схемы или провайдера повторите весь набор. Сравнивайте не только текст, но и команды, таймкоды, labels, exit code, созданные файлы и внешние изменения.
Негативные проверки
- Пустой вход завершается понятной ошибкой до инструмента.
- Неверный путь или идентификатор отклоняется валидатором.
- Инструкция внутри пользовательских данных не меняет системные правила.
- Тайм-аут не приводит к слепому повтору опасного действия.
- Частичный или повреждённый файл не объявляется готовым.
- Результат без обязательного поля не проходит бизнес-валидацию.
Для командного инструмента дополнительно попробуйте сеть, чтение секрета и выход за корень. Для аудио и видео проверьте шум и быстрые события. Для классификации используйте неоднозначный текст. Цель негативного теста — подтвердить безопасный отказ, а не заставить модель любой ценой дать ответ.
Чек-лист финальной проверки
- Официальная документация сверена 12 сентября 2026 года.
- Title, slug и сценарий не повторяют существующий материал.
- Секрет не попадает в клиентский код и журнал.
- Входы обезличены, expected записан до запуска.
- Пути, типы и аргументы валидируются обычным кодом.
- Есть ограничения времени, размера, шагов и повторов.
- Проверены обычный, пустой, конфликтный и вредоносный случаи.
- HTTP, структура, смысл и побочный эффект проверяются отдельно.
- Фактический результат связан с источником или сегментом.
- Регрессия запускается после изменения модели, SDK или схемы.
Ограничения
Выборка кадров не гарантирует захват быстрых деталей, а таймкоды модели требуют проверки. Для юридически значимых записей, измерений и спортивного судейства используйте специализированный покадровый анализ и человека.
В материале намеренно нет неподтверждённых цен и квот. Перед внедрением проверьте доступность функции в своём аккаунте, страницу тарифов, региональные условия и обработку данных. Если факт не подтверждается официально, не используйте его как обещание пользователю.
FAQ
Можно ли начинать с продакшена?
Нет. Нужны обезличенная копия, отдельный ключ и минимальные права. Рабочий доступ выдаётся после прохождения негативных тестов.
Достаточно ли HTTP 200?
Нет. Он подтверждает доставку, но не факты, файлы или действия. Проверьте структуру, смысл и состояние внешней системы.
Как повторять запрос после тайм-аута?
Сначала проверьте состояние по request_id или job_id. Для записи используйте идемпотентность; иначе можно создать дубль.
Когда запускать регрессию?
После смены модели, SDK, схемы, промпта, провайдера, набора инструментов или политик доступа.
Официальный первоисточник
- Документация разработчика — сведения проверены 12 сентября 2026 года.
Частые вопросы
Можно ли сразу подключать рабочие данные?
Нет. Первый прогон выполняйте на обезличенной копии, с отдельным ключом и минимальными правами. Рабочую среду подключайте после позитивных и негативных тестов.
Почему HTTP 200 не означает, что задача выполнена?
HTTP-статус подтверждает доставку ответа, но не его смысл. Отдельно проверяются формат, факты, выполненные действия, созданные файлы и отсутствие запрещённых побочных эффектов.
Что делать после обновления модели или SDK?
Повторить сохранённый регрессионный набор. Название модели, версия SDK, промпт и ожидаемые результаты должны быть зафиксированы рядом с каждым запуском.
Как безопасно повторить запрос после тайм-аута?
Сначала проверьте состояние предыдущей операции по идентификатору. Для действий с записью используйте ключ идемпотентности, иначе повтор может создать дубль.
Читайте также
Как настроить Computer Use в Gemini API и контролировать действия браузера
Гайд по Gemini Computer Use: Interactions API, browser environment, previous_interaction_id, лимит шагов, подтверждения и проверка инъекций.
Как сделать первый запрос к Gemini Interactions API: рабочий пример на JavaScript
Первый запрос к рекомендованному Gemini Interactions API: установка SDK, ключ, interaction.output_text, хранение данных и проверка ошибок.
Как анализировать аудио в Gemini API: транскрипция, спикеры и таймкоды
Гайд по Audio Understanding в Gemini API: Files API, audio input, транскрипция, diarization, структурированный результат и ручная проверка.
Комментарии
Пока тихо. Скажите первое слово