Для видеозвонков бывает не желательно показывать задний фон. Некоторые приложения позволяют заменять задний фон картинкой. Но не все приложения поддерживают такую возможность, например, 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