Tener un encuadre dinámico que siga tus movimientos o haga zoom al rostro automáticamente al hablar aporta dinamismo a cualquier transmisión o grabación. En Windows existen herramientas privativas de control PTZ virtual, pero en distribuciones basadas en Arch Linux (como CachyOS, Manjaro o EndeavourOS) el estándar abierto es el plugin obs-face-tracker.

Al compilar este complemento en sistemas actualizados con GCC moderno, OBS 30+ y Qt6, surgen dos problemas críticos: advertencias tratadas como errores en la librería interna dlib, y un fallo de segmentación (SIGSEGV) al iniciar OBS debido a llamadas incompatibles con la interfaz gráfica de docks.

En esta guía resolveremos ambos errores compilando, parcheando e instalando el plugin desde el código fuente, optimizado y probado en entornos Wayland con procesadores AMD Ryzen.

1. Requisitos previos y dependencias

Instala las herramientas de compilación, las cabeceras de desarrollo de OBS Studio y la librería de visión artificial OpenCV:

Bash

sudo pacman -S --needed base-devel cmake git opencv obs-studio

Verifica que OpenCV esté accesible en tu terminal:

Bash

opencv_version

2. Clonar el repositorio con submódulos

El proyecto requiere submódulos internos (como dlib y librerías VISCA). Clónalo con el parámetro --recursive:

Bash

cd ~
git clone --recursive https://github.com/norihiro/obs-face-tracker.git
cd obs-face-tracker

3. Parchear el fallo de segmentación (SIGSEGV en Qt6)

El plugin incluye código heredado para crear un Dock (panel flotante para cámaras PTZ por hardware). En versiones modernas de OBS que corren sobre Qt6, la llamada ft_docks_init() provoca un cierre inmediato (SIGSEGV) de OBS al iniciar.

Como solo necesitamos el filtro de seguimiento facial en la cámara, desactivamos la inicialización del dock haciendo que el módulo reporte una carga exitosa directa:

Bash

# Modificar src/module-main.c para omitir la carga del dock problemático
sed -i 's/ft_docks_init();/return true;/g' src/module-main.c
sed -i 's/ft_docks_destroy();/\/\/ ft_docks_destroy();/g' src/module-main.c

Para comprobar que el cambio se aplicó correctamente, ejecuta:

Bash

git diff src/module-main.c

Deberás ver que return ft_docks_init(); fue sustituido por return true;.

4. Configurar CMake y compilar sin bloqueos de advertencias

Por defecto, el compilador en CachyOS trata cualquier variable no usada dentro de dlib como un error fatal (-Werror). Pasamos el parámetro -w tanto para C como para C++ en CMake para silenciar advertencias en código de terceros y compilar con todos los hilos del CPU:

Bash

# Configuración del proyecto
cmake -B build -S . \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_INSTALL_PREFIX=/usr \
  -DCMAKE_C_FLAGS="-w" \
  -DCMAKE_CXX_FLAGS="-w"

# Compilación paralela
cmake --build build -j$(nproc)

La terminal debe finalizar con:

Plaintext

[100%] Built target obs-face-tracker

5. Instalación manual en las rutas estándar de OBS

El instalador por defecto de este repositorio coloca archivos en rutas obsoletas (/usr/obs-plugins/). Para que OBS Studio reconozca el plugin en distribuciones basadas en Arch, copia los binarios y datos a las rutas del sistema:

Bash

# Copiar la librería compartida
sudo cp build/obs-face-tracker.so /usr/lib/obs-plugins/

# Crear la carpeta de datos y copiar las traducciones
sudo mkdir -p /usr/share/obs/obs-plugins/obs-face-tracker/locale
sudo cp -r data/locale/* /usr/share/obs/obs-plugins/obs-face-tracker/locale/

Comprueba que el archivo exista:

Bash

ls -lh /usr/lib/obs-plugins/obs-face-tracker.so

6. Configuración del filtro en OBS Studio

Inicia OBS Studio (puedes lanzarlo desde la terminal con el comando obs para verificar que no emita advertencias):

  1. Añadir el filtro:
    • En tu escena, localiza la fuente de tu cámara web (Dispositivo de captura de video (V4L2)).
    • Haz clic derecho sobre ella y selecciona Filtros.
    • En la sección inferior izquierda (Filtros de efecto), presiona el botón + y elige Face Tracker.
  2. Calibrar los parámetros:
    • Zoom / Scale: Ajusta el nivel de acercamiento deseado (un valor moderado permite reencuadrar cabeza y hombros sin perder nitidez).
    • Smoothing (Suavizado): Configúralo entre 400 ms y 600 ms. Un valor bajo causará micro-temblores con cada parpadeo; un valor muy alto creará retraso al moverte.
    • Deadzone (Zona muerta): Establécelo entre 10% y 15% para que pequeños cambios de postura no desplacen el lienzo innecesariamente.

7. Configurar un atajo de teclado para activar el zoom

Para usar el acercamiento como un efecto dinámico durante transmisiones o videos explicativos:

  1. Ve a Ajustes > Atajos.
  2. Escribe el nombre de tu cámara en el buscador.
  3. Localiza los campos:
    • Mostrar filtro ‘Face Tracker’
    • Ocultar filtro ‘Face Tracker’
  4. Asigna la misma tecla rápida (por ejemplo, F9 o una combinación de tu teclado/stream deck) para alternar el zoom a demanda.

Ficha técnica y metadatos para WordPress

  • Título SEO: Cómo compilar obs-face-tracker en Arch Linux / CachyOS (Solución SIGSEGV y Qt6)
  • Slug sugerido: instalar-obs-face-tracker-arch-linux-cachyos
  • Categorías: Linux, Streaming & OBS, Software Libre
  • Etiquetas: OBS Studio, CachyOS, Arch Linux, Face Tracking, OpenCV, AMD Ryzen
  • Extracto: Guía paso a paso para compilar y hacer funcionar el plugin obs-face-tracker en Linux moderno, resolviendo los errores de compilación con GCC y el cierre por SIGSEGV en entornos Qt6 y Wayland.