El estudio de Video en Casa: StreamDeck en Linux Ubuntu 24.04

En esta entrada actualizamos un post que teníamos anteriormente para la instalación y el uso de la StreamDeck en máquinas Linux, pero esta vez actualizado para la Ubuntu 24.04. Aunque sea sólo para que la gente sepa que se puede usar en Linux para ejecutar comandos de manera sencilla usando estos interfaces de El Gato.

Streamdeck UI Usage Example

¿Cómo lo instalo?

El repositorio principal de la aplicación es: https://github.com/timothycrosley/streamdeck-ui/

Para realizar la instalación debemos realizar los siguientes pasos

sudo apt install -y libhidapi-libusb0 python3-pip

Después deberás añadir esta línea al .bashrc o el fichero que uses para tu shell

PATH=$PATH:$HOME/.local/bin

Asegurate que lo tienes cargado ejecutando

source .bashrc

Instalando Conda para manejar los entornos de Python

Como debemos ejecutar el streamdeck y es una aplicación Python es una buena práctica instalar un gestor de entornos python y crear un entorno específico para el streamdeck-ui

Lo primero será meter la clave del GPG del repositorio deb de conda

# Install our public GPG key to trusted store
curl https://repo.anaconda.com/pkgs/misc/gpgkeys/anaconda.asc | gpg --dearmor > conda.gpg
sudo install -o root -g root -m 644 conda.gpg /usr/share/keyrings/conda-archive-keyring.gpg

# Check whether fingerprint is correct (will output an error message otherwise)
gpg --keyring /usr/share/keyrings/conda-archive-keyring.gpg \
--no-default-keyring --fingerprint 34161F5BF5EB1D4BFBBB8F0A8AEB4F8B29D82806

# Add our Debian repo
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/conda-archive-keyring.gpg] \
https://repo.anaconda.com/pkgs/misc/debrepo/conda stable main" \
 > sudo tee -a /etc/apt/sources.list.d/conda.list

El siguiente paso es instalar el paquete de conda

sudo apt update
sudo apt install -y conda

El siguiente paso es añadir al fichero .bashrc la siguiente línea

source /opt/conda/etc/profile.d/conda.sh

Ejecuta el mismo comando para poder ejecutar los comandos de conda desde esta misma sesión de la terminal

Ahora si ejecutas el comando conda -V deberías ver la versión del comando

$ conda -V
conda 24.3.0

Creando un entorno Python para StreamDeck UI

Con conda ya instalado podemos crear un entorno de Python específico para Stream Deck UI con el comando:

conda create -n streamdeck python=3.9

Con este comando habremos creado un nuevo entorno conda para Python 3.9 llamado streamdeck, esposible que nos pida confirmación para la instalación pulsaremos y y enter

Si queremos activar el entorno deberemos ejecutar

conda activate streamdeck

Si en algún momento queremos borrar el entorno ejecutaremos:

conda remove --name streamdeck --all

Instalación de dependencias python en el entorno conda

aqui va

# dentro del entorno streamdeck
conda install obsws_python dotenv

Configuración udev para la StreamDeck

si queremos que nos detecte la streamdeck cuando arranquemos el StreamDeck UI nuestra distribución Linux debemos modificar la carga de dispositivos USB para ello debemos crear un fichero de reglas para udev con el comando

sudo sh -c 'echo "SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"0fd9\", TAG+=\"uaccess\"" > /etc/udev/rules.d/70-streamdeck.rules'

Si queremos que se aplique en nuestra sesión de shell ejecutaremos esta vez

sudo udevadm trigger

Instalación de StreamDeck UI

Con el entorno de python ya configurado y teniendo la carga de dispositivos USB ya podemos instalar el streamdeck ui ejecutando

pip3 install streamdeck-ui --user

Esto debería instalar el ejecutable del streamdeck-ui que podemos arrancar ejecutando

# recuerda cargar el entorno con conda activate streamdeck
streamdeck

Con esto debería cargar el entorno gráfico de streamdeck ui

El selector debería detectar el dispositivo que tenemos enganchado por usb y ya deberíamos poder configurar los botones.

Si queremos hacerlo de manera rápida, podemos cargalos desde fichero json.

Tengo un ejemplo de fichero json ya preconfigurado por si queréis echarle un vistazo en la url: https://github.com/pepesan/twitch-chat-service/blob/main/streamdeck_ui_export.json

Como puedes ver ya estaría configurado de base con varios botones, en mi caso la primera pantalla está rellenada entera con botones.

Si no ves los iconos de los botones en normal porque estoy usando unos botones por defecto gratuitos de nerdordie: https://nerdordie.com/product/streamos-free-key-icons/

Cada uno de los botones tiene asignado un comando a ejecutar cuando se pulsa para ello veamos un ejemplo del json que tenemos para un botón concreto

"0": {
                        "text": "Comienzo",
                        "command": "change_scene.sh scene \"Empezamos en breve\"",
                        "text_vertical_align": "middle-bottom",
                        "icon": "/home/pepesan/PycharmProjects/flask-twitch-socketio-chat/Baseline - Stream Deck Icons/Main/Scene 2 - On.png"
}

Como vemos en cada botón tenemos un texto y un icono, que se verán en el botón físico y virtual de la streamdeck, el text_vertical_align que dirá que debe estar centrado verticalmente el texto y comando

El comando es un fichero .sh del mismo repositorio: https://github.com/pepesan/twitch-chat-service/blob/main/change_scene.sh

Que es super sencillo:

#!/bin/bash
if [ "$#" -ne 1 ]; then
    echo "Illegal number of parameters"
fi

#conda info --envs >>  /home/pepesan/salida-streamdeck.txt
eval "$(conda shell.bash hook)"
conda activate streamdeck
echo "$1" >> /home/pepesan/salida-streamdeck.txt
echo "$2" >> /home/pepesan/salida-streamdeck.txt
echo "$3" >> /home/pepesan/salida-streamdeck.txt
python3 /home/pepesan/PycharmProjects/flask-twitch-socketio-chat/obs-websocket-client.py "$1" "$2" "$3"

Como vemos lo único que hace es activar el entorno de conda llamado streamdeck que es el que hemos configurado anteriormente y ejecutar un script de python que lanza los comandos llamado obs-websocket-client.py

Veamos las dependencias de este fichero:

import sys
import obsws_python as obs
import os
from dotenv import load_dotenv

Como vemos hay un par de módulos de sistema, como son sys y os pero necesita un par de dependencias nuevas que son obsws-python y python-dotenv que deberemos instalar en el entorno streamdeck de conda

pip3 install obsws-python python-dotenv

Configuración del entorno websocket en OBS

Dentro del OBS deberíamos de configurar el entorno de acceso Websocket desde el menú Herramientas-> Ajustes del Servidor Websocket

Como vemos debemos habilitar el checkbox Habilitar servidor Websocket para que arranque el servidor

En el apartado de Ajustes del servidor debemos configurar el puerto: 4455

Debemos habilitar la autenticación

Y en el campo Contraseña del servidor meter una contraseña

Finalmente pulsamos en aplicar y OK

Estos datos deberemos de meterlos en un fichero de configuración del repositorio que lance el fichero python, es decir, en la misma carpeta donde esté el fichero python crea un fichero llamado .env con el siguiente contenido

OBS_HOST=localhost
OBS_PORT=4455
OBS_PASSWORD=mipassword

No olvides comprobar que el puerto y la contraseña son los mismos que los que has puesto en OBS

Prueba del comando de shell

Si todo ha ido bien deberíamos de ser capaces de ejecutar el comando change_scene.sh, por ejemplo para cambiar de escena:

change_scene.sh scene "Empezamos en breve"

Por supuesto cambia el nombre de la escena por el nombre de la escena que tengas en OBS

Si todo ha ido bien debería de ejecutar el comando cambiar de escena

Cambiar el fichero json

Si cambiamos el fichero JSON para que tenga por defecto por ejemplo un cambio de escena en el comando

"0": {
                        "text": "Comienzo",
                        "command": "change_scene.sh scene \"Empezamos en breve\"",
                        "text_vertical_align": "middle-bottom",
                        "icon": "Scene 2 - On.png"
}

Lo único que nos faltaría sería cargar el json en nuestra streamdeck mediante el menú del stream deck ui File-> Import

Seleccionaremos el fichero json que hemos creado y pulsaremos en Open

Y por último lo único que nos faltaría sería probar si al pulsar el botón realiza el cambio de escena

Conclusiones

Si os dais cuenta es muy laborioso de hacer pero nos permite de una manera muy sencilla después usando la streamdeck realizar una producción audio visual con OBS pulsando botones.

Comments

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies