Как найти нужный момент в гигабайтах видео без отсмотра всех записей
Представьте ситуацию: у вас есть записи с камер наблюдения, видеорегистратора Tesla или просто архив домашних видео за месяц. Вам нужно найти конкретный фрагмент — например, когда мимо проезжал красный грузовик или кто-то пробегал мимо забора. Обычно это означает часы унылой перемотки. Но что, если можно было бы просто написать текстом «красный грузовик проезжает на красный свет» и сразу получить готовый обрезанный ролик?
Именно это делает проект sentrysearch. Это CLI-инструмент для семантического поиска по видео, который понимает смысл происходящего в кадре без всяких текстовых описаний или ручной разметки.
Как это работает внутри
Разработчик проекта пошел по пути использования мультимодальных эмбеддингов. Если раньше для поиска по видео нужно было сначала прогнать его через нейронку для распознавания объектов, потом через OCR для текста и собрать всё это в базу, то здесь используется прямой подход.
SentrySearch нарезает видео на небольшие перекрывающиеся чанки (по умолчанию по 30 секунд). Затем каждый такой кусок превращается в вектор (эмбеддинг) с помощью модели Gemini от Google или локальной Qwen3-VL. Эти векторы сохраняются в локальную базу данных ChromaDB.
Когда вы вводите поисковый запрос, он тоже превращается в вектор в том же пространстве. Система ищет наиболее похожие векторы видео и, если находит совпадение выше определенного порога, автоматически вырезает нужный фрагмент с помощью ffmpeg.
Интересно, что здесь нет промежуточного звена в виде текста. Текстовый запрос «собака прыгает за мячом» напрямую сравнивается с визуальными признаками видеоряда.
Что умеет инструмент
Проект подкупает своей простотой и продуманностью мелочей, которые обычно забывают в подобных утилитах.
Локальный запуск без облаков
Если вы не хотите отправлять свои видео в Google через API Gemini, можно использовать локальный бэкенд. Проект поддерживает модели семейства Qwen3-VL. Автор предусмотрел разные сценарии: от мощных машин с NVIDIA GPU до MacBook на Apple Silicon. Например, на Mac с 24 ГБ оперативной памяти можно запустить версию 8B, а для более скромных конфигов подойдет 2B.
Умная экономия ресурсов
Индексация видео — процесс тяжелый. Чтобы не тратить время и деньги (в случае с API), SentrySearch применяет несколько хитростей:
- Предварительное сжатие: видео уменьшается до 480p при 5 кадрах в секунду перед отправкой в модель. Для понимания сути происходящего этого достаточно, а нагрузка падает в разы.
- Пропуск статики: если в кадре ничего не происходит (например, машина стоит на пустой парковке), скрипт сравнивает размеры хешей кадров и просто пропускает такие чанки.
Фишки для владельцев Tesla
Автор явно вдохновлялся режимом Sentry Mode в автомобилях Tesla. В инструменте есть отдельный режим --overlay, который вытягивает метаданные из файлов видеорегистратора Tesla (скорость, координаты GPS) и накладывает их прямо на видео в виде симпатичного HUD-интерфейса. Он даже умеет делать обратный геокодинг через OpenStreetMap, чтобы написать название улицы, где произошел инцидент.

Как начать пользоваться
Для управления зависимостями используется uv, что сейчас становится стандартом в Python-сообществе. Установка выглядит максимально просто:
git clone https://github.com/ssrajadh/sentrysearch.git
cd sentrysearch
uv tool install .
После этого нужно инициализировать конфиг и добавить ключ API (если планируете использовать Gemini):
sentrysearch init
Индексация папки с видео:
sentrysearch index /path/to/your/video
И, собственно, сам поиск:
sentrysearch search "человек в синей куртке подходит к двери"
Стоит ли оно того
Главный вопрос при использовании облачного API — цена. Автор подсчитал, что индексация одного часа видео через Gemini обойдется примерно в $2.84. Это не копейки, если у вас терабайты архивов, но вполне приемлемо для быстрого разбора конкретного инцидента.
Если же использовать локальную модель, платить придется только временем работы видеокарты. На NVIDIA 4090 обработка одного 30-секундного чанка занимает всего пару секунд.
Из минусов я бы отметил, что качество поиска сильно зависит от того, как попали границы чанков на ключевое событие. Если действие началось в конце одного куска и закончилось в начале другого, модель может «растеряться». Но наличие перекрытия (overlap) частично решает эту проблему.
SentrySearch — отличный пример того, как современные LLM и мультимодальные модели превращаются из игрушек в чат-ботах в реально полезные утилиты для повседневных задач. Если вам когда-нибудь приходилось вручную искать «тот самый момент» в записях с камер, этот инструмент точно стоит того, чтобы потратить 15 минут на его настройку.
