Андрей Хожемпо

Архив видеонаблюдения (@dmitrovo_webcam_bot)

Телеграм-бот для выгрузки видеофрагментов сохраненных с камеры видеонаблюдения стоп-кадров. Отображение доступных периодов по календарю.

catdoor

Реализация

В чате пользователя отображатеся календарь, на котором можно выбрать доступные даты и временные периоды видеозаписей. По отсутствующим периодам не отображаются даты/периоды. Навигация по календарю осуществляется в рамках одного изменяемого сообщения, что исключает "засорение" истории чата. Публикуемые в адрес пользователя видеозаписи также имеют ограниченный срок "жизни".

Стоп-кадры - фотография с веб-камеры, сохраняемая сторонним приложением каждые 30 секунд в aws совместимом хранилище объектов (minio). Индекс изображений хранится в mysql базе.

При получении задания на подготовку видео создается горутина для запуска ffmpeg, которой в потоке передаются изображения и принимается видео, направляемое в телеграм сервер. Количество одновременно функционирующих с ffmpeg горутин регулируется установленной квотой (через размер буфера канала с пустой структурой).

    Особенности реализации:
  • Логирование средствами glg (github.com/kpango/glg).
  • Управляемое закрытие критичных горутин по нажатию Ctrl-C (bool канал и sync.WaitGroup).
  • Хранение текстов диалогов бота централизовано.

Стэк

GO
Minio (AWS)
MySQL