Меню Закрыть

Добавление виртуальной камеры с заменой фона

Для видеозвонков бывает не желательно показывать задний фон. Некоторые приложения позволяют заменять задний фон картинкой. Но не все приложения поддерживают такую возможность, например, Skype в Ubuntu позволяет только размывать задний фон, но заменять картинкой. Рассмотрим подключение fake-камеры, в которой можно будет задавать фон будет работать в любом приложении, которая, даже в браузере

Fake-камера представляет собой отдельное видео устройство на которое можно переключиться для трансляции видео, поэтому остается возможность использования основной камеры.

В качестве приложения для добавления фона будет использоваться утилита Linux-Fake-Background-Webcam

Все команды можно копировать и вставлять, соблюдая очередность. Обязательно не меняя директории

Для начала установим необходимые приложения

sudo apt update && \
sudo apt install -y python3-pip python3-full v4l-utils v4l2loopback-dkms ffmpeg

Для работы утилиты необходима версия Python >= 3.8 and <=3.1. Если в системе стоит другая версия, например, Ubuntu 24.04 поставляется с версий 3.12, необходимо дополнительно установить поддерживаемую версию Python

sudo apt install -y software-properties-common && \
sudo add-apt-repository ppa:deadsnakes/ppa && \
sudo apt install -y python3.11-full

Клонирование репозитория и установка приложения

mkdir -p "$HOME/bin/fake-webcam" && \
git clone https://github.com/fangfufu/Linux-Fake-Background-Webcam "$HOME/bin/fake-webcam" && \
cd "$HOME/bin/fake-webcam"

Создаем виртуальное окружение

python3.11 -m venv resources

и активируем его

source resources/bin/activate

Установим необходимые приложения

python3 -m pip install --upgrade pip && \
python3.11 -m pip install --upgrade .

Добавим новую виртуальную камеру

sudo ./v4l2loopback-install.sh

Можно проверить список веб-камер, выполнив коману

v4l2-ctl --list-devices

который выведет список подобный этому

fake-cam (platform:v4l2loopback-000):
	/dev/video2

Live Streamer CAM 313: Live Str (usb-0000:00:14.0-4):
	/dev/video0
	/dev/video1
	/dev/media0

Где /dev/video0 – реальная веб-камера, с которой будет браться изображение. /dev/video2 – виртуальная веб-камера с заменой фона

Далее создаем файл конфигурации и добавляем картинку с задним планом, например, таким

mkdir -p "$HOME/.config/fake-webcam" && \
wget -nc -O "$HOME/.config/fake-webcam/fake-webcam-background.jpg" "https://notes.maroz.by/wp-content/uploads/2024/06/fake-webcam-background.jpg" && \
\
cat > "$HOME/.config/fake-webcam/config.ini" <<EOL
# Set real webcam width (default: 1280)
width = 640

# Set real webcam height (default: 720)
height = 480

# Set real webcam FPS (default: 30)
#fps = 30

# Set real webcam codec (default: MJPG)
#codec = MJPG

# Set real webcam path (default: /dev/video0)
#webcam-path = /dev/video0

# V4l2loopback device path (default: /dev/video2)
#v4l2loopback-path = /dev/video2

# Disable background image and blur the real background
#no-background = no

# Background image path, animated background is supported. (default: background.jpg)
background-image = $HOME/.config/fake-webcam/fake-webcam-background.jpg

#Tile the background image (default: False)
#tile-background = no

# The gaussian bluring kernel size in pixels (default: 21)
#background-blur = 21

# The fraction of the kernel size to use for the sigma value (ie. sigma = k / frac) (default: 3)
# background-blur-sigma-frac = 3

# Crop background if needed to maintain aspect ratio (default: False)
#background-keep-aspect = no

# Disable foreground image (default: False)                        
no-foreground = yes

# Foreground image path (default: foreground.jpg)
#foreground-image = foreground.jpg

# Foreground mask image path (default: foreground-mask.png)
#foreground-mask-image = foreground-mask.png

# Add a hologram effect (default: False)
#hologram = no

# Continue processing when there is no application using the virtual webcam (default: False)
#no-ondemand = no

# The running average percentage for background mask updates (default: 50)
#background-mask-update-speed = 50

# Force the mask to follow a sigmoid distribution (default: False)
#use-sigmoid = no

# The minimum percentage threshold for accepting a pixel as foreground (default: 75)
#threshold = 75

# Disable postprocessing (masking dilation and blurring) (default: True)
#no-postprocess = yes

# Select the model for MediaPipe. For more information, please refer to https://github.com/fangfufu/Linux-Fake-Background-Webcam/issues/135#issuecomment-883361294 (default: 1)
#select-model = 1

# Apply colour map to the person using cmapy. For examples, please refer to https://gitlab.com/cvejarano-oss/cmapy/blob/master/docs/colorize_all_examples.md (default: None)
#cmap-person = none

# Apply colour map to background using cmapy (default: None)
#cmap-bg = none
EOL

Отредактируйте при необходимости параметры в конфиге $HOME/.config/fake-webcam/config.ini. Проверьте правильность исходной (webcam-path) и виртуальной (v4l2loopback-path) камеры

Проверить работоспособность можно выполнив команду

"$HOME/bin/fake-webcam/resources/bin/lfbw" -c "$HOME/.config/fake-webcam/config.ini"

Создание службы

Для того чтобы виртуальная камера запускалась со стартом системы, создадим службу

mkdir -p "$HOME/.config/systemd/user" && \
cat > "$HOME/.config/systemd/user/fakecam.service" <<EOL
# systemd user unit file for Linux-Fake-Background-Webcam
# place this file into a location suitable for user-defined systemd units
# (e.g $HOME/.config/systemd/user)
#
# To enable and run the fakecam service, run
# systemctl --user enable fakecam.service
# systemctl --user start fakecam.service

[Unit]
Description=Fake camera
After=network.target

[Service]
Type=simple
WorkingDirectory=%h/bin/fake-webcam
ExecStart=%h/bin/fake-webcam/resources/bin/lfbw -c %h/.config/fake-webcam/config.ini
# LFBW exits when pressing Ctrl + \ which corresponds to SIGQUIT
# so we need to specify this kill signal instead of SIGINT
KillSignal=SIGQUIT

[Install]
WantedBy=default.target
EOL

Запустим созданный сервис и разрешим автозапуск

systemctl --user enable fakecam.service && \
systemctl --user start fakecam.service

Проверить статус сервиса можно командой

systemctl --user status fakecam.service

Скрипт автоматической установки

Все действия выше можно выполнить с помощью скрипта fake-webcam.sh из репозитория https://github.com/ivmaroz/installers

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии