Программист создал инструмент для видеосозвонов – скрипт записывает пару секунд и крутит их по кругу, пока вы отошли

Проблема отойти от камеры на пару секунд во время важного созвона получила инженерное решение.

Скрипт под названием video-pedal записывает несколько секунд с веб-камеры и отдаёт эту запись в видеопоток вместо живой картинки. Автор описывает идею как "луп-педаль для камеры" по аналогии с гитарной.

Управление построено вокруг двух глобальных горячих клавиш, работающих из любого приложения:

  • удержание правого Option (на Mac) запускает запись, при этом в эфир продолжает идти живая картинка

  • отпускание клавиши переключает поток на зацикленную запись

  • повторное удержание перезаписывает луп заново

  • нажатие правого Command возвращает живое изображение

Нажатия короче секунды игнорируются как слишком короткие для лупа. Правый Command засчитывается только при одиночном нажатии, так что сочетание вроде правый Cmd плюс Tab луп не прервёт.

Отдельная работа проделана над стыками. Последние кадры записи растворяются в первых, а воспроизведение начинается чуть раньше самого шва, из-за чего и переход с живого видео на луп, и зацикливание выглядят как полусекундные наплывы, а не как рывки.

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

Технически это около 650 строк на Python поверх OpenCV, pyvirtualcam и pynput. Кадры во время записи кодируются в JPEG и складываются в кольцевой буфер, ограниченный по длительности, так что долгое удержание просто сдвигает окно последних секунд.

По умолчанию хранится до 30 секунд, а расход оперативной памяти составляет примерно 2 МБ на секунду при разрешении 720p. Качество JPEG регулируется отдельным параметром и меняет расход памяти на артефакты.

Наружу всё выдаётся через виртуальную камеру, которую система показывает обычным устройством захвата. Благодаря этому подмену видят Zoom, Google Meet, Teams, Discord, QuickTime и любое другое приложение, читающее веб-камеру.

Разовая настройка сводится к появлению виртуальной камеры в системе. На macOS и Windows это OBS Studio версии 30 или новее, причём в Windows достаточно установщика и открывать сам OBS не нужно, а на Linux используется модуль v4l2loopback.

Есть и ограничения по платформам. Глобальные горячие клавиши на macOS требуют разрешения на мониторинг ввода, на Linux работают только в сессии X11, а на Windows не сработают, если активное приложение запущено от имени администратора. Сам автор проверял работу только на Mac.

Любопытная деталь спрятана в поиске камеры. После установки расширения виртуальная камера сама определяется системой как источник захвата, и чтение с неё замкнуло бы поток сам на себя, так что скрипт считывает по несколько кадров с каждого индекса и выбирает первый, где картинка действительно меняется.

Сообщество тут же занялось доработками. Основная претензия касается плавного возврата к живому видео, вместо которого предлагают имитировать подвисание сети или сбой соединения, так как резкий скачок зрители спишут на проблемы со связью.

Один из пользователей добавил себе режим воспроизведения записи задом наперёд после каждого прохода, что убирает заметный шов без всякого наплыва. На вопрос про нестатичный фон автор ответил, что можно включить виртуальный фон, а заранее ничего записывать не нужно – луп снимается прямо во время созвона и отражает текущую одежду.

Очевидные риски никуда не делись. Скрипт подменяет только картинку, так что включённый микрофон или адресованный вопрос выдадут отсутствие мгновенно.

Скачать и попробовать можно тут.

Больше статей на Shazoo
Тэги:

Об авторе

Эксперт по Fallout
Главный редактор
Более 16 лет в индустрии освещения видеоигр, кино, сериалов, науки и техники. Особенно разбираюсь в серии Fallout, ценитель The Elder Scrolls. Поклонник Arcanum и Fallout Tactics. Больше всего играю в Civilization, Old World и градостроители. Изучаю ИИ и загадки космоса.